Prototype program of AD and DA using classes in UIT_ADDA. This program does not use interrupt of ADC. This program also example of exchanging input channel for ST Nucleo F401RE. UIT_ADDA のクラスを使った AD および DA のためのプログラムで,入力の切り替えを行う場合の雛形.ADC の割り込みは使わないバージョン.ST Nucleo F401 用.

Dependencies:   UIT_ACM1602NI UIT_ADDA mbed

Committer:
MikamiUitOpen
Date:
Mon Oct 27 23:51:05 2014 +0000
Revision:
0:473989635348
Child:
1:5c7f4c52d797
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:473989635348 1 //--------------------------------------------------------------
MikamiUitOpen 0:473989635348 2 // 割り込みを使わずに AD DA を行う場合の雛形, 入力切替
MikamiUitOpen 0:473989635348 3 // Analog line Input : A0 (channel 1)
MikamiUitOpen 0:473989635348 4 // Analog mic. Input : A1 (channel 2)
MikamiUitOpen 0:473989635348 5 // Analog Output: MCP4922 using SPI
MikamiUitOpen 0:473989635348 6 // Switch : D2
MikamiUitOpen 0:473989635348 7 // 2014/10/23, Copyright (c) 2014 MIKAMI, Naoki
MikamiUitOpen 0:473989635348 8 //--------------------------------------------------------------
MikamiUitOpen 0:473989635348 9
MikamiUitOpen 0:473989635348 10 #include "mbed.h"
MikamiUitOpen 0:473989635348 11
MikamiUitOpen 0:473989635348 12 #include "ADC_Interrupt.hpp" // for ADC using interrupt
MikamiUitOpen 0:473989635348 13 #include "DAC_MCP4922.hpp" // for DAC MCP4922
MikamiUitOpen 0:473989635348 14 #include "ScfClockTim3.hpp" // for clock supplied to SCF
MikamiUitOpen 0:473989635348 15 #include "ACM1602NI.hpp" // for LCD display
MikamiUitOpen 0:473989635348 16
MikamiUitOpen 0:473989635348 17 using namespace Mikami;
MikamiUitOpen 0:473989635348 18
MikamiUitOpen 0:473989635348 19 const int FS_ = 10000; // Sampling frequency: 10 kHz
MikamiUitOpen 0:473989635348 20 ADC_Base adc_(A0, FS_, A1); // for AD
MikamiUitOpen 0:473989635348 21 DAC_MCP4922 myDac_; // for DA
MikamiUitOpen 0:473989635348 22
MikamiUitOpen 0:473989635348 23 DigitalIn sw_(D2, PullDown);
MikamiUitOpen 0:473989635348 24
MikamiUitOpen 0:473989635348 25 int main()
MikamiUitOpen 0:473989635348 26 {
MikamiUitOpen 0:473989635348 27 ScfClockTim3(420000); // cutoff frequency: 4.2 kHz
MikamiUitOpen 0:473989635348 28 int swBefore = 0;
MikamiUitOpen 0:473989635348 29
MikamiUitOpen 0:473989635348 30 while (true)
MikamiUitOpen 0:473989635348 31 {
MikamiUitOpen 0:473989635348 32 float xn = adc_.Read(); // Read from A0
MikamiUitOpen 0:473989635348 33 //-----------------------------------------------
MikamiUitOpen 0:473989635348 34 // Put signal processing program here
MikamiUitOpen 0:473989635348 35 //-----------------------------------------------
MikamiUitOpen 0:473989635348 36 myDac_.Write(xn); // Write to DAC
MikamiUitOpen 0:473989635348 37
MikamiUitOpen 0:473989635348 38 int swNow = sw_.read();
MikamiUitOpen 0:473989635348 39 if (swNow != swBefore)
MikamiUitOpen 0:473989635348 40 {
MikamiUitOpen 0:473989635348 41 if (swNow == 0) adc_.Select1stChannel(); // line input
MikamiUitOpen 0:473989635348 42 else adc_.Select2ndChannel(); // mic. input
MikamiUitOpen 0:473989635348 43 swBefore = swNow;
MikamiUitOpen 0:473989635348 44 }
MikamiUitOpen 0:473989635348 45 }
MikamiUitOpen 0:473989635348 46 }