fuji-usart

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers usart.cpp Source File

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 }