main

Dependencies:   TextLCD mbed PID

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers usart.cpp Source File

usart.cpp

00001 #include "mbed.h"
00002 #include "common.h"
00003 
00004 #define KEYCODE 0xAA
00005 #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])
00006 #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])
00007 #define DATA_NUM 11
00008 #define CHECK (DATA_NUM - 1)
00009 #define ALL_IR 11
00010 
00011 
00012 extern Serial xbee;
00013 extern Serial sensor;
00014 extern Serial pc;
00015 extern DigitalOut myled[4];
00016 
00017 extern uint8_t value_ir, ir_num, ir_dis, ball_on;
00018 extern uint8_t ping[4];
00019 extern uint8_t line[4];
00020 extern uint8_t ir_max, ir_num;
00021 extern int compass;
00022 
00023 int count = 0;
00024 void xbee_tx(){
00025     xbee.putc(1);
00026 }
00027 
00028 void xbee_rx(){
00029     if(xbee.readable()){
00030         count = xbee.getc();
00031     } else {
00032         count = 0;
00033     }
00034     //pc.printf("%d\n", count);
00035 }
00036 
00037 void micon_rx(){
00038     
00039     static uint8_t rx;
00040     static int rx_data[DATA_NUM];
00041     
00042     rx_data[rx] = sensor.getc();
00043     
00044     if(rx_data[0] == KEYCODE){
00045         rx++;
00046     }
00047     
00048     if(rx >= DATA_NUM){
00049         if(rx_data[CHECK] == RX_CHECKCODE){
00050             value_ir = rx_data[1];
00051             ir_num = rx_data[2];
00052             ping[FRONT] = rx_data[3];
00053             ping[LEFT] = rx_data[4];
00054             ping[BACK] = rx_data[5];
00055             ping[RIGHT] = rx_data[6];
00056             compass = rx_data[7] + rx_data[8];
00057             ir_dis = rx_data[9];
00058             //ball_on = rx_data[10];
00059 /*            line[FRONT] = rx_data[7];
00060             line[LEFT] = rx_data[8];
00061             line[BACK] = rx_data[9];
00062             line[RIGHT] = rx_data[10];
00063 */          
00064             //pc.printf("%d %d\n", rx_data[1], rx_data[2]); 
00065             //pc.printf("%d %d %d %d\n", rx_data[3], rx_data[4], rx_data[5], rx_data[6]);
00066             //pc.printf("%d %d %d %d\n", rx_data[7], rx_data[8], rx_data[9], rx_data[10]);
00067             //pc.printf("%d %d %d\n", rx_data[7], rx_data[8], compass);
00068             //pc.printf("%d\n", rx_data[7]);
00069             //pc.printf("%d\t%d\t%d\t%d\n", ping[FRONT], ping[LEFT], ping[BACK], ping[RIGHT]);
00070             //pc.printf("%d %d  %d\n", ping[LEFT], ping[RIGHT], ping[LEFT] + ping[RIGHT]);
00071             //pc.printf("%d\t%d\t%d\t%d\n", ir_dis, ball_on, value_ir, ir_num);
00072         }
00073      rx = 0;   
00074     }
00075     //pc.printf("%d\n", rx_data[rx]);
00076 }
00077 
00078 /*
00079 void micon_tx(){
00080     
00081     static uint8_t tx;
00082     static uint8_t tx_data[DATA_NUM];
00083     
00084     if(tx >= DATA_NUM){
00085         tx_data[0] = KEYCODE;
00086         tx_data[1] = KEYCODE;
00087         tx_data[2] = KEYCODE;
00088         tx_data[3] = KEYCODE;
00089         tx_data[4] = KEYCODE;
00090         tx_data[5] = KEYCODE;
00091         tx_data[6] = KEYCODE;
00092         tx_data[7] = KEYCODE;
00093         tx_data[8] = KEYCODE;
00094         tx_data[9] = KEYCODE;
00095         tx_data[10] = KEYCODE;
00096         tx_data[11] = TX_CHECKCODE;
00097         
00098         tx = 0;
00099     }
00100     
00101     sensor.putc(tx_data[tx]);
00102     tx++;
00103 }
00104 */