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

Dependencies:   DSProcessingIO mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers FIR_LPF_Direct.cpp Source File

FIR_LPF_Direct.cpp

00001 //--------------------------------------------------------------
00002 // FIR filter: Even order, Direct form
00003 //
00004 // Copyright (c) 2014 MIKAMI, Naoki,  2014/07/15 
00005 //--------------------------------------------------------------
00006 
00007 #include "mbed.h"
00008 #include "AdcInternal.hpp"
00009 #include "MCP4922Single.hpp"
00010 #include "coefficients_200.hpp"
00011 #include "FIR_Direct.hpp"
00012 
00013 using namespace Mikami;
00014 
00015 // sampling frequency
00016 const float FS_ = 10.0e3f;
00017 
00018 // for AD converter
00019 Adc adc_(A0);
00020 // for DA converter
00021 Dac dacA_(Dac::DAC_A);
00022 
00023 Ticker timer_;           // for timer interrupt
00024 DigitalOut pinD8_(D8);   // for measurement of execution time
00025 
00026 FirDirect<ORDER_> lpf(hm_);
00027 
00028 // Called every 0.1 ms
00029 void TimerIsr()
00030 {
00031     float xn = adc_.Read(); // input
00032 
00033     // Execute FIR filter
00034     float yn = lpf.Execute(xn);
00035 
00036     dacA_.Write(yn);        // output
00037 }
00038 
00039 int main()
00040 {
00041     timer_.attach_us(&TimerIsr, 1.0e6f/FS_);
00042 
00043     while (true) {}    // infinite loop
00044 }