daiki hiraoka
/
EMG
筋電センサプログラム
筋電
main.cpp@1:91d6b2ee7a2e, 2017-01-21 (annotated)
- Committer:
- dhpt
- Date:
- Sat Jan 21 07:37:48 2017 +0000
- Revision:
- 1:91d6b2ee7a2e
- Parent:
- 0:42ab58db8182
- Child:
- 2:9a7f77850970
??????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dhpt | 0:42ab58db8182 | 1 | /*** Include ***/ |
dhpt | 0:42ab58db8182 | 2 | #include "mbed.h" |
dhpt | 0:42ab58db8182 | 3 | #include "rtos.h" |
dhpt | 0:42ab58db8182 | 4 | |
dhpt | 0:42ab58db8182 | 5 | #include "typedef.h" |
dhpt | 0:42ab58db8182 | 6 | |
dhpt | 0:42ab58db8182 | 7 | /*** Define ***/ |
dhpt | 0:42ab58db8182 | 8 | #define ON (1) |
dhpt | 0:42ab58db8182 | 9 | #define OFF (0) |
dhpt | 0:42ab58db8182 | 10 | |
dhpt | 1:91d6b2ee7a2e | 11 | #define SAMPLING_RATE (1) /* A/D sampling rate (1kHz) */ |
dhpt | 0:42ab58db8182 | 12 | #define MAINCYCLE 200 /* [ms] */ |
dhpt | 0:42ab58db8182 | 13 | |
dhpt | 1:91d6b2ee7a2e | 14 | #define DEBUG |
dhpt | 1:91d6b2ee7a2e | 15 | |
dhpt | 0:42ab58db8182 | 16 | /*** Global Variable ***/ |
dhpt | 1:91d6b2ee7a2e | 17 | DigitalOut myled1(LED1); /* 起動確認用 */ |
dhpt | 1:91d6b2ee7a2e | 18 | DigitalOut myled2(LED2); /* 割り込み確認用 */ |
dhpt | 1:91d6b2ee7a2e | 19 | DigitalOut myled3(LED3); /* 休止状態確認用 */ |
dhpt | 0:42ab58db8182 | 20 | Ticker sampling; /* Interval timer for A/D sampling */ |
dhpt | 0:42ab58db8182 | 21 | AnalogIn wave_in(p20); /* Waveform input */ |
dhpt | 0:42ab58db8182 | 22 | Serial pc(USBTX, USBRX); /* tx, rx */ |
dhpt | 0:42ab58db8182 | 23 | Timer timer; |
dhpt | 0:42ab58db8182 | 24 | |
dhpt | 0:42ab58db8182 | 25 | UINT32 g_sendFlg; |
dhpt | 1:91d6b2ee7a2e | 26 | FLT32 g_wave; |
dhpt | 1:91d6b2ee7a2e | 27 | |
dhpt | 1:91d6b2ee7a2e | 28 | UINT32 g_adCnt; |
dhpt | 1:91d6b2ee7a2e | 29 | |
dhpt | 0:42ab58db8182 | 30 | |
dhpt | 0:42ab58db8182 | 31 | /*** Functions ***/ |
dhpt | 0:42ab58db8182 | 32 | /* A/D変換割り込み */ |
dhpt | 0:42ab58db8182 | 33 | void ad_sampling(){ |
dhpt | 1:91d6b2ee7a2e | 34 | static INT32 i = 0; |
dhpt | 1:91d6b2ee7a2e | 35 | /* 割り込み中点灯 */ |
dhpt | 1:91d6b2ee7a2e | 36 | myled2 = 1; |
dhpt | 1:91d6b2ee7a2e | 37 | g_adCnt++; |
dhpt | 1:91d6b2ee7a2e | 38 | g_wave = wave_in.read() * 3.3; /*[V] */ |
dhpt | 1:91d6b2ee7a2e | 39 | #ifdef DEBUG_ |
dhpt | 0:42ab58db8182 | 40 | i++; |
dhpt | 1:91d6b2ee7a2e | 41 | pc.printf("attach: %d,%d\r\n", i, g_adCnt); |
dhpt | 1:91d6b2ee7a2e | 42 | g_wave = i / 100 * 3.3; |
dhpt | 1:91d6b2ee7a2e | 43 | g_wave = g_adCnt * 3.3; |
dhpt | 1:91d6b2ee7a2e | 44 | if(i > 100) i = 0; |
dhpt | 1:91d6b2ee7a2e | 45 | #endif |
dhpt | 1:91d6b2ee7a2e | 46 | wait(0.01); |
dhpt | 0:42ab58db8182 | 47 | /* A/D変換完了後送信 */ |
dhpt | 0:42ab58db8182 | 48 | g_sendFlg = 1; |
dhpt | 1:91d6b2ee7a2e | 49 | myled2 = 0; |
dhpt | 0:42ab58db8182 | 50 | } |
dhpt | 0:42ab58db8182 | 51 | |
dhpt | 0:42ab58db8182 | 52 | |
dhpt | 0:42ab58db8182 | 53 | INT32 main() { |
dhpt | 0:42ab58db8182 | 54 | INT32 i = 0; |
dhpt | 0:42ab58db8182 | 55 | DBL64 st = 0; |
dhpt | 0:42ab58db8182 | 56 | DBL64 et = 0; |
dhpt | 1:91d6b2ee7a2e | 57 | myled1 = 1; |
dhpt | 0:42ab58db8182 | 58 | |
dhpt | 1:91d6b2ee7a2e | 59 | /* A/D変換対タイマ割り込み開始 */ |
dhpt | 1:91d6b2ee7a2e | 60 | myled2 = 1; |
dhpt | 0:42ab58db8182 | 61 | /* Start interval timer */ |
dhpt | 0:42ab58db8182 | 62 | sampling.attach(&ad_sampling, SAMPLING_RATE); |
dhpt | 1:91d6b2ee7a2e | 63 | myled2 = 0; |
dhpt | 0:42ab58db8182 | 64 | |
dhpt | 0:42ab58db8182 | 65 | while(1) { |
dhpt | 0:42ab58db8182 | 66 | /* timer read */ |
dhpt | 0:42ab58db8182 | 67 | st = timer.read_ms(); |
dhpt | 1:91d6b2ee7a2e | 68 | myled3 = 0; |
dhpt | 0:42ab58db8182 | 69 | |
dhpt | 0:42ab58db8182 | 70 | /* メイン処理 */ |
dhpt | 1:91d6b2ee7a2e | 71 | myled1 = !myled1; |
dhpt | 0:42ab58db8182 | 72 | i++; |
dhpt | 0:42ab58db8182 | 73 | |
dhpt | 0:42ab58db8182 | 74 | /* データ送信判定 */ |
dhpt | 0:42ab58db8182 | 75 | if(g_sendFlg == 1) { |
dhpt | 0:42ab58db8182 | 76 | /* データ送信 */ |
dhpt | 0:42ab58db8182 | 77 | i++; |
dhpt | 1:91d6b2ee7a2e | 78 | #ifdef DEBUG |
dhpt | 1:91d6b2ee7a2e | 79 | pc.printf("cnt: %d, ad cnt: %d, wave: %f\r\n", i, g_adCnt, g_wave); |
dhpt | 1:91d6b2ee7a2e | 80 | #endif |
dhpt | 0:42ab58db8182 | 81 | |
dhpt | 0:42ab58db8182 | 82 | /* フラグリセット */ |
dhpt | 0:42ab58db8182 | 83 | g_sendFlg = 0; |
dhpt | 0:42ab58db8182 | 84 | } |
dhpt | 0:42ab58db8182 | 85 | |
dhpt | 0:42ab58db8182 | 86 | /* timer read */ |
dhpt | 0:42ab58db8182 | 87 | et = timer.read_ms(); |
dhpt | 0:42ab58db8182 | 88 | /* 制御周期まで待機 */ |
dhpt | 0:42ab58db8182 | 89 | Thread::wait((uint32_t)(MAINCYCLE - (et - st))); |
dhpt | 0:42ab58db8182 | 90 | } |
dhpt | 0:42ab58db8182 | 91 | } |