Hajime Muraki
/
usart
fuji-usart
Embed:
(wiki syntax)
Show/hide line numbers
usart.cpp
00001 #include "mbed.h" 00002 00003 #define KEYCODE 0xAA 00004 #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]^tx_data[10]) 00005 #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]^rx_data[10]) 00006 #define DATA_NUM 12 00007 #define CHECK (DATA_NUM - 1) 00008 #define ALL_IR 10 00009 00010 00011 00012 extern Serial sensor; 00013 extern Serial pc; 00014 extern unsigned int hangar[ALL_IR]; 00015 00016 void micon_rx(){ 00017 00018 static uint8_t rx; 00019 static uint8_t rx_data[DATA_NUM]; 00020 00021 rx_data[rx] = sensor.getc(); 00022 00023 if(rx_data[0] == KEYCODE){ 00024 rx++; 00025 } 00026 00027 if(rx >= DATA_NUM){ 00028 if(rx_data[CHECK] == RX_CHECKCODE){ 00029 pc.printf("%d %d %d %d %d\n", rx_data[1], rx_data[2], rx_data[3], rx_data[4], rx_data[5]); 00030 } 00031 rx = 0; 00032 } 00033 00034 } 00035 00036 void micon_tx(){ 00037 00038 static uint8_t tx; 00039 static uint8_t tx_data[DATA_NUM]; 00040 00041 if(tx >= DATA_NUM){ 00042 tx_data[0] = KEYCODE; 00043 tx_data[1] = hangar[0]; 00044 tx_data[2] = hangar[1]; 00045 tx_data[3] = hangar[2]; 00046 tx_data[4] = hangar[3]; 00047 tx_data[5] = hangar[4]; 00048 tx_data[6] = hangar[5]; 00049 tx_data[7] = hangar[6]; 00050 tx_data[8] = hangar[7]; 00051 tx_data[9] = hangar[8]; 00052 tx_data[10] = hangar[9]; 00053 tx_data[11] = TX_CHECKCODE; 00054 00055 tx = 0; 00056 } 00057 00058 sensor.putc(tx_data[tx]); 00059 //pc.printf("%d\n", tx_data[tx]); 00060 tx++; 00061 //wait(0.1); 00062 }
Generated on Wed Jul 20 2022 10:40:37 by 1.7.2