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
main.cpp@0:473989635348, 2014-10-27 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Mon Oct 27 23:51:05 2014 +0000
- Revision:
- 0:473989635348
- Child:
- 1:5c7f4c52d797
1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |