daiki hiraoka
/
EMG
筋電センサプログラム
筋電
Diff: main.cpp
- 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)