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.

SignalProcessing/VariableLpHp.hpp

Committer:
MikamiUitOpen
Date:
2017-01-30
Revision:
4:2f06a5893e4a
Parent:
0:fa74b1130cc3
Child:
5:503bd366fd73

File content as of revision 4:2f06a5893e4a:

//--------------------------------------------------------------
// 遮断周波数可変フィルタ,LPF と HPF
//
// 2017/01/30, 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] = *(Biquad::Coefs *)&coefs_[n];

        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