NucleoF401RE A/D Envelope detection with Moving average, transfer via XBww

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers sub.hpp Source File

sub.hpp

00001 unsigned char rxFIFO[256], txFIFO[256], raw_data[6];
00002 unsigned char rx_top, rx_end, tx_top, tx_end, phase;
00003 int timer_value[6];
00004 
00005 RawSerial xbee(PA_2, PA_3);
00006 Ticker timer_setup;
00007 AnalogIn analog_value0(A0);
00008 AnalogIn analog_value1(A1);
00009 AnalogIn analog_value2(A2);
00010 AnalogIn analog_value3(A3);
00011 DigitalOut myled(LED1);
00012 
00013 void common_setup(){
00014     rx_top = rx_end = tx_top = tx_end = phase = 0; 
00015 }
00016 
00017 void timer_interrupt(){
00018     int i;
00019     for (i=0; i<6; i++) ++timer_value[i] &= 65535;
00020 }
00021 
00022 void tx_fifo_check(){
00023     if(xbee.writeable() == 1){
00024         if(tx_top != tx_end){
00025             xbee.putc(txFIFO[tx_end]);
00026             ++tx_end &= 255;
00027         }
00028     }
00029 }
00030 
00031 int rx_fifo_check(){
00032     unsigned char data;
00033     if(rx_top != rx_end){
00034         data = rxFIFO[rx_end];
00035         ++rx_end &= 255;
00036         if (data < 33){
00037             phase = 0;
00038             return(1);
00039         }
00040         raw_data[phase] = data;
00041         if(++phase > 5) phase = 0;
00042         return(0);
00043     }
00044     return(0);
00045 }
00046 
00047 void rx_fifoset(void){
00048     rxFIFO[rx_top] = xbee.getc();
00049     ++rx_top &= 255;
00050 }
00051 
00052 void tx_fifoset(unsigned char data){
00053     txFIFO[tx_top] = data;
00054     ++tx_top &= 255;
00055 }
00056 
00057 unsigned char hex_conv(unsigned char data){
00058     data &= 15;
00059     if(data < 10) return(data+48);
00060     else return(data+55);
00061 }
00062 
00063 unsigned char conv_hex(unsigned char data){
00064     if((data > 47) && (data < 58)) return(data-48);
00065     else if((data > 64) && (data < 71)) return(data-55);
00066     return(0);
00067 }
00068 
00069 void tx_message(int data){
00070     int i;
00071     for (i=0; i<6; i++) tx_fifoset(hex_conv((data>>(4*(5-i))) & 15));
00072     tx_fifoset(13);
00073 }