CW Decoder (Morse code decoder) 1st release version. Only run on Nucleo-F446RE mbed board.
Dependencies: Array_Matrix F446_AD_DA ST7565_SPI_LCD TextLCD UIT_FFT_Real
Fork of F446_MySoundMachine by
Base on F446_MySoundMachine program created by 不韋 呂-san.
Thanks to 不韋 呂-san making fundamental part such as FFT and ADC high speed interrupt driven program.
I just combined LCD and show CW code.
Diff: SignalProcessing/VariableLpHp.hpp
- Revision:
- 0:fa74b1130cc3
- Child:
- 4:2f06a5893e4a
diff -r 000000000000 -r fa74b1130cc3 SignalProcessing/VariableLpHp.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SignalProcessing/VariableLpHp.hpp Sun Jan 29 09:11:30 2017 +0000 @@ -0,0 +1,50 @@ +//-------------------------------------------------------------- +// 遮断周波数可変フィルタ,LPF と HPF +// +// 2017/01/26, Copyright (c) 2017 MIKAMI, Naoki +//-------------------------------------------------------------- + +#ifndef VARIABLE_LOWPASS_HIGHPASS_FILTER_HPP +#define VARIABLE_LOWPASS_HIGHPASS_FILTER_HPP + +#include "IIR_Cascade.hpp" +#include "SignalProcessing.hpp" +#include "BilinearDesignLH.hpp" +#include "Array.hpp" +using namespace Mikami; + +class VariableLpHp : public SignalProcessing +{ +public: + VariableLpHp(int order, float fs) + : ORDER2_(order/2), coefs_(order/2), coefsIir_(order/2), + designer_(order, fs), filter_(order) {} + + virtual float Execute(float xn1, float xn2) + { return filter_.Execute((xn1 + xn2)*0.5f); } + + void Design(float fc, BilinearDesign::Type passBand) + { + float g0; + designer_.Execute(fc, passBand, coefs_, g0); + for (int n=0; n<ORDER2_; n++) + { + coefsIir_[n].a1 = coefs_[n].a1; + coefsIir_[n].a2 = coefs_[n].a2; + coefsIir_[n].b1 = coefs_[n].b1; + coefsIir_[n].b2 = 1.0f; + } + filter_.SetCoefs(g0, coefsIir_); + filter_.Clear(); + } + +private: + const int ORDER2_; + + Array<BilinearDesign::Coefs> coefs_; + Array<Biquad::Coefs> coefsIir_; + + BilinearDesign designer_; + IirCascade filter_; +}; +#endif // VARIABLE_LOWPASS_HIGHPASS_FILTER_HPP \ No newline at end of file