This software will measure the ON / OFF the number of USER-SW.
main.cpp@0:d086f26efefc, 2015-01-13 (annotated)
- Committer:
- abanum
- Date:
- Tue Jan 13 10:19:37 2015 +0000
- Revision:
- 0:d086f26efefc
GR-PEACH????????????; This is the rapid?fire measurement software for GR-PEACH.; ???????????????????; Display must be connected to the terminal software.; USER-SW?ON/OFF???????...
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
abanum | 0:d086f26efefc | 1 | #include "mbed.h" |
abanum | 0:d086f26efefc | 2 | |
abanum | 0:d086f26efefc | 3 | DigitalOut myled(LED_USER); |
abanum | 0:d086f26efefc | 4 | DigitalIn key1(USER_BUTTON0); |
abanum | 0:d086f26efefc | 5 | Serial pc(USBTX, USBRX); // tx, rx |
abanum | 0:d086f26efefc | 6 | |
abanum | 0:d086f26efefc | 7 | Ticker flipper; |
abanum | 0:d086f26efefc | 8 | #define MODE 2 //MODE |
abanum | 0:d086f26efefc | 9 | #define IN 3 //IN |
abanum | 0:d086f26efefc | 10 | #define EV_IN 1 //IN |
abanum | 0:d086f26efefc | 11 | #define EV_MODE 2 //MODE |
abanum | 0:d086f26efefc | 12 | volatile unsigned char key_dat = 0; |
abanum | 0:d086f26efefc | 13 | volatile unsigned char key_old = 0; |
abanum | 0:d086f26efefc | 14 | volatile unsigned char key_buf[2] = {0,0}; |
abanum | 0:d086f26efefc | 15 | volatile unsigned char key_ev[2] = {0,0}; |
abanum | 0:d086f26efefc | 16 | /*タイマーデータ*/ |
abanum | 0:d086f26efefc | 17 | #define MODE_1S 1000 |
abanum | 0:d086f26efefc | 18 | #define MODE_10S 10000 |
abanum | 0:d086f26efefc | 19 | #define REP_1000MS 1000 |
abanum | 0:d086f26efefc | 20 | #define REP_500MS 500 |
abanum | 0:d086f26efefc | 21 | #define EV_10S 4 //10Sイベント |
abanum | 0:d086f26efefc | 22 | //volatile unsigned char timer_dat = 0; |
abanum | 0:d086f26efefc | 23 | volatile unsigned char timer_ev[1] = {0}; |
abanum | 0:d086f26efefc | 24 | //volatile unsigned int mode_1s_t = 0; |
abanum | 0:d086f26efefc | 25 | volatile unsigned int mode_10s_t = 0; |
abanum | 0:d086f26efefc | 26 | int c_in = 0,mode = 0; |
abanum | 0:d086f26efefc | 27 | |
abanum | 0:d086f26efefc | 28 | void flip() { |
abanum | 0:d086f26efefc | 29 | unsigned char x; |
abanum | 0:d086f26efefc | 30 | key_buf[0] <<= 1; |
abanum | 0:d086f26efefc | 31 | if (!key1) { |
abanum | 0:d086f26efefc | 32 | key_buf[0] ++; |
abanum | 0:d086f26efefc | 33 | } |
abanum | 0:d086f26efefc | 34 | key_buf[0] &= 0x0f; |
abanum | 0:d086f26efefc | 35 | key_dat = 0; |
abanum | 0:d086f26efefc | 36 | for(x=0;x<1;x++){ |
abanum | 0:d086f26efefc | 37 | if (key_buf[x] == 0x0f){ |
abanum | 0:d086f26efefc | 38 | key_dat =key_dat | (1<<x); |
abanum | 0:d086f26efefc | 39 | } |
abanum | 0:d086f26efefc | 40 | } |
abanum | 0:d086f26efefc | 41 | key_ev[0] = key_ev[0] | (~key_old & key_dat); // ON edge EVENT set |
abanum | 0:d086f26efefc | 42 | key_ev[1] = key_ev[1] | (~key_dat & key_old); // OFF edge EVENT set |
abanum | 0:d086f26efefc | 43 | key_old = key_dat; |
abanum | 0:d086f26efefc | 44 | |
abanum | 0:d086f26efefc | 45 | if(mode_10s_t){ |
abanum | 0:d086f26efefc | 46 | mode_10s_t--; |
abanum | 0:d086f26efefc | 47 | if(mode_10s_t == 0){ |
abanum | 0:d086f26efefc | 48 | timer_ev[0] |= EV_10S; |
abanum | 0:d086f26efefc | 49 | } |
abanum | 0:d086f26efefc | 50 | } |
abanum | 0:d086f26efefc | 51 | } |
abanum | 0:d086f26efefc | 52 | |
abanum | 0:d086f26efefc | 53 | int main() |
abanum | 0:d086f26efefc | 54 | { |
abanum | 0:d086f26efefc | 55 | flipper.attach(&flip, 0.001); // the address of the function to be attached (flip) and the interval (2 seconds) |
abanum | 0:d086f26efefc | 56 | pc.printf("PUSH KEY \r\nSTART "); |
abanum | 0:d086f26efefc | 57 | |
abanum | 0:d086f26efefc | 58 | while(1) |
abanum | 0:d086f26efefc | 59 | { |
abanum | 0:d086f26efefc | 60 | if(mode == 0) |
abanum | 0:d086f26efefc | 61 | { |
abanum | 0:d086f26efefc | 62 | if(key_ev[0] & EV_IN) |
abanum | 0:d086f26efefc | 63 | { |
abanum | 0:d086f26efefc | 64 | pc.printf("\r\n"); |
abanum | 0:d086f26efefc | 65 | wait(1.0); |
abanum | 0:d086f26efefc | 66 | pc.printf("3\r"); |
abanum | 0:d086f26efefc | 67 | wait(1.0); |
abanum | 0:d086f26efefc | 68 | pc.printf("3 2\r"); |
abanum | 0:d086f26efefc | 69 | wait(1.0); |
abanum | 0:d086f26efefc | 70 | pc.printf("3 2 1\r"); |
abanum | 0:d086f26efefc | 71 | wait(1.0); |
abanum | 0:d086f26efefc | 72 | pc.printf(" GO! \r"); |
abanum | 0:d086f26efefc | 73 | wait(1.0); |
abanum | 0:d086f26efefc | 74 | key_ev[0] &= ~EV_IN; |
abanum | 0:d086f26efefc | 75 | mode = 1; |
abanum | 0:d086f26efefc | 76 | mode_10s_t = MODE_10S; |
abanum | 0:d086f26efefc | 77 | } |
abanum | 0:d086f26efefc | 78 | } |
abanum | 0:d086f26efefc | 79 | if(mode == 1) |
abanum | 0:d086f26efefc | 80 | { |
abanum | 0:d086f26efefc | 81 | if(key_ev[0] & EV_IN) |
abanum | 0:d086f26efefc | 82 | { |
abanum | 0:d086f26efefc | 83 | c_in++; |
abanum | 0:d086f26efefc | 84 | myled = 0; |
abanum | 0:d086f26efefc | 85 | // pc.printf("%2.1f SEC %2d\r",mode_10s_t/100.0,c_in); |
abanum | 0:d086f26efefc | 86 | key_ev[0] &= ~EV_IN; |
abanum | 0:d086f26efefc | 87 | } |
abanum | 0:d086f26efefc | 88 | if((mode_10s_t % 100)==0)pc.printf("%3.1f SEC %2d \r",mode_10s_t/1000.0,c_in); |
abanum | 0:d086f26efefc | 89 | |
abanum | 0:d086f26efefc | 90 | if(key_ev[1] & EV_IN) |
abanum | 0:d086f26efefc | 91 | { |
abanum | 0:d086f26efefc | 92 | myled = 1; |
abanum | 0:d086f26efefc | 93 | key_ev[1] &= ~EV_IN; |
abanum | 0:d086f26efefc | 94 | } |
abanum | 0:d086f26efefc | 95 | } |
abanum | 0:d086f26efefc | 96 | |
abanum | 0:d086f26efefc | 97 | if(mode == 2) |
abanum | 0:d086f26efefc | 98 | { |
abanum | 0:d086f26efefc | 99 | myled = 0; |
abanum | 0:d086f26efefc | 100 | pc.printf("\r\n\r\n\r\nRESULT=%2.1f\r",c_in/10.0); |
abanum | 0:d086f26efefc | 101 | wait(100); |
abanum | 0:d086f26efefc | 102 | } |
abanum | 0:d086f26efefc | 103 | if(timer_ev[0] & EV_10S) |
abanum | 0:d086f26efefc | 104 | { |
abanum | 0:d086f26efefc | 105 | timer_ev[0] &= ~EV_10S; |
abanum | 0:d086f26efefc | 106 | mode = 2; |
abanum | 0:d086f26efefc | 107 | } |
abanum | 0:d086f26efefc | 108 | } |
abanum | 0:d086f26efefc | 109 | } |