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

Committer:
agiembed
Date:
Thu Aug 12 01:08:40 2010 +0000
Revision:
0:bd282c11d296

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
agiembed 0:bd282c11d296 1 Timer tick;
agiembed 0:bd282c11d296 2 InterruptIn rc(p11);
agiembed 0:bd282c11d296 3 short buf_ppm[6];
agiembed 0:bd282c11d296 4 char i = 0, idx, cnt = 0;
agiembed 0:bd282c11d296 5
agiembed 0:bd282c11d296 6
agiembed 0:bd282c11d296 7 void get_PPM(){
agiembed 0:bd282c11d296 8 switch (idx){
agiembed 0:bd282c11d296 9 case 1:
agiembed 0:bd282c11d296 10 RC.roll = buf_ppm[2];
agiembed 0:bd282c11d296 11 RC.throttle = buf_ppm[3];
agiembed 0:bd282c11d296 12 RC.pitch = buf_ppm[4];
agiembed 0:bd282c11d296 13 RC.yaw = buf_ppm[5];
agiembed 0:bd282c11d296 14 RC.sw = buf_ppm[0];
agiembed 0:bd282c11d296 15 break;
agiembed 0:bd282c11d296 16
agiembed 0:bd282c11d296 17 case 2:
agiembed 0:bd282c11d296 18 RC.roll = buf_ppm[3];
agiembed 0:bd282c11d296 19 RC.throttle = buf_ppm[4];
agiembed 0:bd282c11d296 20 RC.pitch = buf_ppm[5];
agiembed 0:bd282c11d296 21 RC.yaw = buf_ppm[0];
agiembed 0:bd282c11d296 22 RC.sw = buf_ppm[1];
agiembed 0:bd282c11d296 23 break;
agiembed 0:bd282c11d296 24
agiembed 0:bd282c11d296 25 case 3:
agiembed 0:bd282c11d296 26 RC.roll = buf_ppm[4];
agiembed 0:bd282c11d296 27 RC.throttle = buf_ppm[5];
agiembed 0:bd282c11d296 28 RC.pitch = buf_ppm[0];
agiembed 0:bd282c11d296 29 RC.yaw = buf_ppm[1];
agiembed 0:bd282c11d296 30 RC.sw = buf_ppm[2];
agiembed 0:bd282c11d296 31 break;
agiembed 0:bd282c11d296 32
agiembed 0:bd282c11d296 33 case 4:
agiembed 0:bd282c11d296 34 RC.roll = buf_ppm[5];
agiembed 0:bd282c11d296 35 RC.throttle = buf_ppm[0];
agiembed 0:bd282c11d296 36 RC.pitch = buf_ppm[1];
agiembed 0:bd282c11d296 37 RC.yaw = buf_ppm[2];
agiembed 0:bd282c11d296 38 RC.sw = buf_ppm[3];
agiembed 0:bd282c11d296 39 break;
agiembed 0:bd282c11d296 40
agiembed 0:bd282c11d296 41 case 5:
agiembed 0:bd282c11d296 42 RC.roll = buf_ppm[0];
agiembed 0:bd282c11d296 43 RC.throttle = buf_ppm[1];
agiembed 0:bd282c11d296 44 RC.pitch = buf_ppm[2];
agiembed 0:bd282c11d296 45 RC.yaw = buf_ppm[3];
agiembed 0:bd282c11d296 46 RC.sw = buf_ppm[4];
agiembed 0:bd282c11d296 47 break;
agiembed 0:bd282c11d296 48
agiembed 0:bd282c11d296 49 case 0:
agiembed 0:bd282c11d296 50 RC.roll = buf_ppm[1];
agiembed 0:bd282c11d296 51 RC.throttle = buf_ppm[2];
agiembed 0:bd282c11d296 52 RC.pitch = buf_ppm[3];
agiembed 0:bd282c11d296 53 RC.yaw = buf_ppm[4];
agiembed 0:bd282c11d296 54 RC.sw = buf_ppm[5];
agiembed 0:bd282c11d296 55 break;
agiembed 0:bd282c11d296 56
agiembed 0:bd282c11d296 57 default: break;
agiembed 0:bd282c11d296 58 }
agiembed 0:bd282c11d296 59 test = buf_ppm[2];
agiembed 0:bd282c11d296 60 if(cnt<100)test1 = test;
agiembed 0:bd282c11d296 61 return;
agiembed 0:bd282c11d296 62 }
agiembed 0:bd282c11d296 63
agiembed 0:bd282c11d296 64
agiembed 0:bd282c11d296 65
agiembed 0:bd282c11d296 66 void gets_PPM(){
agiembed 0:bd282c11d296 67 test = buf_ppm[2];
agiembed 0:bd282c11d296 68 if(cnt<100)test1 = test;
agiembed 0:bd282c11d296 69 //eyetosee();
agiembed 0:bd282c11d296 70 }
agiembed 0:bd282c11d296 71
agiembed 0:bd282c11d296 72 void PPM_rise() {
agiembed 0:bd282c11d296 73 tick.stop(); // Stop timer
agiembed 0:bd282c11d296 74 buf_ppm[i]=tick.read_us(); // Read timer to buffer[i] i=turns
agiembed 0:bd282c11d296 75 tick.reset(); // Reset timer
agiembed 0:bd282c11d296 76 i++; // increment i.
agiembed 0:bd282c11d296 77 if(buf_ppm[i]>5000) idx = i;
agiembed 0:bd282c11d296 78 if(i==6) i = 0;
agiembed 0:bd282c11d296 79 get_PPM();
agiembed 0:bd282c11d296 80 cnt++;
agiembed 0:bd282c11d296 81 if(cnt>200) cnt = 200;
agiembed 0:bd282c11d296 82 tick.start();
agiembed 0:bd282c11d296 83 }
agiembed 0:bd282c11d296 84
agiembed 0:bd282c11d296 85
agiembed 0:bd282c11d296 86 /*
agiembed 0:bd282c11d296 87 Channel 1 = Roll
agiembed 0:bd282c11d296 88 Channel 2 = Throttle
agiembed 0:bd282c11d296 89 Channel 3 = Pitch
agiembed 0:bd282c11d296 90 Channel 4 = Yaw
agiembed 0:bd282c11d296 91 Channel 5 = Switch
agiembed 0:bd282c11d296 92 */