筋電センサプログラム

Dependencies:   mbed-rtos mbed

筋電

Committer:
dhpt
Date:
Sat Jan 21 06:18:59 2017 +0000
Revision:
0:42ab58db8182
Child:
1:91d6b2ee7a2e
?????????????;

Who changed what in which revision?

UserRevisionLine numberNew 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 0:42ab58db8182 11 #define SAMPLING_RATE (0.001) /* A/D sampling rate (1kHz) */
dhpt 0:42ab58db8182 12 #define MAINCYCLE 200 /* [ms] */
dhpt 0:42ab58db8182 13
dhpt 0:42ab58db8182 14 /*** Global Variable ***/
dhpt 0:42ab58db8182 15 DigitalOut myled(LED1); /* 起動確認用 */
dhpt 0:42ab58db8182 16 Ticker sampling; /* Interval timer for A/D sampling */
dhpt 0:42ab58db8182 17 AnalogIn wave_in(p20); /* Waveform input */
dhpt 0:42ab58db8182 18 Serial pc(USBTX, USBRX); /* tx, rx */
dhpt 0:42ab58db8182 19 Timer timer;
dhpt 0:42ab58db8182 20
dhpt 0:42ab58db8182 21 UINT32 g_sendFlg;
dhpt 0:42ab58db8182 22
dhpt 0:42ab58db8182 23 /*** Functions ***/
dhpt 0:42ab58db8182 24 /* A/D変換割り込み */
dhpt 0:42ab58db8182 25 void ad_sampling(){
dhpt 0:42ab58db8182 26 INT32 i = 0;
dhpt 0:42ab58db8182 27 i++;
dhpt 0:42ab58db8182 28
dhpt 0:42ab58db8182 29 /* A/D変換完了後送信 */
dhpt 0:42ab58db8182 30 g_sendFlg = 1;
dhpt 0:42ab58db8182 31 }
dhpt 0:42ab58db8182 32
dhpt 0:42ab58db8182 33
dhpt 0:42ab58db8182 34 INT32 main() {
dhpt 0:42ab58db8182 35 INT32 i = 0;
dhpt 0:42ab58db8182 36 DBL64 st = 0;
dhpt 0:42ab58db8182 37 DBL64 et = 0;
dhpt 0:42ab58db8182 38 myled = 1;
dhpt 0:42ab58db8182 39
dhpt 0:42ab58db8182 40 /* Start interval timer */
dhpt 0:42ab58db8182 41 sampling.attach(&ad_sampling, SAMPLING_RATE);
dhpt 0:42ab58db8182 42
dhpt 0:42ab58db8182 43 while(1) {
dhpt 0:42ab58db8182 44 /* timer read */
dhpt 0:42ab58db8182 45 st = timer.read_ms();
dhpt 0:42ab58db8182 46
dhpt 0:42ab58db8182 47 /* メイン処理 */
dhpt 0:42ab58db8182 48 myled = !myled;
dhpt 0:42ab58db8182 49 i++;
dhpt 0:42ab58db8182 50
dhpt 0:42ab58db8182 51 /* データ送信判定 */
dhpt 0:42ab58db8182 52 if(g_sendFlg == 1) {
dhpt 0:42ab58db8182 53 /* データ送信 */
dhpt 0:42ab58db8182 54 i++;
dhpt 0:42ab58db8182 55
dhpt 0:42ab58db8182 56 /* フラグリセット */
dhpt 0:42ab58db8182 57 g_sendFlg = 0;
dhpt 0:42ab58db8182 58 }
dhpt 0:42ab58db8182 59
dhpt 0:42ab58db8182 60 /* timer read */
dhpt 0:42ab58db8182 61 et = timer.read_ms();
dhpt 0:42ab58db8182 62 /* 制御周期まで待機 */
dhpt 0:42ab58db8182 63 Thread::wait((uint32_t)(MAINCYCLE - (et - st)));
dhpt 0:42ab58db8182 64 }
dhpt 0:42ab58db8182 65 }