筋電センサプログラム

Dependencies:   mbed-rtos mbed

筋電

Revision:
1:91d6b2ee7a2e
Parent:
0:42ab58db8182
Child:
2:9a7f77850970
--- a/main.cpp	Sat Jan 21 06:18:59 2017 +0000
+++ b/main.cpp	Sat Jan 21 07:37:48 2017 +0000
@@ -8,26 +8,45 @@
 #define ON      (1)
 #define OFF     (0)
 
-#define SAMPLING_RATE   (0.001)     /* A/D sampling rate (1kHz) */
+#define SAMPLING_RATE   (1)     /* A/D sampling rate (1kHz) */
 #define MAINCYCLE 200               /* [ms] */
 
+#define DEBUG
+
 /*** Global Variable ***/
-DigitalOut  myled(LED1);            /* 起動確認用 */
+DigitalOut  myled1(LED1);           /* 起動確認用 */
+DigitalOut  myled2(LED2);           /* 割り込み確認用 */
+DigitalOut  myled3(LED3);           /* 休止状態確認用 */
 Ticker      sampling;               /* Interval timer for A/D sampling */
 AnalogIn    wave_in(p20);           /* Waveform input */
 Serial      pc(USBTX, USBRX);       /* tx, rx */
 Timer       timer;
 
 UINT32      g_sendFlg;
+FLT32       g_wave;
+
+UINT32      g_adCnt;
+
 
 /*** Functions ***/
 /* A/D変換割り込み */
 void ad_sampling(){
-    INT32 i = 0;
+    static INT32 i = 0;
+    /* 割り込み中点灯 */
+    myled2 = 1;
+    g_adCnt++;
+    g_wave = wave_in.read() * 3.3;  /*[V] */
+    #ifdef DEBUG_
     i++;
-    
+    pc.printf("attach: %d,%d\r\n", i, g_adCnt);
+    g_wave = i / 100 * 3.3;
+    g_wave = g_adCnt * 3.3;
+    if(i > 100) i = 0;
+    #endif
+    wait(0.01);
     /* A/D変換完了後送信 */
     g_sendFlg = 1;
+    myled2 = 0;
 }
 
 
@@ -35,23 +54,30 @@
     INT32 i = 0;
     DBL64 st = 0;
     DBL64 et = 0;
-    myled = 1;
+    myled1 = 1;
     
+    /* A/D変換対タイマ割り込み開始 */
+    myled2 = 1;
     /* Start interval timer */
     sampling.attach(&ad_sampling, SAMPLING_RATE);
+    myled2 = 0;
     
     while(1) {
         /* timer read */
         st = timer.read_ms();
+        myled3 = 0;
         
         /* メイン処理 */
-        myled = !myled;
+        myled1 = !myled1;
         i++;
         
         /* データ送信判定 */
         if(g_sendFlg == 1) {
             /* データ送信 */
             i++;
+            #ifdef DEBUG
+            pc.printf("cnt: %d, ad cnt: %d, wave: %f\r\n", i, g_adCnt, g_wave);
+            #endif
             
             /* フラグリセット */
             g_sendFlg = 0;