筋電センサプログラム

Dependencies:   mbed-rtos mbed

筋電

Revision:
13:94ce8bd0c0e1
Parent:
12:cbf6f5bbfbe6
--- a/main.cpp	Sat Sep 23 04:37:01 2017 +0000
+++ b/main.cpp	Thu Jan 04 06:30:00 2018 +0000
@@ -3,7 +3,7 @@
  * FFTの1kHz以上は取れなくなる
  * 1kHzだとオシロでFFT見た時ぎりぎり
  */
- /*** Include ***/
+/*** Include ***/
 #include "mbed.h"
 #include "rtos.h"
 #include "FilterTest.h"
@@ -23,16 +23,14 @@
 #define DEBUG
 #define TESTCOM
 */
-union u64_dataType_g
-{
+union u64_dataType_g {
     double DData;
-    char CData[8];   
+    char CData[8];
 };
 
-union u32_dataType_g
-{
+union u32_dataType_g {
     float DData;
-    char CData[4];   
+    char CData[4];
 };
 
 /*** Global Variable ***/
@@ -53,7 +51,7 @@
 
 /* 変数定義 */
 uint32_t Fdiv;
-double InputData = 0.0;    
+double InputData = 0.0;
 
 FLT32 g_cntUp;
 
@@ -67,68 +65,68 @@
 
 
 
-INT32 main() {
+INT32 main()
+{
     INT32 i = 0;
     INT32 cnt = 0;
     DBL64 st = 0;
     DBL64 et = 0;
-    u64_dataType_g sendData;  
+    u64_dataType_g sendData;
     myled1 = 1;
-    
+
     /* 通信初期化 */
     CommInit();     /* 初期化 */
-    
+
     /* A/D変換対タイマ割り込み開始 */
     myled2 = 1;
     /* Start interval timer */
     sampling.attach(&ad_sampling, SAMPLING_RATE);
     myled2 = 0;
-    
+
     while(1) {
         /* timer read */
         st = timer.read_us();
         myled3 = 0;
-        
+
         /* メイン処理 */
         if(cnt >= 1000) {
-          myled1 = !myled1;
-          cnt = 0;
+            myled1 = !myled1;
+            cnt = 0;
         }
         cnt++;
         i++;
 
         /* test */
         //ad_sampling();
-        
+
         /* データ送信判定 */
         if(g_sendFlg == 1) {
             /* データ送信 */
             i++;
-            #ifdef DEBUG_
+#ifdef DEBUG_
             pc.printf("### cnt: %d, ad cnt: %d, wave: %f hogehoge ###\r\n", i, g_adCnt, InputData);
             aout= (float)InputData;
-            #endif
-    #ifdef TESTCOM_
-    pc.printf("send: %d,%lf\t\r\n", i,InputData);
-    #endif
+#endif
+#ifdef TESTCOM_
+            pc.printf("send: %d,%lf\t\r\n", i,InputData);
+#endif
             __disable_irq(); // 禁止
             //InputData = 2.4;
-            aout= InputData / 3.3;
+            aout= InputData /* / 3.3*/;
             sendData = Communicaion(InputData,1);
             __enable_irq(); // 許可
             /* フラグリセット */
             g_sendFlg = 0;
-    //pc.printf("\r\nsend: %1.8lf, ", sendData.DData);
-    for(i=0;i<8;i++)
-    {
-        //LPC_UART0->THR =sendData.CData[i];
-    #ifdef TESTCOM_
-    pc.printf("%02x ", sendData.CData[i]);
-    #endif
-    }
-    
+            //pc.printf("\r\nsend: %1.8lf, ", sendData.DData);
+            for(i=0; i<8; i++) {
+                //LPC_UART0->THR =sendData.CData[i];
+#ifdef TESTCOM_
+                pc.printf("%02x ", sendData.CData[i]);
+#endif
+            }
+
         }
-        
+
         /* timer read */
         et = timer.read_us();
         /* 制御周期まで待機 */
@@ -138,34 +136,35 @@
 }
 
 /* A/D変換割り込み */
-void ad_sampling(){
+void ad_sampling()
+{
     static INT32 i = 0;
     INT32 hpf_on, lpf_on, brf_on;
     /* 割り込み100回で点滅 */
     if(i >= 100) {
-      myled2 = !myled2;
-      i = 0;
+        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 = filter.calc( InputData, hpf_on, lpf_on, brf_on );
-    
-    
-    #ifdef DEBUG_
+    // InputData = filter.calc( InputData, hpf_on, lpf_on, brf_on );
+
+
+#ifdef DEBUG_
     /*pc.printf("attach: %d,%d\r\n", i, InputData);*/
     g_wave = i / 100 * 3.3;
     g_wave = g_adCnt * 3.3;
     if(i > 100) i = 0;
-    #endif
+#endif
     /* wait(0.01); */
     /* A/D変換完了後送信 */
     g_sendFlg = 1;
@@ -179,68 +178,66 @@
 
 u64_dataType_g Communicaion(double data,int byte)
 {
-    
+
     int i;
     char header = 0x01;
     char hoge = 0x00;
-    u64_dataType_g sendData;   
+    u64_dataType_g sendData;
     u32_dataType_g testData;
     /* test */
-    g_cntUp = g_cntUp + 0.001;
-    if(g_cntUp > 1.0) g_cntUp = 0.0;
+    g_cntUp = g_cntUp + 0.01;
+    if(g_cntUp > 3.0) g_cntUp = 0.0;
 
-    sendData.DData = data;
-    testData.DData = (float)g_cntUp;
+    sendData.DData = (float)1.0;
+    testData.DData = (float)data;
     //testData.DData = (float)myled1;
-    
+
     LPC_PINCON->PINSEL0 &= ~(3 << 4);
     LPC_PINCON->PINSEL0 |= (1 << 4);    //  TXD0 (01)
- 
+
     LPC_SC->PCLKSEL0 &= ~(3 << 6);      // PCLK_UART0 ck/4 (00)
     LPC_SC->PCONP |= (1 << 3);          // PCUART0
-    
+
     LPC_UART0->LCR |= (1 << 7);         // enable access DLAB
     LPC_UART0->DLL = Fdiv & 0xff;
     LPC_UART0->DLM = (Fdiv >> 8) & 0xff;
     LPC_UART0->LCR &= ~(1 << 7);        // disable access DLAB
-    
+
     LPC_UART0->LCR |= (3 << 0);         // 8bit
     LPC_UART0->FCR = (7 << 0); // RX1char(00), FIFO reset
     LPC_UART0->IER = (1 << 0); // RBR
-    
+
     /* send header */
     LPC_UART0->THR = header;
-    for(i=0;i<4;i++)
-    {
-        // LPC_UART0->THR =sendData.CData[i];
-        LPC_UART0->THR =testData.CData[i];
-    #ifdef TESTCOM_
-    pc.printf("send: %d,%lf\r\n", i,sendData.CData[i]);
-    #endif
+    for(i=0; i<4; i++) {
+        //LPC_UART0->THR =sendData.CData[i];
+         LPC_UART0->THR =testData.CData[i];
+#ifdef TESTCOM_
+        pc.printf("send: %d,%lf\r\n", i,sendData.CData[i]);
+#endif
     }
-    for(i=0;i<3;i++)
-    {
+    for(i=0; i<3; i++) {
         LPC_UART0->THR = hoge;
     }
-    
+
 
     NVIC_EnableIRQ(UART0_IRQn);
-   wait_us(100);
+    wait_us(100);
     return sendData;
 }
 
-double InputAnalgData() /* A/D  読み取り */ 
+double InputAnalgData() /* A/D  読み取り */
 {
-   double Result = 0.0;
-   
-   Result = (double)wave_in.read()*3.3;
-   /*          1 2 3 4 5 6 7 8   */
-   // Result = 0x0123456789ABCDEF;
-   // Result = 2.0;
-   Result += 0.001;
-   if(Result > 3) Result = 0;
-   /*aout= Result / 3.3;*/
-   //wait_us(100);
-   return Result;
+    double Result = 0.0;
+
+    Result = (double)wave_in.read()  *3.3;
+    /*          1 2 3 4 5 6 7 8   */
+    // Result = 0x0123456789ABCDEF;
+    // Result = 2.0;
+    //Result += 1;
+    //if(Result > 3) Result = 0;
+    /*aout= Result / 3.3;*/
+    //wait_us(100);
+    return Result;
 }