The experiment using this program is introduced on "Interface" No.2, CQ publishing Co.,Ltd, 2015. 本プログラムを使った実験は,CQ出版社のインターフェース 2015年2月号で紹介しています.

Dependencies:   DSProcessingIO mbed

Committer:
CQpub0Mikami
Date:
Tue Jul 29 06:55:48 2014 +0000
Revision:
1:5ece9454ba73
Parent:
0:398107c96b1b
ver.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CQpub0Mikami 0:398107c96b1b 1 //--------------------------------------------------------------
CQpub0Mikami 0:398107c96b1b 2 // IIR filter: Cascade strucrure
CQpub0Mikami 0:398107c96b1b 3 //
CQpub0Mikami 0:398107c96b1b 4 // Copyright (c) 2014 MIKAMI, Naoki, 2014/06/22
CQpub0Mikami 0:398107c96b1b 5 //--------------------------------------------------------------
CQpub0Mikami 0:398107c96b1b 6
CQpub0Mikami 0:398107c96b1b 7 #include "mbed.h"
CQpub0Mikami 0:398107c96b1b 8 #include "AdcInternal.hpp"
CQpub0Mikami 0:398107c96b1b 9 #include "MCP4922Single.hpp"
CQpub0Mikami 0:398107c96b1b 10 #include "IIR_Coefficients.hpp"
CQpub0Mikami 0:398107c96b1b 11 #include "IIR_Cascade.hpp"
CQpub0Mikami 0:398107c96b1b 12
CQpub0Mikami 0:398107c96b1b 13 using namespace Mikami;
CQpub0Mikami 0:398107c96b1b 14
CQpub0Mikami 0:398107c96b1b 15 // sampling frequency
CQpub0Mikami 0:398107c96b1b 16 const float FS_ = 10.0e3f;
CQpub0Mikami 0:398107c96b1b 17
CQpub0Mikami 0:398107c96b1b 18 Adc adc_(A0);
CQpub0Mikami 0:398107c96b1b 19 Dac dacA_(Dac::DAC_A);
CQpub0Mikami 0:398107c96b1b 20 Ticker timer_; // for timer interrupt
CQpub0Mikami 0:398107c96b1b 21
CQpub0Mikami 0:398107c96b1b 22 IirCascade<ORDER_/2> iirLpf(g0_, ck_);
CQpub0Mikami 0:398107c96b1b 23
CQpub0Mikami 0:398107c96b1b 24 // Called every 0.1 ms
CQpub0Mikami 0:398107c96b1b 25 void TimerIsr()
CQpub0Mikami 0:398107c96b1b 26 {
CQpub0Mikami 0:398107c96b1b 27 float xn = adc_.Read(); // input
CQpub0Mikami 0:398107c96b1b 28
CQpub0Mikami 0:398107c96b1b 29 // Execute IIR filter
CQpub0Mikami 0:398107c96b1b 30 float yn = iirLpf.Execute(xn);
CQpub0Mikami 0:398107c96b1b 31
CQpub0Mikami 0:398107c96b1b 32 dacA_.Write(yn); // output
CQpub0Mikami 0:398107c96b1b 33 }
CQpub0Mikami 0:398107c96b1b 34
CQpub0Mikami 0:398107c96b1b 35 int main()
CQpub0Mikami 0:398107c96b1b 36 {
CQpub0Mikami 0:398107c96b1b 37 timer_.attach_us(&TimerIsr, 1.0e6f/FS_);
CQpub0Mikami 0:398107c96b1b 38
CQpub0Mikami 0:398107c96b1b 39 while (true) {} // infinite loop
CQpub0Mikami 0:398107c96b1b 40 }