IIR Cascade

Dependencies:   DSP_MultirateLinearphase mbed

Committer:
CQpub0Mikami
Date:
Tue Sep 13 07:48:33 2022 +0000
Revision:
0:fd55988037cc
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CQpub0Mikami 0:fd55988037cc 1 //----------------------------------------------------------------------
CQpub0Mikami 0:fd55988037cc 2 // 縦続形II IIR フィルタ,float 型を使用
CQpub0Mikami 0:fd55988037cc 3 //
CQpub0Mikami 0:fd55988037cc 4 // 2022/01/19, Copyright (c) 2022 MIKAMI, Naoki
CQpub0Mikami 0:fd55988037cc 5 //----------------------------------------------------------------------
CQpub0Mikami 0:fd55988037cc 6
CQpub0Mikami 0:fd55988037cc 7 #include "MultirateLiPh.hpp"
CQpub0Mikami 0:fd55988037cc 8 #include "IirCascade.hpp"
CQpub0Mikami 0:fd55988037cc 9 #include "Coefs_IIR6_Cascade_LP_300.hpp"
CQpub0Mikami 0:fd55988037cc 10 #pragma diag_suppress 870 // マルチバイト文字使用の警告抑制のため
CQpub0Mikami 0:fd55988037cc 11 using namespace Mikami;
CQpub0Mikami 0:fd55988037cc 12
CQpub0Mikami 0:fd55988037cc 13 const float FS_ = 10.0f; // 入力の標本化周波数: 10 kHz
CQpub0Mikami 0:fd55988037cc 14 MultirateLiPh myAdDa_(FS_); // 出力標本化周波数を4倍にするオブジェクト
CQpub0Mikami 0:fd55988037cc 15 IirCascade df_(ORDER_, CK_, G0_);
CQpub0Mikami 0:fd55988037cc 16
CQpub0Mikami 0:fd55988037cc 17 // ADC 変換終了割込みに対する割込みサービス・ルーチン
CQpub0Mikami 0:fd55988037cc 18 void AdcIsr()
CQpub0Mikami 0:fd55988037cc 19 {
CQpub0Mikami 0:fd55988037cc 20 float xn = myAdDa_.Input(); // 入力
CQpub0Mikami 0:fd55988037cc 21 float yn = df_.Execute(xn); // 縦続形 IIR フィルタの処理
CQpub0Mikami 0:fd55988037cc 22 myAdDa_.Output(yn); // 出力
CQpub0Mikami 0:fd55988037cc 23 }
CQpub0Mikami 0:fd55988037cc 24
CQpub0Mikami 0:fd55988037cc 25 int main()
CQpub0Mikami 0:fd55988037cc 26 {
CQpub0Mikami 0:fd55988037cc 27 printf("\r\n縦続形 IIR フィルタを実行します\r\n");
CQpub0Mikami 0:fd55988037cc 28
CQpub0Mikami 0:fd55988037cc 29 myAdDa_.Start(&AdcIsr); // 標本化を開始する
CQpub0Mikami 0:fd55988037cc 30 while (true) {}
CQpub0Mikami 0:fd55988037cc 31 }