ROBOTIC CHAMPION TEAM / Mbed 2 deprecated Robotics_LAB_UART

Dependencies:   mbed

Fork of Robotics_LAB_UART by NTHUPME_Robotics_2017

main.cpp

Committer:
hoting
Date:
2017-03-25
Revision:
0:d41917b28387
Child:
1:db577024d9ab

File content as of revision 0:d41917b28387:

#include "mbed.h"

Ticker timer1;
Serial bt(D10, D2);  // TXpin, RXpin

//RX
int readcount = 0;
int RX_flag1 = 0;
int RX_flag2 = 0;
char getData[6] = {0,0,0,0,0,0};
short data_received[3] = {0,0,0};
short data_received_old[3] = {0,0,0};

//函式宣告
void init_TIMER();
void timer1_ITR();
void init_UART();
void RX_ITR();

int main()
{
    init_TIMER();
    init_UART();
    while(1) {
    }
}

void init_TIMER()
{
    timer1.attach_us(&timer1_ITR, 10000.0); // the address of the function to be attached (timer1_ITR) and the interval (1000 micro-seconds)
}

void init_UART()
{
    bt.baud(115200);  // baud rate設為115200
    bt.attach(&RX_ITR, Serial::RxIrq);  // Attach a function(RX_ITR) to call whenever a serial interrupt is generated.
}

void timer1_ITR()
{
    // 避免收到錯誤資料,若超出設定範圍則用上次的資料
    if(data_received[0]>300 || data_received[0]<-300 || data_received[1]>300 || data_received[1]<-300 || data_received[2]>90 || data_received[0]<-90) {
        data_received[0] = data_received_old[0];
        data_received[1] = data_received_old[1];
        data_received[2] = data_received_old[2];
    } else {
        data_received_old[0] = data_received[0];
        data_received_old[1] = data_received[1];
        data_received_old[2] = data_received[2];
    }
}

void RX_ITR()
{
    while(bt.readable()) {
        static char uart_read;
        uart_read = bt.getc();
        if(uart_read == 127 && RX_flag1 == 1) {
            RX_flag2 = 1;
        } else {
            RX_flag1 = 0;
        }

        if(RX_flag2 == 1) {
            getData[readcount] = uart_read;
            readcount++;
            if(readcount >= 3) {
                readcount = 0;
                RX_flag2 = 0;
                ///code for decoding///
                data_received[0] = (getData[2] << 8) | getData[1];


                ///////////////////////
            }
        } else if(uart_read == 254 && RX_flag1 == 0) {
            RX_flag1 = 1;
        }
    }
}