version 3 通信方式,マイコン等に変更あり
Dependencies: AQM0802A PID Servo mbed
usart.cpp@4:2857f273a7f4, 2015-03-11 (annotated)
- Committer:
- ryuna
- Date:
- Wed Mar 11 01:03:00 2015 +0000
- Revision:
- 4:2857f273a7f4
- Child:
- 5:09afcbe0c18f
without multiserial
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryuna | 4:2857f273a7f4 | 1 | #include "mbed.h" |
ryuna | 4:2857f273a7f4 | 2 | |
ryuna | 4:2857f273a7f4 | 3 | |
ryuna | 4:2857f273a7f4 | 4 | #define KEYCODE 0xAA |
ryuna | 4:2857f273a7f4 | 5 | #define TX_CHECKCODE (tx_data[1]^tx_data[2]^tx_data[3]^tx_data[4]^tx_data[5]^tx_data[6]^tx_data[7]^tx_data[8]^tx_data[9]) |
ryuna | 4:2857f273a7f4 | 6 | #define RX_CHECKCODE (rx_data[1]^rx_data[2]^rx_data[3]^rx_data[4]^rx_data[5]^rx_data[6]^rx_data[7]^rx_data[8]^rx_data[9]) |
ryuna | 4:2857f273a7f4 | 7 | #define DATA_NUM 11 |
ryuna | 4:2857f273a7f4 | 8 | #define CHECK (DATA_NUM - 1) |
ryuna | 4:2857f273a7f4 | 9 | |
ryuna | 4:2857f273a7f4 | 10 | |
ryuna | 4:2857f273a7f4 | 11 | extern Serial Mbed; |
ryuna | 4:2857f273a7f4 | 12 | extern Serial pc; |
ryuna | 4:2857f273a7f4 | 13 | |
ryuna | 4:2857f273a7f4 | 14 | extern uint8_t PingData[4]; |
ryuna | 4:2857f273a7f4 | 15 | extern uint8_t IrData[3]; |
ryuna | 4:2857f273a7f4 | 16 | extern uint8_t IrNum; |
ryuna | 4:2857f273a7f4 | 17 | extern unsigned int Compass; |
ryuna | 4:2857f273a7f4 | 18 | |
ryuna | 4:2857f273a7f4 | 19 | |
ryuna | 4:2857f273a7f4 | 20 | |
ryuna | 4:2857f273a7f4 | 21 | void micon_rx(){ |
ryuna | 4:2857f273a7f4 | 22 | |
ryuna | 4:2857f273a7f4 | 23 | static uint8_t rx; |
ryuna | 4:2857f273a7f4 | 24 | static int rx_data[DATA_NUM]; |
ryuna | 4:2857f273a7f4 | 25 | |
ryuna | 4:2857f273a7f4 | 26 | rx_data[rx] = Mbed.getc(); |
ryuna | 4:2857f273a7f4 | 27 | |
ryuna | 4:2857f273a7f4 | 28 | if(rx_data[0] == KEYCODE){ |
ryuna | 4:2857f273a7f4 | 29 | rx++; |
ryuna | 4:2857f273a7f4 | 30 | } |
ryuna | 4:2857f273a7f4 | 31 | |
ryuna | 4:2857f273a7f4 | 32 | if(rx >= DATA_NUM){ |
ryuna | 4:2857f273a7f4 | 33 | if(rx_data[CHECK] == RX_CHECKCODE){ |
ryuna | 4:2857f273a7f4 | 34 | IrData[0] = rx_data[1]; |
ryuna | 4:2857f273a7f4 | 35 | IrData[1] = rx_data[2]; |
ryuna | 4:2857f273a7f4 | 36 | IrData[2] = rx_data[3]; |
ryuna | 4:2857f273a7f4 | 37 | PingData[0] = rx_data[4]; |
ryuna | 4:2857f273a7f4 | 38 | PingData[1] = rx_data[5]; |
ryuna | 4:2857f273a7f4 | 39 | PingData[2] = rx_data[6]; |
ryuna | 4:2857f273a7f4 | 40 | PingData[3] = rx_data[7]; |
ryuna | 4:2857f273a7f4 | 41 | Compass = rx_data[8] + rx_data[9]; |
ryuna | 4:2857f273a7f4 | 42 | |
ryuna | 4:2857f273a7f4 | 43 | if((IrData[0] == 255)||(IrData[1] == 255)||(IrData[2] == 255)){ |
ryuna | 4:2857f273a7f4 | 44 | IrNum = 12; |
ryuna | 4:2857f273a7f4 | 45 | |
ryuna | 4:2857f273a7f4 | 46 | }else{ |
ryuna | 4:2857f273a7f4 | 47 | IrNum = IrData[0]/12; |
ryuna | 4:2857f273a7f4 | 48 | } |
ryuna | 4:2857f273a7f4 | 49 | //pc.printf("%d\t %d\t %d\t %d\t %d\t %d\t\n",rx_data[3],rx_data[4],rx_data[5],rx_data[6],rx_data[7],rx_data[8]); |
ryuna | 4:2857f273a7f4 | 50 | //pc.printf("compass: %d\n",compass); |
ryuna | 4:2857f273a7f4 | 51 | //pc.printf("ping0:%d\tping1:%d\tping2:%d\tping3:%d\n",ping[0],ping[1],ping[2],ping[3]); |
ryuna | 4:2857f273a7f4 | 52 | //pc.printf("ir_min:%d\tir_num:%d\tir_main:%d\n",ir_min,ir_num,ir_main); |
ryuna | 4:2857f273a7f4 | 53 | |
ryuna | 4:2857f273a7f4 | 54 | } |
ryuna | 4:2857f273a7f4 | 55 | rx = 0; |
ryuna | 4:2857f273a7f4 | 56 | } |
ryuna | 4:2857f273a7f4 | 57 | |
ryuna | 4:2857f273a7f4 | 58 | //pc.printf("%d\n", rx_data[rx]); |
ryuna | 4:2857f273a7f4 | 59 | } |
ryuna | 4:2857f273a7f4 | 60 | /* |
ryuna | 4:2857f273a7f4 | 61 | void micon_tx(){ |
ryuna | 4:2857f273a7f4 | 62 | |
ryuna | 4:2857f273a7f4 | 63 | static uint8_t tx; |
ryuna | 4:2857f273a7f4 | 64 | static uint8_t tx_data[DATA_NUM]; |
ryuna | 4:2857f273a7f4 | 65 | |
ryuna | 4:2857f273a7f4 | 66 | if(tx >= DATA_NUM){ |
ryuna | 4:2857f273a7f4 | 67 | tx_data[0] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 68 | tx_data[1] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 69 | tx_data[2] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 70 | tx_data[3] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 71 | tx_data[4] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 72 | tx_data[5] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 73 | tx_data[6] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 74 | tx_data[7] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 75 | tx_data[8] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 76 | tx_data[9] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 77 | tx_data[10] = KEYCODE; |
ryuna | 4:2857f273a7f4 | 78 | tx_data[11] = TX_CHECKCODE; |
ryuna | 4:2857f273a7f4 | 79 | |
ryuna | 4:2857f273a7f4 | 80 | tx = 0; |
ryuna | 4:2857f273a7f4 | 81 | } |
ryuna | 4:2857f273a7f4 | 82 | |
ryuna | 4:2857f273a7f4 | 83 | sensor.putc(tx_data[tx]); |
ryuna | 4:2857f273a7f4 | 84 | tx++; |
ryuna | 4:2857f273a7f4 | 85 | } |
ryuna | 4:2857f273a7f4 | 86 | */ |