Read IMU data at Serial port (p28, p27), data rate <100Hz @115200bps Read 5 channels PPM signal at p11 using InterruptIn Send data via RF Modem at serial port (p13, p14) in 36Hz @115200 Drive i2C motor speed controller at I2C port (p9, p10) in every 10mS (control loop delay time)

Dependencies:   mbed

Revision:
0:7ccd56e1c3b1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ahrs.h	Wed Aug 11 01:23:42 2010 +0000
@@ -0,0 +1,72 @@
+#define Ahrs_num 40
+#define start 0
+#define head1 0xFF
+#define head2 0xFF
+#define check1 1
+#define check2 2
+
+unsigned char buf[1000], head[2], q[41], ck[1], data_idx = 0;
+char AHRS[Ahrs_num], check_ahrs = start, checkdata = 0, checksum;
+
+
+void IMU_Update(){
+    fcc.roll = IMU.roll;
+    fcc.pitch = IMU.pitch;
+    fcc.yaw = IMU.yaw;
+    fcc.g_roll = IMU.g_roll;
+    fcc.g_pitch = IMU.g_pitch;
+    fcc.g_yaw = IMU.g_yaw;
+    fcc.acc_x = IMU.acc_x;
+    fcc.acc_y = IMU.acc_y;
+    fcc.acc_z = IMU.acc_z;
+} 
+        
+
+void Get_AHRS(char *data){
+    int i;
+    char *dTemp = (char *) &IMU;
+    
+    for(i=0; i<Ahrs_num; i++) *(dTemp+i) = *(data+i);
+    IMU_Update();
+}   
+
+void ahrs_data(unsigned char data){
+    
+    if(check_ahrs == start){
+        if(data == head1) check_ahrs = check1;
+        else check_ahrs = start;
+        }
+    
+    else if(check_ahrs == check1){
+        if(data == head2) check_ahrs = check2;
+        else check_ahrs = start;
+        }
+    
+    else if(check_ahrs == check2){
+        AHRS[data_idx] = data;
+        if(data_idx<(Ahrs_num-1)){                  
+             //checkdata ^= AHRS[data_idx];
+             data_idx++;
+             if(data_idx == 3) data_idx = 4;
+        }
+        else{
+            checksum = data;
+            //if(checksum == checkdata)
+            Get_AHRS(AHRS);                        
+            data_idx = 0;
+            check_ahrs = start;
+        }                  
+    }
+    
+    else{
+        data_idx = 0;
+        check_ahrs = start;
+    }
+}  
+
+void ahrs_rec(){      
+    unsigned char data;
+    data = ahrs.getc();
+    ahrs_data(data);
+    //pc.putc(data);
+}
\ No newline at end of file