筋電センサプログラム

Dependencies:   mbed-rtos mbed

筋電

Revision:
4:a15ebde0a175
Parent:
3:5d91bfe4a79d
Child:
5:b2b19d2626c1
--- a/main.cpp	Sun Feb 05 07:32:30 2017 +0000
+++ b/main.cpp	Mon Feb 13 06:20:56 2017 +0000
@@ -10,13 +10,13 @@
 #define OFF     (0)
 
 #define SAMPLING_RATE   (0.01)     /* A/D sampling rate (1kHz) */
-#define MAINCYCLE 20               /* [ms] */
+#define MAINCYCLE 100               /* [us] */
 
 #define INT16_MAX     (32767)
 #define INT16_MIN     (-32768)
-
+/*
 #define DEBUG
-
+*/
 union u64_dataType_g
 {
     double DData;
@@ -42,7 +42,7 @@
 
 /* 変数定義 */
 uint32_t Fdiv;
-double InputData = 0;    
+double InputData = 0.0;    
 
 
 
@@ -58,6 +58,7 @@
 
 INT32 main() {
     INT32 i = 0;
+    INT32 cnt = 0;
     DBL64 st = 0;
     DBL64 et = 0;
     myled1 = 1;
@@ -73,31 +74,36 @@
     
     while(1) {
         /* timer read */
-        st = timer.read_ms();
+        st = timer.read_us();
         myled3 = 0;
         
         /* メイン処理 */
-        myled1 = !myled1;
+        if(cnt >= 1000) {
+          myled1 = !myled1;
+          cnt = 0;
+        }
+        cnt++;
         i++;
         
         /* データ送信判定 */
         if(g_sendFlg == 1) {
             /* データ送信 */
             i++;
-            #ifdef DEBUG
-            /*pc.printf("cnt: %d, ad cnt: %d, wave: %f", i, g_adCnt, InputData);*/
+            #ifdef DEBUG_
+            pc.printf("### cnt: %d, ad cnt: %d, wave: %f hogehoge ###\r\n", i, g_adCnt, InputData);
             aout= (float)InputData;
             #endif
 
-            Communicaion(InputData,1);            
+            Communicaion(InputData,1);
             /* フラグリセット */
             g_sendFlg = 0;
         }
         
         /* timer read */
-        et = timer.read_ms();
+        et = timer.read_us();
         /* 制御周期まで待機 */
-        Thread::wait((uint32_t)(MAINCYCLE - (et - st)));
+        /*Thread::wait((uint32_t)(MAINCYCLE - (et - st)));*/
+        wait_us((uint32_t)(MAINCYCLE - (et - st)));
     }
 }
 
@@ -105,19 +111,25 @@
 void ad_sampling(){
     static INT32 i = 0;
     INT32 hpf_on, lpf_on, brf_on;
-    /* 割り込み中点灯 */
-    myled2 = 1;
+    /* 割り込み100回で点滅 */
+    if(i >= 100) {
+      myled2 = !myled2;
+      i = 0;
+    }
+    i++;
     g_adCnt++;
+    InputData = 0.0;
     InputData = InputAnalgData();  /*[V] */
     
     /* filter */
     hpf_on = 1;
     lpf_on = 1;
     brf_on = 0;
-    InputData = (int32_t)filter.calc( (double)(wave_in.read_u16() - INT16_MAX), hpf_on, lpf_on, brf_on );    
+    /** !!! サンプリング周波数確認 !!! **/
+    /* InputData = (int32_t)filter.calc( (double)(wave_in.read_u16() - INT16_MAX), hpf_on, lpf_on, brf_on ); */
+    /*InputData = filter.calc( InputData, hpf_on, lpf_on, brf_on );*/
     
     #ifdef DEBUG_
-    i++;
     /*pc.printf("attach: %d,%d\r\n", i, InputData);*/
     g_wave = i / 100 * 3.3;
     g_wave = g_adCnt * 3.3;
@@ -126,7 +138,6 @@
     /* wait(0.01); */
     /* A/D変換完了後送信 */
     g_sendFlg = 1;
-    myled2 = 0;
 }
 
 
@@ -141,8 +152,7 @@
     int i;
     u64_dataType_g sendData;    
     sendData.DData = data;
-    
-    
+
     LPC_PINCON->PINSEL0 &= ~(3 << 4);
     LPC_PINCON->PINSEL0 |= (1 << 4);    //  TXD0 (01)