Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of QW-Reactiontime by
main.cpp@2:73b5ca784164, 2016-12-15 (annotated)
- Committer:
- quicksandjonas
- Date:
- Thu Dec 15 09:57:11 2016 +0000
- Revision:
- 2:73b5ca784164
- Parent:
- 1:00a17f5a247c
- Child:
- 3:1bc9575369bd
This program is a reaction time game. The results are shown in the console window and transmitted via Sigfox.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| quicksandjonas | 2:73b5ca784164 | 1 | /* This program demonstrates how to use the board to play a reaction time game. |
| quicksandjonas | 2:73b5ca784164 | 2 | * The winner and his reaction time are displayed in the console window and transmitted via Sigfox. |
| quicksandjonas | 2:73b5ca784164 | 3 | * Open a serial connection to the board to see extra info and instructions. |
| quicksandjonas | 1:00a17f5a247c | 4 | */ |
| quicksandjonas | 1:00a17f5a247c | 5 | |
| quicksand | 0:6c17d1a79f75 | 6 | #include "mbed.h" |
| quicksandjonas | 1:00a17f5a247c | 7 | |
| quicksandjonas | 1:00a17f5a247c | 8 | #include <stdio.h> |
| quicksandjonas | 1:00a17f5a247c | 9 | #include <stdlib.h> |
| quicksand | 0:6c17d1a79f75 | 10 | |
| quicksandjonas | 1:00a17f5a247c | 11 | #define SER_BUFFER_SIZE 32 |
| quicksandjonas | 1:00a17f5a247c | 12 | |
| quicksandjonas | 1:00a17f5a247c | 13 | /* The 4 onboard LEDs */ |
| quicksand | 0:6c17d1a79f75 | 14 | DigitalOut LED_0 (PB_6); |
| quicksand | 0:6c17d1a79f75 | 15 | DigitalOut LED_1 (PA_7); |
| quicksand | 0:6c17d1a79f75 | 16 | DigitalOut LED_2 (PA_6); |
| quicksand | 0:6c17d1a79f75 | 17 | DigitalOut LED_3 (PA_5); |
| quicksandjonas | 1:00a17f5a247c | 18 | |
| quicksandjonas | 1:00a17f5a247c | 19 | /* The 2 user buttons */ |
| quicksandjonas | 1:00a17f5a247c | 20 | InterruptIn SW1(PA_8); |
| quicksandjonas | 1:00a17f5a247c | 21 | InterruptIn SW2(PB_10); |
| quicksandjonas | 1:00a17f5a247c | 22 | |
| quicksandjonas | 1:00a17f5a247c | 23 | /* Function prototypes */ |
| quicksandjonas | 1:00a17f5a247c | 24 | void sw1interrupt(); |
| quicksandjonas | 1:00a17f5a247c | 25 | void sw2interrupt(); |
| quicksandjonas | 1:00a17f5a247c | 26 | void sertmout(); |
| quicksandjonas | 1:00a17f5a247c | 27 | bool modem_command_check_ok(char * command); |
| quicksandjonas | 1:00a17f5a247c | 28 | void modem_setup(); |
| quicksandjonas | 1:00a17f5a247c | 29 | |
| quicksandjonas | 1:00a17f5a247c | 30 | bool ser_timeout = false; |
| quicksandjonas | 1:00a17f5a247c | 31 | |
| quicksandjonas | 1:00a17f5a247c | 32 | /* Serial port over USB */ |
| quicksand | 0:6c17d1a79f75 | 33 | Serial pc(USBTX, USBRX); |
| quicksandjonas | 1:00a17f5a247c | 34 | |
| quicksandjonas | 1:00a17f5a247c | 35 | /* Serial connection to sigfox modem */ |
| quicksand | 0:6c17d1a79f75 | 36 | Serial modem(PA_9, PA_10); |
| quicksand | 0:6c17d1a79f75 | 37 | |
| quicksandjonas | 2:73b5ca784164 | 38 | /* User variables */ |
| quicksandjonas | 2:73b5ca784164 | 39 | uint16_t randomTime; |
| quicksandjonas | 2:73b5ca784164 | 40 | uint16_t reactionTime; |
| quicksandjonas | 2:73b5ca784164 | 41 | uint8_t winner; |
| quicksand | 0:6c17d1a79f75 | 42 | |
| quicksandjonas | 2:73b5ca784164 | 43 | bool play = false; |
| quicksandjonas | 2:73b5ca784164 | 44 | bool player1 = false; |
| quicksandjonas | 2:73b5ca784164 | 45 | bool player2 = false; |
| quicksandjonas | 2:73b5ca784164 | 46 | bool busyPlaying = false; |
| quicksand | 0:6c17d1a79f75 | 47 | |
| quicksandjonas | 1:00a17f5a247c | 48 | int main() { |
| quicksandjonas | 1:00a17f5a247c | 49 | |
| quicksandjonas | 1:00a17f5a247c | 50 | time_t t; |
| quicksand | 0:6c17d1a79f75 | 51 | |
| quicksandjonas | 1:00a17f5a247c | 52 | /* Setup TD120x */ |
| quicksandjonas | 1:00a17f5a247c | 53 | wait(3); |
| quicksandjonas | 1:00a17f5a247c | 54 | modem_setup(); |
| quicksandjonas | 1:00a17f5a247c | 55 | |
| quicksandjonas | 1:00a17f5a247c | 56 | /* Turn off all LED */ |
| quicksand | 0:6c17d1a79f75 | 57 | LED_0 = 1; |
| quicksand | 0:6c17d1a79f75 | 58 | LED_1 = 1; |
| quicksand | 0:6c17d1a79f75 | 59 | LED_2 = 1; |
| quicksand | 0:6c17d1a79f75 | 60 | LED_3 = 1; |
| quicksand | 0:6c17d1a79f75 | 61 | |
| quicksandjonas | 1:00a17f5a247c | 62 | /* Setup button interrupts */ |
| quicksandjonas | 1:00a17f5a247c | 63 | SW1.fall(&sw1interrupt); |
| quicksandjonas | 1:00a17f5a247c | 64 | SW2.fall(&sw2interrupt); |
| quicksandjonas | 1:00a17f5a247c | 65 | |
| quicksandjonas | 1:00a17f5a247c | 66 | /* Intializes random number generator */ |
| quicksandjonas | 2:73b5ca784164 | 67 | srand((unsigned) time(&t)); |
| quicksand | 0:6c17d1a79f75 | 68 | |
| quicksandjonas | 2:73b5ca784164 | 69 | /* Push a button to start the first game */ |
| quicksandjonas | 2:73b5ca784164 | 70 | pc.printf("\nPress a button to start the reaction time game...\n\r"); |
| quicksandjonas | 2:73b5ca784164 | 71 | |
| quicksandjonas | 2:73b5ca784164 | 72 | while(1) { |
| quicksandjonas | 1:00a17f5a247c | 73 | |
| quicksandjonas | 2:73b5ca784164 | 74 | /* When waiting to start a new game, show a loop on the leds */ |
| quicksandjonas | 2:73b5ca784164 | 75 | while(play == false){ |
| quicksandjonas | 2:73b5ca784164 | 76 | if(play == false){ // Check every time, otherwise after interrupt, loop would be finished first |
| quicksandjonas | 2:73b5ca784164 | 77 | LED_0 = 1;LED_1 = 1;LED_2 = 1;LED_3 = 0; |
| quicksandjonas | 2:73b5ca784164 | 78 | wait_ms(100); |
| quicksandjonas | 2:73b5ca784164 | 79 | } |
| quicksandjonas | 2:73b5ca784164 | 80 | if(play == false){ |
| quicksandjonas | 2:73b5ca784164 | 81 | LED_0 = 1;LED_1 = 1;LED_2 = 0;LED_3 = 1; |
| quicksandjonas | 2:73b5ca784164 | 82 | wait_ms(100); |
| quicksandjonas | 2:73b5ca784164 | 83 | } |
| quicksandjonas | 2:73b5ca784164 | 84 | if(play == false){ |
| quicksandjonas | 2:73b5ca784164 | 85 | LED_0 = 1;LED_1 = 0;LED_2 = 1;LED_3 = 1; |
| quicksandjonas | 2:73b5ca784164 | 86 | wait_ms(100); |
| quicksandjonas | 2:73b5ca784164 | 87 | } |
| quicksandjonas | 2:73b5ca784164 | 88 | if(play == false){ |
| quicksandjonas | 2:73b5ca784164 | 89 | LED_0 = 0;LED_1 = 1;LED_2 = 1;LED_3 = 1; |
| quicksandjonas | 2:73b5ca784164 | 90 | wait_ms(100); |
| quicksandjonas | 1:00a17f5a247c | 91 | } |
| quicksandjonas | 2:73b5ca784164 | 92 | if(play == false){ |
| quicksandjonas | 2:73b5ca784164 | 93 | LED_0 = 1;LED_1 = 0;LED_2 = 1;LED_3 = 1; |
| quicksandjonas | 2:73b5ca784164 | 94 | wait_ms(100); |
| quicksandjonas | 2:73b5ca784164 | 95 | } |
| quicksandjonas | 2:73b5ca784164 | 96 | if(play == false){ |
| quicksandjonas | 2:73b5ca784164 | 97 | LED_0 = 1;LED_1 = 1;LED_2 = 0;LED_3 = 1; |
| quicksandjonas | 2:73b5ca784164 | 98 | wait_ms(100); |
| quicksandjonas | 2:73b5ca784164 | 99 | } |
| quicksandjonas | 2:73b5ca784164 | 100 | } |
| quicksandjonas | 2:73b5ca784164 | 101 | |
| quicksandjonas | 2:73b5ca784164 | 102 | /* After the 4 leds flash on, calculate the reaction time */ |
| quicksandjonas | 2:73b5ca784164 | 103 | while(busyPlaying == true && player1==false && player2 == false){ |
| quicksandjonas | 2:73b5ca784164 | 104 | reactionTime++; |
| quicksandjonas | 2:73b5ca784164 | 105 | wait_ms(1); |
| quicksandjonas | 2:73b5ca784164 | 106 | } |
| quicksandjonas | 2:73b5ca784164 | 107 | |
| quicksandjonas | 2:73b5ca784164 | 108 | /* When player 1 has won */ |
| quicksandjonas | 2:73b5ca784164 | 109 | if(player1 == true){ |
| quicksandjonas | 2:73b5ca784164 | 110 | pc.printf("\nPlayer 1 was the fastest. His time was: %d ms\n\r", reactionTime); |
| quicksandjonas | 1:00a17f5a247c | 111 | LED_0 = 1; |
| quicksandjonas | 1:00a17f5a247c | 112 | LED_1 = 1; |
| quicksandjonas | 1:00a17f5a247c | 113 | LED_2 = 1; |
| quicksandjonas | 2:73b5ca784164 | 114 | LED_3 = 1; |
| quicksandjonas | 2:73b5ca784164 | 115 | winner = 1; |
| quicksandjonas | 2:73b5ca784164 | 116 | char command[SER_BUFFER_SIZE]; |
| quicksandjonas | 2:73b5ca784164 | 117 | sprintf(command, "AT$SF=05%04x%04x,2,0\n", (int) winner, (int) reactionTime ); |
| quicksandjonas | 2:73b5ca784164 | 118 | pc.printf("Sending winner = %i and reaction time = %i ms over Sigfox\n", winner, reactionTime); |
| quicksandjonas | 2:73b5ca784164 | 119 | pc.printf("using modem command: %s\n", command); |
| quicksandjonas | 2:73b5ca784164 | 120 | modem_command_check_ok(command); |
| quicksandjonas | 2:73b5ca784164 | 121 | player1 = false; |
| quicksandjonas | 2:73b5ca784164 | 122 | player2= false; |
| quicksandjonas | 2:73b5ca784164 | 123 | busyPlaying = false; |
| quicksandjonas | 2:73b5ca784164 | 124 | play = false; |
| quicksandjonas | 2:73b5ca784164 | 125 | reactionTime = 0; |
| quicksandjonas | 2:73b5ca784164 | 126 | pc.printf("\nPress a button to start a new game...\n\r"); |
| quicksandjonas | 2:73b5ca784164 | 127 | } |
| quicksandjonas | 2:73b5ca784164 | 128 | |
| quicksandjonas | 2:73b5ca784164 | 129 | /* When player 2 has won */ |
| quicksandjonas | 2:73b5ca784164 | 130 | if(player2 == true){ |
| quicksandjonas | 2:73b5ca784164 | 131 | pc.printf("\nPlayer 2 was the fastest. His time was: %d ms\n\r", reactionTime); |
| quicksandjonas | 2:73b5ca784164 | 132 | LED_0 = 1; |
| quicksandjonas | 2:73b5ca784164 | 133 | LED_1 = 1; |
| quicksandjonas | 2:73b5ca784164 | 134 | LED_2 = 1; |
| quicksandjonas | 2:73b5ca784164 | 135 | LED_3 = 1; |
| quicksandjonas | 2:73b5ca784164 | 136 | winner = 2; |
| quicksandjonas | 2:73b5ca784164 | 137 | char command[SER_BUFFER_SIZE]; |
| quicksandjonas | 2:73b5ca784164 | 138 | sprintf(command, "AT$SF=05%04x%04x,2,0\n", (int) winner, (int) reactionTime ); |
| quicksandjonas | 2:73b5ca784164 | 139 | pc.printf("Sending winner = %i and reaction time = %i ms over Sigfox\n", winner, reactionTime); |
| quicksandjonas | 2:73b5ca784164 | 140 | pc.printf("using modem command: %s\n", command); |
| quicksandjonas | 2:73b5ca784164 | 141 | modem_command_check_ok(command); |
| quicksandjonas | 2:73b5ca784164 | 142 | player1 = false; |
| quicksandjonas | 2:73b5ca784164 | 143 | player2= false; |
| quicksandjonas | 2:73b5ca784164 | 144 | busyPlaying = false; |
| quicksandjonas | 2:73b5ca784164 | 145 | play = false; |
| quicksandjonas | 2:73b5ca784164 | 146 | reactionTime = 0; |
| quicksandjonas | 2:73b5ca784164 | 147 | pc.printf("\nPress a button to start a new game...\n\r"); |
| quicksandjonas | 1:00a17f5a247c | 148 | } |
| quicksandjonas | 1:00a17f5a247c | 149 | |
| quicksandjonas | 2:73b5ca784164 | 150 | /* Check if a new game has been started, when a game has been started then generate a random time */ |
| quicksandjonas | 2:73b5ca784164 | 151 | if(play == true){ |
| quicksandjonas | 2:73b5ca784164 | 152 | pc.printf("\nGame has started, push your button as quick as possible when leds go on!\n\r"); |
| quicksandjonas | 2:73b5ca784164 | 153 | randomTime = (rand() % 5000)+1; //random wait max 5 seconds |
| quicksandjonas | 2:73b5ca784164 | 154 | wait_ms( randomTime + 1000 ); // wait for random time + 1 second |
| quicksandjonas | 2:73b5ca784164 | 155 | busyPlaying = true; |
| quicksandjonas | 2:73b5ca784164 | 156 | LED_0 = 0; |
| quicksandjonas | 2:73b5ca784164 | 157 | LED_1 = 0; |
| quicksandjonas | 2:73b5ca784164 | 158 | LED_2 = 0; |
| quicksandjonas | 2:73b5ca784164 | 159 | LED_3 = 0; |
| quicksandjonas | 2:73b5ca784164 | 160 | } |
| quicksandjonas | 2:73b5ca784164 | 161 | |
| quicksandjonas | 2:73b5ca784164 | 162 | |
| quicksand | 0:6c17d1a79f75 | 163 | } |
| quicksandjonas | 1:00a17f5a247c | 164 | } |
| quicksandjonas | 2:73b5ca784164 | 165 | |
| quicksandjonas | 1:00a17f5a247c | 166 | void modem_setup() |
| quicksandjonas | 1:00a17f5a247c | 167 | { |
| quicksandjonas | 1:00a17f5a247c | 168 | /* Reset to factory defaults */ |
| quicksandjonas | 1:00a17f5a247c | 169 | if(modem_command_check_ok("AT&F")) |
| quicksandjonas | 1:00a17f5a247c | 170 | { |
| quicksandjonas | 1:00a17f5a247c | 171 | pc.printf("Factory reset succesfull\r\n"); |
| quicksandjonas | 1:00a17f5a247c | 172 | } |
| quicksandjonas | 1:00a17f5a247c | 173 | else |
| quicksandjonas | 1:00a17f5a247c | 174 | { |
| quicksandjonas | 1:00a17f5a247c | 175 | pc.printf("Factory reset TD120x failed\r\n"); |
| quicksandjonas | 1:00a17f5a247c | 176 | } |
| quicksandjonas | 1:00a17f5a247c | 177 | /* Disable local echo */ |
| quicksandjonas | 1:00a17f5a247c | 178 | modem.printf("ATE0\n"); |
| quicksandjonas | 1:00a17f5a247c | 179 | if(modem_command_check_ok("ATE0")) |
| quicksandjonas | 1:00a17f5a247c | 180 | { |
| quicksandjonas | 1:00a17f5a247c | 181 | pc.printf("Local echo disabled\r\n"); |
| quicksandjonas | 1:00a17f5a247c | 182 | } |
| quicksandjonas | 1:00a17f5a247c | 183 | /* Write to mem */ |
| quicksandjonas | 1:00a17f5a247c | 184 | if(modem_command_check_ok("AT&W")) |
| quicksandjonas | 1:00a17f5a247c | 185 | { |
| quicksandjonas | 1:00a17f5a247c | 186 | pc.printf("Settings saved!\r\n"); |
| quicksandjonas | 1:00a17f5a247c | 187 | } |
| quicksandjonas | 1:00a17f5a247c | 188 | } |
| quicksandjonas | 1:00a17f5a247c | 189 | |
| quicksandjonas | 1:00a17f5a247c | 190 | bool modem_command_check_ok(char * command) |
| quicksandjonas | 1:00a17f5a247c | 191 | { |
| quicksandjonas | 2:73b5ca784164 | 192 | /* First clear serial data buffers */ |
| quicksandjonas | 1:00a17f5a247c | 193 | while(modem.readable()) modem.getc(); |
| quicksandjonas | 1:00a17f5a247c | 194 | /* Timeout for response of the modem */ |
| quicksandjonas | 1:00a17f5a247c | 195 | Timeout tmout; |
| quicksandjonas | 1:00a17f5a247c | 196 | ser_timeout = false; |
| quicksandjonas | 1:00a17f5a247c | 197 | /* Buffer for incoming data */ |
| quicksandjonas | 1:00a17f5a247c | 198 | char responsebuffer[6]; |
| quicksandjonas | 1:00a17f5a247c | 199 | /* Flag to set when we get 'OK' response */ |
| quicksandjonas | 1:00a17f5a247c | 200 | bool ok = false; |
| quicksandjonas | 1:00a17f5a247c | 201 | bool error = false; |
| quicksandjonas | 1:00a17f5a247c | 202 | /* Print command to TD120x */ |
| quicksandjonas | 1:00a17f5a247c | 203 | modem.printf(command); |
| quicksandjonas | 1:00a17f5a247c | 204 | /* Newline to activate command */ |
| quicksandjonas | 1:00a17f5a247c | 205 | modem.printf("\n"); |
| quicksandjonas | 1:00a17f5a247c | 206 | /* Wait untill serial feedback, min 7 seconds before timeout */ |
| quicksandjonas | 1:00a17f5a247c | 207 | tmout.attach(&sertmout, 7.0); |
| quicksandjonas | 1:00a17f5a247c | 208 | while(!modem.readable()&& ser_timeout == false); |
| quicksandjonas | 1:00a17f5a247c | 209 | while(!ok && !ser_timeout && !error) |
| quicksandjonas | 1:00a17f5a247c | 210 | { |
| quicksandjonas | 1:00a17f5a247c | 211 | if(modem.readable()) |
| quicksandjonas | 1:00a17f5a247c | 212 | { |
| quicksandjonas | 1:00a17f5a247c | 213 | for(int i = 0; i < 5; i++) |
| quicksandjonas | 1:00a17f5a247c | 214 | { |
| quicksandjonas | 1:00a17f5a247c | 215 | responsebuffer[i] = responsebuffer[i+1]; |
| quicksandjonas | 1:00a17f5a247c | 216 | } |
| quicksandjonas | 1:00a17f5a247c | 217 | responsebuffer[5] = modem.getc(); |
| quicksandjonas | 1:00a17f5a247c | 218 | if(responsebuffer[0] == '\r' && responsebuffer[1] == '\n' && responsebuffer[2] == 'O' && responsebuffer[3] == 'K' && responsebuffer[4] == '\r' && responsebuffer[5] == '\n' ) |
| quicksandjonas | 1:00a17f5a247c | 219 | { |
| quicksandjonas | 1:00a17f5a247c | 220 | ok = true; |
| quicksandjonas | 1:00a17f5a247c | 221 | } |
| quicksandjonas | 1:00a17f5a247c | 222 | else if(responsebuffer[0] == '\r' && responsebuffer[1] == '\n' && responsebuffer[2] == 'E' && responsebuffer[3] == 'R' && responsebuffer[4] == 'R' && responsebuffer[5] == 'O' ) |
| quicksandjonas | 1:00a17f5a247c | 223 | { |
| quicksandjonas | 1:00a17f5a247c | 224 | error = true; |
| quicksandjonas | 1:00a17f5a247c | 225 | } |
| quicksandjonas | 1:00a17f5a247c | 226 | } |
| quicksandjonas | 1:00a17f5a247c | 227 | } |
| quicksandjonas | 1:00a17f5a247c | 228 | tmout.detach(); |
| quicksandjonas | 1:00a17f5a247c | 229 | return ok; |
| quicksandjonas | 1:00a17f5a247c | 230 | } |
| quicksandjonas | 2:73b5ca784164 | 231 | |
| quicksandjonas | 1:00a17f5a247c | 232 | /* Button 1 ISR */ |
| quicksandjonas | 1:00a17f5a247c | 233 | void sw1interrupt() |
| quicksandjonas | 2:73b5ca784164 | 234 | { |
| quicksandjonas | 2:73b5ca784164 | 235 | if(play == false && busyPlaying == false){ // If not already playing... |
| quicksandjonas | 2:73b5ca784164 | 236 | play = true; |
| quicksandjonas | 2:73b5ca784164 | 237 | LED_0 = 1; |
| quicksandjonas | 2:73b5ca784164 | 238 | LED_1 = 1; |
| quicksandjonas | 2:73b5ca784164 | 239 | LED_2 = 1; |
| quicksandjonas | 2:73b5ca784164 | 240 | LED_3 = 1; |
| quicksandjonas | 2:73b5ca784164 | 241 | } |
| quicksandjonas | 2:73b5ca784164 | 242 | if(busyPlaying == true && player2 != true){ // When playing and there is no winner yet... |
| quicksandjonas | 2:73b5ca784164 | 243 | player1 = true; |
| quicksandjonas | 2:73b5ca784164 | 244 | } |
| quicksandjonas | 1:00a17f5a247c | 245 | |
| quicksandjonas | 1:00a17f5a247c | 246 | } |
| quicksandjonas | 1:00a17f5a247c | 247 | |
| quicksandjonas | 1:00a17f5a247c | 248 | /* Button 2 ISR */ |
| quicksandjonas | 1:00a17f5a247c | 249 | void sw2interrupt() |
| quicksandjonas | 2:73b5ca784164 | 250 | { |
| quicksandjonas | 2:73b5ca784164 | 251 | if(play == false && busyPlaying == false){ // If not already playing... |
| quicksandjonas | 2:73b5ca784164 | 252 | play = true; |
| quicksandjonas | 2:73b5ca784164 | 253 | LED_0 = 1; |
| quicksandjonas | 2:73b5ca784164 | 254 | LED_1 = 1; |
| quicksandjonas | 2:73b5ca784164 | 255 | LED_2 = 1; |
| quicksandjonas | 2:73b5ca784164 | 256 | LED_3 = 1; |
| quicksandjonas | 2:73b5ca784164 | 257 | } |
| quicksandjonas | 2:73b5ca784164 | 258 | if(busyPlaying == true && player1 != true){ // When playing and there is no winner yet... |
| quicksandjonas | 2:73b5ca784164 | 259 | player2 = true; |
| quicksandjonas | 2:73b5ca784164 | 260 | } |
| quicksandjonas | 2:73b5ca784164 | 261 | |
| quicksandjonas | 1:00a17f5a247c | 262 | } |
| quicksandjonas | 1:00a17f5a247c | 263 | |
| quicksandjonas | 1:00a17f5a247c | 264 | /* ISR for serial timeout */ |
| quicksandjonas | 1:00a17f5a247c | 265 | void sertmout() |
| quicksandjonas | 1:00a17f5a247c | 266 | { |
| quicksandjonas | 1:00a17f5a247c | 267 | ser_timeout = true; |
| quicksandjonas | 1:00a17f5a247c | 268 | } |
