The experiment using this program is introduced on "Interface" No.3, CQ publishing Co.,Ltd, 2015. 本プログラムを使った実験は,CQ出版社のインターフェース 2015年3月号で紹介しています.
Dependencies: DSProcessingIO mbed
FreqConv.cpp
- Committer:
- CQpub0Mikami
- Date:
- 2014-12-27
- Revision:
- 2:0b15cd2b79e3
- Parent:
- 0:a5a171eda3f8
File content as of revision 2:0b15cd2b79e3:
//-------------------------------------------------------------- // Frequency converter // Copyright (c) 2014 MIKAMI, Naoki, 2014/06/23 //-------------------------------------------------------------- #include "mbed.h" #include "AdcInternal.hpp" #include "MCP4922Single.hpp" #include "HilbertTransform.hpp" #include "coefsHilbert94.hpp" #include "DC_Cut_Coefficients.hpp" #include "Biquad.hpp" #include "TwoPhaseGenerator.hpp" using namespace Mikami; const float FS_ = 10.0e3f; Adc adc_(A0); Dac dac_(Dac::DAC_A); Ticker timer_; // for timer interrupt Hilbert<ORDER_> ht(hm_); Biquad DcCut(c1_); // DC cut filter TwoPhaseGenerator sinCos_(100.0f, FS_); // 100.0 Hz void TimerIsr() { float yI, yQ, cosx, sinx; float xn = adc_.Read(); // input xn = DcCut.Execute(g0_*xn); // DC cut ht.Execute(xn, yI, yQ); // Hilbert transform sinCos_.Generate(cosx, sinx); // cos and sin generator float yn = yI*cosx - yQ*sinx; // conversion dac_.Write(yn); // output } int main() { timer_.attach_us(&TimerIsr, 1.0e6f/FS_); while (true) {} // infinite loop }