Prototype program of AD and DA using classes in UIT_ADDA. This program uses interrupt of ADC. Second channnel input is used to control volume of output for ST Nucleo F401RE. UIT_ADDA のクラスを使った AD および DA のためのプログラムの雛形.ADC の割り込みを使うバージョン.2番目のチャンネルの ADC の入力は,出力信号の大きさをコントロールするために使う.ST Nucleo F401 用.

Dependencies:   UIT_ACM1602NI UIT_ADDA mbed

Revision:
0:494ae18d3b30
Child:
1:43a38eaed0fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Oct 20 07:48:40 2014 +0000
@@ -0,0 +1,56 @@
+//--------------------------------------------------------------
+// 割り込みを使って AD DA を行う場合の雛形2
+//      Analog Input : A0
+//      Analog Output: MCP4922 using SPI
+// 2014/10/20, Copyright (c) 2014 MIKAMI, Naoki
+//--------------------------------------------------------------
+
+#include "mbed.h"
+
+#include "ADC_Interrupt.hpp"    // for ADC using interrupt
+#include "DAC_MCP4922.hpp"      // for DAC MCP4922
+#include "ScfClockTim3.hpp"     // for clock supplied to SCF
+
+using namespace Mikami;
+
+const int FS_ = 10000;          // Sampling frequency: 24 kHz
+ADC_Intr adc_(A0, FS_, A1, A2);         // for AD
+DAC_MCP4922 myDac_(DAC_MCP4922::DAC_A); // for DA
+
+uint16_t a2_ = 0;
+uint16_t a21_ = 0;
+float vol_ = 1.0f;
+
+// Interrupt service routine for ADC
+void AdcIsr()
+{   
+    float xn = adc_.Read();     // Read from A0
+
+    adc_.Select3rdChannel();    // Enable A2   
+    adc_.SoftStart();           // ADC start for A2 input
+    
+    float yn = vol_*xn; // Volume control by VR
+    myDac_.Write(yn);   // to DAC
+
+    // Read value which controls volume
+    a2_ = adc_.ReadWait_u16();
+
+    adc_.Select1stChannel();        // Enable A0
+    adc_.ClearPending_EnableIRQ();  // Clear pending interrupt
+}
+
+int main()
+{
+    ScfClockTim3(420000);      // cutoff frequency: 4.2 kHz
+    adc_.SetIntrVec(AdcIsr);    // Assign ISR for ADC interrupt
+
+    while (true)
+    {
+        if (abs(a2_ - a21_) > 10)
+        {
+            vol_ = ((float)a2_)/4095.0f;
+            a21_ = a2_;
+        }
+        wait(0.1f);
+    }
+}