2-channel version with host PC control

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "sub.hpp"
00003 #include "FIR_LPF.hpp"
00004 
00005 int main(){
00006     common_setup();
00007     xbee.baud(38400);
00008     xbee.attach(&rx_fifoset, xbee.RxIrq);
00009     timer_setup.attach_us(&timer_interrupt, 5); // 5usec
00010     while(1){
00011         tx_fifo_check();
00012         if(timer_value[1] > 19){ // 0.1msec sampling
00013             timer_value[1] = 0;
00014             float data1 = (float)gain * (analog_value2.read() - 0.5f);  // A/D in (3)
00015             if (data1 < 0) data1 = -data1; // always detection ON
00016             if (fir_lpf != 0) data1 = FIR_calc1(data1);      // FIR calc (1) call
00017             if(timer_value[2] > 2999){  // 15msec
00018                 timer_value[2] = 0;
00019                 if(max_count != 0) data1 = move_mean_calc1(data1);
00020                 tx_message((uint16_t)((data1 + 1.0f) * 2047)<<4);
00021             }
00022         }
00023         if(timer_value[3] > 19){ // 0.1msec sampling
00024             timer_value[3] = 0;
00025             float data2 = (float)gain * (analog_value3.read() - 0.5f);  // A/D in (4)
00026             if (data2 < 0) data2 = -data2; // always detection ON
00027             if (fir_lpf != 0) data2 = FIR_calc2(data2);      // FIR calc (1) call
00028             if(timer_value[4] > 2999){  // 15msec
00029                 timer_value[4] = 0;
00030                 if(max_count != 0) data2 = move_mean_calc2(data2);
00031                 tx_message(0x400000 + ((uint16_t)((data2 + 1.0f) * 2047)<<4));
00032             }
00033         }
00034         if(timer_value[0] > 199999){ // 1000msec
00035             timer_value[0] = 0;
00036             myled = !myled;
00037         }
00038         if(rx_fifo_check() == 1){
00039             int sum = 0;
00040             for (int i=0; i<6; i++) sum += conv_hex(raw_data[i])<<(4*(5-i));
00041             tx_message(sum); // Echo Back 
00042             if(sum>>16 == 0x80){
00043                 switch((sum & 0xff00)>>8){
00044                     case 0x00:
00045                         fir_lpf = sum & 0x01;
00046                         break;
00047                     case 0x01:
00048                         gain = sum & 0x0f;
00049                         break;
00050                     case 0x02:
00051                         max_count = sum & 0x7f;
00052                         if (max_count>100) max_count = 100;
00053                         sum_clear();
00054                         break;
00055                 }
00056             }
00057         }        
00058     }
00059 }