F746ZG UART Interrupt and Software Uart with DFPlayer Mini(PF_13, PF_14)

Dependencies:   mbed SoftSerial

Committer:
angler
Date:
Fri Apr 23 02:58:41 2021 +0000
Revision:
0:2444e79e5540
F746ZG UART_Interrupt and DFPlayer with software uart(PF_13, PF_14)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
angler 0:2444e79e5540 1 #include "mbed.h"
angler 0:2444e79e5540 2 #include "Serial_Interrupt.h"
angler 0:2444e79e5540 3
angler 0:2444e79e5540 4 #ifdef __cplusplus
angler 0:2444e79e5540 5 extern "C" {
angler 0:2444e79e5540 6 #endif
angler 0:2444e79e5540 7
angler 0:2444e79e5540 8 Serial uart1(TX_1, RX_1, 9600);
angler 0:2444e79e5540 9 Serial uart2(TX_2, RX_2, 9600);
angler 0:2444e79e5540 10 Serial uart3(TX_3, RX_3, 9600);
angler 0:2444e79e5540 11 Serial uart4(TX_4, RX_4, 9600);
angler 0:2444e79e5540 12 Serial uart5(TX_5, RX_5, 9600);
angler 0:2444e79e5540 13 Serial uart6(TX_6, RX_6, 9600);
angler 0:2444e79e5540 14 Serial uart7(TX_7, RX_7, 9600);
angler 0:2444e79e5540 15 Serial uart8(TX_8, RX_8, 115200);
angler 0:2444e79e5540 16
angler 0:2444e79e5540 17
angler 0:2444e79e5540 18 int uart1_buffer[UART_BUFFER_SIZE];
angler 0:2444e79e5540 19 int uart2_buffer[UART_BUFFER_SIZE];
angler 0:2444e79e5540 20 int uart3_buffer[UART_BUFFER_SIZE];
angler 0:2444e79e5540 21 int uart4_buffer[UART_BUFFER_SIZE];
angler 0:2444e79e5540 22 int uart5_buffer[UART_BUFFER_SIZE];
angler 0:2444e79e5540 23 int uart6_buffer[UART_BUFFER_SIZE];
angler 0:2444e79e5540 24 int uart7_buffer[UART_BUFFER_SIZE];
angler 0:2444e79e5540 25 int uart8_buffer[UART_BUFFER_SIZE];
angler 0:2444e79e5540 26
angler 0:2444e79e5540 27 int uart1_rx_head = 0;
angler 0:2444e79e5540 28 int uart1_rx_tail = 0;
angler 0:2444e79e5540 29
angler 0:2444e79e5540 30 int uart2_rx_head = 0;
angler 0:2444e79e5540 31 int uart2_rx_tail = 0;
angler 0:2444e79e5540 32
angler 0:2444e79e5540 33 int uart3_rx_head = 0;
angler 0:2444e79e5540 34 int uart3_rx_tail = 0;
angler 0:2444e79e5540 35
angler 0:2444e79e5540 36 int uart4_rx_head = 0;
angler 0:2444e79e5540 37 int uart4_rx_tail = 0;
angler 0:2444e79e5540 38
angler 0:2444e79e5540 39 int uart5_rx_head = 0;
angler 0:2444e79e5540 40 int uart5_rx_tail = 0;
angler 0:2444e79e5540 41
angler 0:2444e79e5540 42 int uart6_rx_head = 0;
angler 0:2444e79e5540 43 int uart6_rx_tail = 0;
angler 0:2444e79e5540 44
angler 0:2444e79e5540 45 int uart7_rx_head = 0;
angler 0:2444e79e5540 46 int uart7_rx_tail = 0;
angler 0:2444e79e5540 47
angler 0:2444e79e5540 48 int uart8_rx_head = 0;
angler 0:2444e79e5540 49 int uart8_rx_tail = 0;
angler 0:2444e79e5540 50
angler 0:2444e79e5540 51 int uart_data1;
angler 0:2444e79e5540 52 int uart_data2;
angler 0:2444e79e5540 53 int uart_data3;
angler 0:2444e79e5540 54 int uart_data4;
angler 0:2444e79e5540 55 int uart_data5;
angler 0:2444e79e5540 56 int uart_data6;
angler 0:2444e79e5540 57 int uart_data7;
angler 0:2444e79e5540 58 int uart_data8;
angler 0:2444e79e5540 59
angler 0:2444e79e5540 60 int uart1_state = 0;
angler 0:2444e79e5540 61 int uart1_checksum = 0;
angler 0:2444e79e5540 62 int uart1_distance = 0;
angler 0:2444e79e5540 63 float range1 = 0;
angler 0:2444e79e5540 64
angler 0:2444e79e5540 65 int uart2_state = 0;
angler 0:2444e79e5540 66 int uart2_checksum = 0;
angler 0:2444e79e5540 67 int uart2_distance = 0;
angler 0:2444e79e5540 68 float range2 = 0;
angler 0:2444e79e5540 69
angler 0:2444e79e5540 70 int uart3_state = 0;
angler 0:2444e79e5540 71 int uart3_checksum = 0;
angler 0:2444e79e5540 72 int uart3_distance = 0;
angler 0:2444e79e5540 73 float range3 = 0;
angler 0:2444e79e5540 74
angler 0:2444e79e5540 75 int uart4_state = 0;
angler 0:2444e79e5540 76 int uart4_checksum = 0;
angler 0:2444e79e5540 77 int uart4_distance = 0;
angler 0:2444e79e5540 78 float range4 = 0;
angler 0:2444e79e5540 79
angler 0:2444e79e5540 80 int uart5_state = 0;
angler 0:2444e79e5540 81 int uart5_checksum = 0;
angler 0:2444e79e5540 82 int uart5_distance = 0;
angler 0:2444e79e5540 83 float range5 = 0;
angler 0:2444e79e5540 84
angler 0:2444e79e5540 85 int uart6_state = 0;
angler 0:2444e79e5540 86 int uart6_checksum = 0;
angler 0:2444e79e5540 87 int uart6_distance = 0;
angler 0:2444e79e5540 88 float range6 = 0;
angler 0:2444e79e5540 89
angler 0:2444e79e5540 90
angler 0:2444e79e5540 91 void Uart1RxHandler()
angler 0:2444e79e5540 92 {
angler 0:2444e79e5540 93 while(uart1.readable())
angler 0:2444e79e5540 94 {
angler 0:2444e79e5540 95 write_uart1_buffer(uart1.getc());
angler 0:2444e79e5540 96 }
angler 0:2444e79e5540 97 }
angler 0:2444e79e5540 98
angler 0:2444e79e5540 99 void Uart2RxHandler()
angler 0:2444e79e5540 100 {
angler 0:2444e79e5540 101 while(uart2.readable())
angler 0:2444e79e5540 102 {
angler 0:2444e79e5540 103 write_uart2_buffer(uart2.getc());
angler 0:2444e79e5540 104 }
angler 0:2444e79e5540 105 }
angler 0:2444e79e5540 106
angler 0:2444e79e5540 107 void Uart3RxHandler()
angler 0:2444e79e5540 108 {
angler 0:2444e79e5540 109 while(uart3.readable())
angler 0:2444e79e5540 110 {
angler 0:2444e79e5540 111 write_uart3_buffer(uart3.getc());
angler 0:2444e79e5540 112 }
angler 0:2444e79e5540 113 }
angler 0:2444e79e5540 114
angler 0:2444e79e5540 115 void Uart4RxHandler()
angler 0:2444e79e5540 116 {
angler 0:2444e79e5540 117 while(uart4.readable())
angler 0:2444e79e5540 118 {
angler 0:2444e79e5540 119 write_uart4_buffer(uart4.getc());
angler 0:2444e79e5540 120 }
angler 0:2444e79e5540 121 }
angler 0:2444e79e5540 122
angler 0:2444e79e5540 123 void Uart5RxHandler()
angler 0:2444e79e5540 124 {
angler 0:2444e79e5540 125 while(uart5.readable())
angler 0:2444e79e5540 126 {
angler 0:2444e79e5540 127 write_uart5_buffer(uart5.getc());
angler 0:2444e79e5540 128 }
angler 0:2444e79e5540 129 }
angler 0:2444e79e5540 130
angler 0:2444e79e5540 131 void Uart6RxHandler()
angler 0:2444e79e5540 132 {
angler 0:2444e79e5540 133 while(uart6.readable())
angler 0:2444e79e5540 134 {
angler 0:2444e79e5540 135 write_uart6_buffer(uart6.getc());
angler 0:2444e79e5540 136 }
angler 0:2444e79e5540 137 }
angler 0:2444e79e5540 138
angler 0:2444e79e5540 139 void Uart7RxHandler()
angler 0:2444e79e5540 140 {
angler 0:2444e79e5540 141 while(uart7.readable())
angler 0:2444e79e5540 142 {
angler 0:2444e79e5540 143 write_uart7_buffer(uart7.getc());
angler 0:2444e79e5540 144 }
angler 0:2444e79e5540 145 }
angler 0:2444e79e5540 146
angler 0:2444e79e5540 147 void Uart8RxHandler()
angler 0:2444e79e5540 148 {
angler 0:2444e79e5540 149 while(uart8.readable())
angler 0:2444e79e5540 150 {
angler 0:2444e79e5540 151 write_uart8_buffer(uart8.getc());
angler 0:2444e79e5540 152 }
angler 0:2444e79e5540 153 }
angler 0:2444e79e5540 154
angler 0:2444e79e5540 155 void range_finder_init(void)
angler 0:2444e79e5540 156 {
angler 0:2444e79e5540 157 uart1.attach(&Uart1RxHandler, Serial::RxIrq);
angler 0:2444e79e5540 158 uart2.attach(&Uart2RxHandler, Serial::RxIrq);
angler 0:2444e79e5540 159 uart3.attach(&Uart3RxHandler, Serial::RxIrq);
angler 0:2444e79e5540 160 uart4.attach(&Uart4RxHandler, Serial::RxIrq);
angler 0:2444e79e5540 161 uart5.attach(&Uart5RxHandler, Serial::RxIrq);
angler 0:2444e79e5540 162 uart6.attach(&Uart6RxHandler, Serial::RxIrq);
angler 0:2444e79e5540 163 uart7.attach(&Uart7RxHandler, Serial::RxIrq);
angler 0:2444e79e5540 164 #ifdef DEBUG8
angler 0:2444e79e5540 165 uart8.attach(&Uart8RxHandler, Serial::RxIrq);
angler 0:2444e79e5540 166 #endif
angler 0:2444e79e5540 167 }
angler 0:2444e79e5540 168
angler 0:2444e79e5540 169 void parse_range(void)
angler 0:2444e79e5540 170 {
angler 0:2444e79e5540 171 uart_data1 = read_uart1();
angler 0:2444e79e5540 172 if(uart_data1 != 0x00)
angler 0:2444e79e5540 173 {
angler 0:2444e79e5540 174 #ifdef DEBUG1
angler 0:2444e79e5540 175 uart8.printf("1 : 0x%02x\r\n",uart_data1);
angler 0:2444e79e5540 176 #endif
angler 0:2444e79e5540 177 if(uart_data1 == 0xFF)
angler 0:2444e79e5540 178 {
angler 0:2444e79e5540 179 uart1_state = 1;
angler 0:2444e79e5540 180 uart1_checksum = 0xFF;
angler 0:2444e79e5540 181 uart1_distance = 0;
angler 0:2444e79e5540 182 range1 = 0;
angler 0:2444e79e5540 183 } else if(uart1_state == 1)
angler 0:2444e79e5540 184 {
angler 0:2444e79e5540 185 uart1_state = 2;
angler 0:2444e79e5540 186 uart1_distance = uart_data1;
angler 0:2444e79e5540 187 uart1_checksum += uart_data1;
angler 0:2444e79e5540 188 } else if(uart1_state == 2)
angler 0:2444e79e5540 189 {
angler 0:2444e79e5540 190 uart1_checksum &= 0x00FF;
angler 0:2444e79e5540 191 if(uart1_checksum == uart_data1)
angler 0:2444e79e5540 192 {
angler 0:2444e79e5540 193 uart1_state = 0;
angler 0:2444e79e5540 194 range1 = uart1_distance / 10.;
angler 0:2444e79e5540 195 #ifdef DEBUG1
angler 0:2444e79e5540 196 uart8.printf("1: %05.1f cm \r\n", range1);
angler 0:2444e79e5540 197 #endif
angler 0:2444e79e5540 198 } else
angler 0:2444e79e5540 199 {
angler 0:2444e79e5540 200 uart1_state = 3;
angler 0:2444e79e5540 201 uart1_distance <<= 8;
angler 0:2444e79e5540 202 uart1_distance += uart_data1;
angler 0:2444e79e5540 203 uart1_checksum += uart_data1;
angler 0:2444e79e5540 204 }
angler 0:2444e79e5540 205 } else if(uart1_state == 3)
angler 0:2444e79e5540 206 {
angler 0:2444e79e5540 207 uart1_checksum &= 0x00FF;
angler 0:2444e79e5540 208 if(uart1_checksum == uart_data1)
angler 0:2444e79e5540 209 {
angler 0:2444e79e5540 210 uart1_state = 0;
angler 0:2444e79e5540 211 range1 = uart1_distance / 10.;
angler 0:2444e79e5540 212 #ifdef DEBUG1
angler 0:2444e79e5540 213 uart8.printf("1: %05.1f cm \r\n", range1);
angler 0:2444e79e5540 214 #endif
angler 0:2444e79e5540 215 }
angler 0:2444e79e5540 216 }
angler 0:2444e79e5540 217 //
angler 0:2444e79e5540 218 }
angler 0:2444e79e5540 219
angler 0:2444e79e5540 220 uart_data2 = read_uart2();
angler 0:2444e79e5540 221 if(uart_data2 != 0x00)
angler 0:2444e79e5540 222 {
angler 0:2444e79e5540 223 #ifdef DEBUG2
angler 0:2444e79e5540 224 uart8.printf("2 : 0x%02x\r\n",uart_data2);
angler 0:2444e79e5540 225 #endif
angler 0:2444e79e5540 226 if(uart_data2 == 0xFF)
angler 0:2444e79e5540 227 {
angler 0:2444e79e5540 228 uart2_state = 1;
angler 0:2444e79e5540 229 uart2_checksum = 0xFF;
angler 0:2444e79e5540 230 uart2_distance = 0;
angler 0:2444e79e5540 231 range2 = 0;
angler 0:2444e79e5540 232 } else if(uart2_state == 1)
angler 0:2444e79e5540 233 {
angler 0:2444e79e5540 234 uart2_state = 2;
angler 0:2444e79e5540 235 uart2_distance = uart_data2;
angler 0:2444e79e5540 236 uart2_checksum += uart_data2;
angler 0:2444e79e5540 237 } else if(uart2_state == 2)
angler 0:2444e79e5540 238 {
angler 0:2444e79e5540 239 uart2_checksum &= 0x00FF;
angler 0:2444e79e5540 240 if(uart2_checksum == uart_data2)
angler 0:2444e79e5540 241 {
angler 0:2444e79e5540 242 uart2_state = 0;
angler 0:2444e79e5540 243 range2 = uart2_distance / 10.;
angler 0:2444e79e5540 244 #ifdef DEBUG2
angler 0:2444e79e5540 245 uart8.printf("2: %05.1f cm \r\n", range2);
angler 0:2444e79e5540 246 #endif
angler 0:2444e79e5540 247 } else
angler 0:2444e79e5540 248 {
angler 0:2444e79e5540 249 uart2_state = 3;
angler 0:2444e79e5540 250 uart2_distance <<= 8;
angler 0:2444e79e5540 251 uart2_distance += uart_data2;
angler 0:2444e79e5540 252 uart2_checksum += uart_data2;
angler 0:2444e79e5540 253 }
angler 0:2444e79e5540 254 } else if(uart2_state == 3)
angler 0:2444e79e5540 255 {
angler 0:2444e79e5540 256 uart2_checksum &= 0x00FF;
angler 0:2444e79e5540 257 if(uart2_checksum == uart_data2)
angler 0:2444e79e5540 258 {
angler 0:2444e79e5540 259 uart2_state = 0;
angler 0:2444e79e5540 260 range2 = uart2_distance / 10.;
angler 0:2444e79e5540 261 #ifdef DEBUG2
angler 0:2444e79e5540 262 uart8.printf("2: %05.1f cm \r\n", range2);
angler 0:2444e79e5540 263 #endif
angler 0:2444e79e5540 264 }
angler 0:2444e79e5540 265 } //
angler 0:2444e79e5540 266 }
angler 0:2444e79e5540 267
angler 0:2444e79e5540 268 uart_data3 = read_uart3();
angler 0:2444e79e5540 269 if(uart_data3 != 0x00)
angler 0:2444e79e5540 270 {
angler 0:2444e79e5540 271 #ifdef DEBUG3
angler 0:2444e79e5540 272 uart8.printf("3 : 0x%02x\r\n",uart_data3);
angler 0:2444e79e5540 273 #endif
angler 0:2444e79e5540 274 if(uart_data3 == 0xFF)
angler 0:2444e79e5540 275 {
angler 0:2444e79e5540 276 uart3_state = 1;
angler 0:2444e79e5540 277 uart3_checksum = 0xFF;
angler 0:2444e79e5540 278 uart3_distance = 0;
angler 0:2444e79e5540 279 range3 = 0;
angler 0:2444e79e5540 280 } else if(uart3_state == 1)
angler 0:2444e79e5540 281 {
angler 0:2444e79e5540 282 uart3_state = 2;
angler 0:2444e79e5540 283 uart3_distance = uart_data3;
angler 0:2444e79e5540 284 uart3_checksum += uart_data3;
angler 0:2444e79e5540 285 } else if(uart3_state == 2)
angler 0:2444e79e5540 286 {
angler 0:2444e79e5540 287 uart3_checksum &= 0x00FF;
angler 0:2444e79e5540 288 if(uart3_checksum == uart_data3)
angler 0:2444e79e5540 289 {
angler 0:2444e79e5540 290 uart3_state = 0;
angler 0:2444e79e5540 291 range3 = uart3_distance / 10.;
angler 0:2444e79e5540 292 #ifdef DEBUG3
angler 0:2444e79e5540 293 uart8.printf("3: %05.1f cm \r\n", range3);
angler 0:2444e79e5540 294 #endif
angler 0:2444e79e5540 295 } else
angler 0:2444e79e5540 296 {
angler 0:2444e79e5540 297 uart3_state = 3;
angler 0:2444e79e5540 298 uart3_distance <<= 8;
angler 0:2444e79e5540 299 uart3_distance += uart_data3;
angler 0:2444e79e5540 300 uart3_checksum += uart_data3;
angler 0:2444e79e5540 301 }
angler 0:2444e79e5540 302 } else if(uart3_state == 3)
angler 0:2444e79e5540 303 {
angler 0:2444e79e5540 304 uart3_checksum &= 0x00FF;
angler 0:2444e79e5540 305 if(uart3_checksum == uart_data3)
angler 0:2444e79e5540 306 {
angler 0:2444e79e5540 307 uart3_state = 0;
angler 0:2444e79e5540 308 range3 = uart3_distance / 10.;
angler 0:2444e79e5540 309 #ifdef DEBUG3
angler 0:2444e79e5540 310 uart8.printf("3: %05.1f cm \r\n", range3);
angler 0:2444e79e5540 311 #endif
angler 0:2444e79e5540 312 }
angler 0:2444e79e5540 313 } //
angler 0:2444e79e5540 314 }
angler 0:2444e79e5540 315
angler 0:2444e79e5540 316 uart_data4 = read_uart4();
angler 0:2444e79e5540 317 if(uart_data4 != 0x00)
angler 0:2444e79e5540 318 {
angler 0:2444e79e5540 319 #ifdef DEBUG4
angler 0:2444e79e5540 320 uart8.printf("4 : 0x%02x\r\n",uart_data4);
angler 0:2444e79e5540 321 #endif
angler 0:2444e79e5540 322 if(uart_data4 == 0xFF)
angler 0:2444e79e5540 323 {
angler 0:2444e79e5540 324 uart4_state = 1;
angler 0:2444e79e5540 325 uart4_checksum = 0xFF;
angler 0:2444e79e5540 326 uart4_distance = 0;
angler 0:2444e79e5540 327 range4 = 0;
angler 0:2444e79e5540 328 } else if(uart4_state == 1)
angler 0:2444e79e5540 329 {
angler 0:2444e79e5540 330 uart4_state = 2;
angler 0:2444e79e5540 331 uart4_distance = uart_data4;
angler 0:2444e79e5540 332 uart4_checksum += uart_data4;
angler 0:2444e79e5540 333 } else if(uart4_state == 2)
angler 0:2444e79e5540 334 {
angler 0:2444e79e5540 335 uart4_checksum &= 0x00FF;
angler 0:2444e79e5540 336 if(uart4_checksum == uart_data4)
angler 0:2444e79e5540 337 {
angler 0:2444e79e5540 338 uart4_state = 0;
angler 0:2444e79e5540 339 range4 = uart4_distance / 10.;
angler 0:2444e79e5540 340 #ifdef DEBUG4
angler 0:2444e79e5540 341 uart8.printf("4: %05.1f cm \r\n", range4);
angler 0:2444e79e5540 342 #endif
angler 0:2444e79e5540 343 } else
angler 0:2444e79e5540 344 {
angler 0:2444e79e5540 345 uart4_state = 3;
angler 0:2444e79e5540 346 uart4_distance <<= 8;
angler 0:2444e79e5540 347 uart4_distance += uart_data4;
angler 0:2444e79e5540 348 uart4_checksum += uart_data4;
angler 0:2444e79e5540 349 }
angler 0:2444e79e5540 350 } else if(uart4_state == 3)
angler 0:2444e79e5540 351 {
angler 0:2444e79e5540 352 uart4_checksum &= 0x00FF;
angler 0:2444e79e5540 353 if(uart4_checksum == uart_data4)
angler 0:2444e79e5540 354 {
angler 0:2444e79e5540 355 uart4_state = 0;
angler 0:2444e79e5540 356 range4 = uart4_distance / 10.;
angler 0:2444e79e5540 357 #ifdef DEBUG4
angler 0:2444e79e5540 358 uart8.printf("4: %05.1f cm \r\n", range4);
angler 0:2444e79e5540 359 #endif
angler 0:2444e79e5540 360 }
angler 0:2444e79e5540 361 } //
angler 0:2444e79e5540 362 }
angler 0:2444e79e5540 363
angler 0:2444e79e5540 364 uart_data5 = read_uart5();
angler 0:2444e79e5540 365 if(uart_data5 != 0x00)
angler 0:2444e79e5540 366 {
angler 0:2444e79e5540 367 #ifdef DEBUG5
angler 0:2444e79e5540 368 uart8.printf("5 : 0x%02x\r\n",uart_data5);
angler 0:2444e79e5540 369 #endif
angler 0:2444e79e5540 370 if(uart_data5 == 0xFF)
angler 0:2444e79e5540 371 {
angler 0:2444e79e5540 372 uart5_state = 1;
angler 0:2444e79e5540 373 uart5_checksum = 0xFF;
angler 0:2444e79e5540 374 uart5_distance = 0;
angler 0:2444e79e5540 375 range5 = 0;
angler 0:2444e79e5540 376 } else if(uart5_state == 1)
angler 0:2444e79e5540 377 {
angler 0:2444e79e5540 378 uart5_state = 2;
angler 0:2444e79e5540 379 uart5_distance = uart_data5;
angler 0:2444e79e5540 380 uart5_checksum += uart_data5;
angler 0:2444e79e5540 381 } else if(uart5_state == 2)
angler 0:2444e79e5540 382 {
angler 0:2444e79e5540 383 uart5_checksum &= 0x00FF;
angler 0:2444e79e5540 384 if(uart5_checksum == uart_data5)
angler 0:2444e79e5540 385 {
angler 0:2444e79e5540 386 uart5_state = 0;
angler 0:2444e79e5540 387 range5 = uart5_distance / 10.;
angler 0:2444e79e5540 388 #ifdef DEBUG5
angler 0:2444e79e5540 389 uart8.printf("5: %05.1f cm \r\n", range5);
angler 0:2444e79e5540 390 #endif
angler 0:2444e79e5540 391 } else
angler 0:2444e79e5540 392 {
angler 0:2444e79e5540 393 uart5_state = 3;
angler 0:2444e79e5540 394 uart5_distance <<= 8;
angler 0:2444e79e5540 395 uart5_distance += uart_data5;
angler 0:2444e79e5540 396 uart5_checksum += uart_data5;
angler 0:2444e79e5540 397 }
angler 0:2444e79e5540 398 } else if(uart5_state == 3)
angler 0:2444e79e5540 399 {
angler 0:2444e79e5540 400 uart5_checksum &= 0x00FF;
angler 0:2444e79e5540 401 if(uart5_checksum == uart_data5)
angler 0:2444e79e5540 402 {
angler 0:2444e79e5540 403 uart5_state = 0;
angler 0:2444e79e5540 404 range5 = uart5_distance / 10.;
angler 0:2444e79e5540 405 #ifdef DEBUG5
angler 0:2444e79e5540 406 uart8.printf("5: %05.1f cm \r\n", range5);
angler 0:2444e79e5540 407 #endif
angler 0:2444e79e5540 408 }
angler 0:2444e79e5540 409 } //
angler 0:2444e79e5540 410 }
angler 0:2444e79e5540 411
angler 0:2444e79e5540 412 uart_data6 = read_uart6();
angler 0:2444e79e5540 413 if(uart_data6 != 0x00)
angler 0:2444e79e5540 414 {
angler 0:2444e79e5540 415 #ifdef DEBUG6
angler 0:2444e79e5540 416 uart8.printf("6 : 0x%02x\r\n",uart_data6);
angler 0:2444e79e5540 417 #endif
angler 0:2444e79e5540 418 if(uart_data6 == 0xFF)
angler 0:2444e79e5540 419 {
angler 0:2444e79e5540 420 uart6_state = 1;
angler 0:2444e79e5540 421 uart6_checksum = 0xFF;
angler 0:2444e79e5540 422 uart6_distance = 0;
angler 0:2444e79e5540 423 range6 = 0;
angler 0:2444e79e5540 424 } else if(uart6_state == 1)
angler 0:2444e79e5540 425 {
angler 0:2444e79e5540 426 uart6_state = 2;
angler 0:2444e79e5540 427 uart6_distance = uart_data6;
angler 0:2444e79e5540 428 uart6_checksum += uart_data6;
angler 0:2444e79e5540 429 } else if(uart6_state == 2)
angler 0:2444e79e5540 430 {
angler 0:2444e79e5540 431 uart6_checksum &= 0x00FF;
angler 0:2444e79e5540 432 if(uart6_checksum == uart_data6)
angler 0:2444e79e5540 433 {
angler 0:2444e79e5540 434 uart6_state = 0;
angler 0:2444e79e5540 435 range6 = uart6_distance / 10.;
angler 0:2444e79e5540 436 #ifdef DEBUG6
angler 0:2444e79e5540 437 uart8.printf("6: %05.1f cm \r\n", range6);
angler 0:2444e79e5540 438 #endif
angler 0:2444e79e5540 439 } else
angler 0:2444e79e5540 440 {
angler 0:2444e79e5540 441 uart6_state = 3;
angler 0:2444e79e5540 442 uart6_distance <<= 8;
angler 0:2444e79e5540 443 uart6_distance += uart_data6;
angler 0:2444e79e5540 444 uart6_checksum += uart_data6;
angler 0:2444e79e5540 445 }
angler 0:2444e79e5540 446 } else if(uart6_state == 3)
angler 0:2444e79e5540 447 {
angler 0:2444e79e5540 448 uart6_checksum &= 0x00FF;
angler 0:2444e79e5540 449 if(uart6_checksum == uart_data6)
angler 0:2444e79e5540 450 {
angler 0:2444e79e5540 451 uart6_state = 0;
angler 0:2444e79e5540 452 range6 = uart6_distance / 10.;
angler 0:2444e79e5540 453 #ifdef DEBUG6
angler 0:2444e79e5540 454 uart8.printf("6: %05.1f cm \r\n", range6);
angler 0:2444e79e5540 455 #endif
angler 0:2444e79e5540 456 }
angler 0:2444e79e5540 457 } //
angler 0:2444e79e5540 458 }
angler 0:2444e79e5540 459
angler 0:2444e79e5540 460 // uart_data7 = read_uart7();
angler 0:2444e79e5540 461 // if(uart_data7 != 0x00)
angler 0:2444e79e5540 462 // {
angler 0:2444e79e5540 463 //#ifdef DEBUG7
angler 0:2444e79e5540 464 // uart8.printf("7 : 0x%02x\r\n",uart_data7);
angler 0:2444e79e5540 465 //#endif //
angler 0:2444e79e5540 466 // }
angler 0:2444e79e5540 467
angler 0:2444e79e5540 468 uart_data8 = read_uart8();
angler 0:2444e79e5540 469 if(uart_data8 != 0x00)
angler 0:2444e79e5540 470 {
angler 0:2444e79e5540 471 #ifdef DEBUG8
angler 0:2444e79e5540 472 uart8.printf("8 : 0x%02x\r\n",uart_data8);
angler 0:2444e79e5540 473 #endif //
angler 0:2444e79e5540 474 }
angler 0:2444e79e5540 475 }
angler 0:2444e79e5540 476
angler 0:2444e79e5540 477 int read_uart1(void)
angler 0:2444e79e5540 478 {
angler 0:2444e79e5540 479 int read_data;
angler 0:2444e79e5540 480 if(uart1_rx_tail == uart1_rx_head)
angler 0:2444e79e5540 481 {
angler 0:2444e79e5540 482 return 0;
angler 0:2444e79e5540 483 } else
angler 0:2444e79e5540 484 {
angler 0:2444e79e5540 485 read_data = uart1_buffer[uart1_rx_tail];
angler 0:2444e79e5540 486 uart1_rx_tail++;
angler 0:2444e79e5540 487 uart1_rx_tail %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 488 return read_data;
angler 0:2444e79e5540 489 }
angler 0:2444e79e5540 490 }
angler 0:2444e79e5540 491
angler 0:2444e79e5540 492 int read_uart2(void)
angler 0:2444e79e5540 493 {
angler 0:2444e79e5540 494 int read_data;
angler 0:2444e79e5540 495 if(uart2_rx_tail == uart2_rx_head)
angler 0:2444e79e5540 496 {
angler 0:2444e79e5540 497 return 0;
angler 0:2444e79e5540 498 } else
angler 0:2444e79e5540 499 {
angler 0:2444e79e5540 500 read_data = uart2_buffer[uart2_rx_tail];
angler 0:2444e79e5540 501 uart2_rx_tail++;
angler 0:2444e79e5540 502 uart2_rx_tail %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 503 return read_data;
angler 0:2444e79e5540 504 }
angler 0:2444e79e5540 505 }
angler 0:2444e79e5540 506
angler 0:2444e79e5540 507 int read_uart3(void)
angler 0:2444e79e5540 508 {
angler 0:2444e79e5540 509 int read_data;
angler 0:2444e79e5540 510 if(uart3_rx_tail == uart3_rx_head)
angler 0:2444e79e5540 511 {
angler 0:2444e79e5540 512 return 0;
angler 0:2444e79e5540 513 } else
angler 0:2444e79e5540 514 {
angler 0:2444e79e5540 515 read_data = uart3_buffer[uart3_rx_tail];
angler 0:2444e79e5540 516 uart3_rx_tail++;
angler 0:2444e79e5540 517 uart3_rx_tail %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 518 return read_data;
angler 0:2444e79e5540 519 }
angler 0:2444e79e5540 520 }
angler 0:2444e79e5540 521
angler 0:2444e79e5540 522 int read_uart4(void)
angler 0:2444e79e5540 523 {
angler 0:2444e79e5540 524 int read_data;
angler 0:2444e79e5540 525 if(uart4_rx_tail == uart4_rx_head)
angler 0:2444e79e5540 526 {
angler 0:2444e79e5540 527 return 0;
angler 0:2444e79e5540 528 } else
angler 0:2444e79e5540 529 {
angler 0:2444e79e5540 530 read_data = uart4_buffer[uart4_rx_tail];
angler 0:2444e79e5540 531 uart4_rx_tail++;
angler 0:2444e79e5540 532 uart4_rx_tail %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 533 return read_data;
angler 0:2444e79e5540 534 }
angler 0:2444e79e5540 535 }
angler 0:2444e79e5540 536
angler 0:2444e79e5540 537 int read_uart5(void)
angler 0:2444e79e5540 538 {
angler 0:2444e79e5540 539 int read_data;
angler 0:2444e79e5540 540 if(uart5_rx_tail == uart5_rx_head)
angler 0:2444e79e5540 541 {
angler 0:2444e79e5540 542 return 0;
angler 0:2444e79e5540 543 } else
angler 0:2444e79e5540 544 {
angler 0:2444e79e5540 545 read_data = uart5_buffer[uart5_rx_tail];
angler 0:2444e79e5540 546 uart5_rx_tail++;
angler 0:2444e79e5540 547 uart5_rx_tail %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 548 return read_data;
angler 0:2444e79e5540 549 }
angler 0:2444e79e5540 550 }
angler 0:2444e79e5540 551
angler 0:2444e79e5540 552 int read_uart6(void)
angler 0:2444e79e5540 553 {
angler 0:2444e79e5540 554 int read_data;
angler 0:2444e79e5540 555 if(uart6_rx_tail == uart6_rx_head)
angler 0:2444e79e5540 556 {
angler 0:2444e79e5540 557 return 0;
angler 0:2444e79e5540 558 } else
angler 0:2444e79e5540 559 {
angler 0:2444e79e5540 560 read_data = uart6_buffer[uart6_rx_tail];
angler 0:2444e79e5540 561 uart6_rx_tail++;
angler 0:2444e79e5540 562 uart6_rx_tail %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 563 return read_data;
angler 0:2444e79e5540 564 }
angler 0:2444e79e5540 565 }
angler 0:2444e79e5540 566
angler 0:2444e79e5540 567 int read_uart7(void)
angler 0:2444e79e5540 568 {
angler 0:2444e79e5540 569 int read_data;
angler 0:2444e79e5540 570 if(uart7_rx_tail == uart7_rx_head)
angler 0:2444e79e5540 571 {
angler 0:2444e79e5540 572 return 0;
angler 0:2444e79e5540 573 } else
angler 0:2444e79e5540 574 {
angler 0:2444e79e5540 575 read_data = uart7_buffer[uart7_rx_tail];
angler 0:2444e79e5540 576 uart7_rx_tail++;
angler 0:2444e79e5540 577 uart7_rx_tail %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 578 return read_data;
angler 0:2444e79e5540 579 }
angler 0:2444e79e5540 580 }
angler 0:2444e79e5540 581
angler 0:2444e79e5540 582 int read_uart8(void)
angler 0:2444e79e5540 583 {
angler 0:2444e79e5540 584 int read_data;
angler 0:2444e79e5540 585 if(uart8_rx_tail == uart8_rx_head)
angler 0:2444e79e5540 586 {
angler 0:2444e79e5540 587 return 0;
angler 0:2444e79e5540 588 } else
angler 0:2444e79e5540 589 {
angler 0:2444e79e5540 590 read_data = uart8_buffer[uart8_rx_tail];
angler 0:2444e79e5540 591 uart8_rx_tail++;
angler 0:2444e79e5540 592 uart8_rx_tail %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 593 return read_data;
angler 0:2444e79e5540 594 }
angler 0:2444e79e5540 595 }
angler 0:2444e79e5540 596
angler 0:2444e79e5540 597 void write_uart1_buffer(int in_data)
angler 0:2444e79e5540 598 {
angler 0:2444e79e5540 599 uart1_buffer[uart1_rx_head++] = in_data;
angler 0:2444e79e5540 600 uart1_rx_head %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 601 }
angler 0:2444e79e5540 602
angler 0:2444e79e5540 603 void write_uart2_buffer(int in_data)
angler 0:2444e79e5540 604 {
angler 0:2444e79e5540 605 uart2_buffer[uart2_rx_head++] = in_data;
angler 0:2444e79e5540 606 uart2_rx_head %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 607 }
angler 0:2444e79e5540 608
angler 0:2444e79e5540 609 void write_uart3_buffer(int in_data)
angler 0:2444e79e5540 610 {
angler 0:2444e79e5540 611 uart3_buffer[uart3_rx_head++] = in_data;
angler 0:2444e79e5540 612 uart3_rx_head %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 613 }
angler 0:2444e79e5540 614
angler 0:2444e79e5540 615 void write_uart4_buffer(int in_data)
angler 0:2444e79e5540 616 {
angler 0:2444e79e5540 617 uart4_buffer[uart4_rx_head++] = in_data;
angler 0:2444e79e5540 618 uart4_rx_head %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 619 }
angler 0:2444e79e5540 620
angler 0:2444e79e5540 621 void write_uart5_buffer(int in_data)
angler 0:2444e79e5540 622 {
angler 0:2444e79e5540 623 uart5_buffer[uart5_rx_head++] = in_data;
angler 0:2444e79e5540 624 uart5_rx_head %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 625 }
angler 0:2444e79e5540 626
angler 0:2444e79e5540 627 void write_uart6_buffer(int in_data)
angler 0:2444e79e5540 628 {
angler 0:2444e79e5540 629 uart6_buffer[uart6_rx_head++] = in_data;
angler 0:2444e79e5540 630 uart6_rx_head %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 631 }
angler 0:2444e79e5540 632
angler 0:2444e79e5540 633 void write_uart7_buffer(int in_data)
angler 0:2444e79e5540 634 {
angler 0:2444e79e5540 635 uart7_buffer[uart7_rx_head++] = in_data;
angler 0:2444e79e5540 636 uart7_rx_head %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 637 }
angler 0:2444e79e5540 638
angler 0:2444e79e5540 639 void write_uart8_buffer(int in_data)
angler 0:2444e79e5540 640 {
angler 0:2444e79e5540 641 uart8_buffer[uart8_rx_head++] = in_data;
angler 0:2444e79e5540 642 uart8_rx_head %= UART_BUFFER_SIZE;
angler 0:2444e79e5540 643 }
angler 0:2444e79e5540 644
angler 0:2444e79e5540 645
angler 0:2444e79e5540 646 #ifdef __cplusplus
angler 0:2444e79e5540 647 }
angler 0:2444e79e5540 648 #endif