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

Dependencies:   DSProcessingIO mbed

FIR_LPF_Direct.cpp

Committer:
CQpub0Mikami
Date:
2014-07-29
Revision:
1:b0a0a1ab01be
Parent:
0:b811ec8a7e8a

File content as of revision 1:b0a0a1ab01be:

//--------------------------------------------------------------
// FIR filter: Even order, Direct form
//
// Copyright (c) 2014 MIKAMI, Naoki,  2014/07/15 
//--------------------------------------------------------------

#include "mbed.h"
#include "AdcInternal.hpp"
#include "MCP4922Single.hpp"
#include "coefficients_200.hpp"
#include "FIR_Direct.hpp"

using namespace Mikami;

// sampling frequency
const float FS_ = 10.0e3f;

// for AD converter
Adc adc_(A0);
// for DA converter
Dac dacA_(Dac::DAC_A);

Ticker timer_;           // for timer interrupt
DigitalOut pinD8_(D8);   // for measurement of execution time

FirDirect<ORDER_> lpf(hm_);

// Called every 0.1 ms
void TimerIsr()
{
    float xn = adc_.Read(); // input

    // Execute FIR filter
    float yn = lpf.Execute(xn);

    dacA_.Write(yn);        // output
}

int main()
{
    timer_.attach_us(&TimerIsr, 1.0e6f/FS_);

    while (true) {}    // infinite loop
}