Raharja Agie
/
Mini-X
rc.h@0:d463d5c04541, 2011-08-16 (annotated)
- Committer:
- agiembed
- Date:
- Tue Aug 16 05:32:33 2011 +0000
- Revision:
- 0:d463d5c04541
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
agiembed | 0:d463d5c04541 | 1 | Timer tick; |
agiembed | 0:d463d5c04541 | 2 | InterruptIn rc(p11); |
agiembed | 0:d463d5c04541 | 3 | short buf_ppm[6]; |
agiembed | 0:d463d5c04541 | 4 | char i = 0, idx, cnt = 0; |
agiembed | 0:d463d5c04541 | 5 | |
agiembed | 0:d463d5c04541 | 6 | void get_PPM(){ |
agiembed | 0:d463d5c04541 | 7 | switch (idx){ |
agiembed | 0:d463d5c04541 | 8 | case 1: |
agiembed | 0:d463d5c04541 | 9 | RC.roll = buf_ppm[2]; |
agiembed | 0:d463d5c04541 | 10 | RC.throttle = buf_ppm[3]; |
agiembed | 0:d463d5c04541 | 11 | RC.pitch = buf_ppm[4]; |
agiembed | 0:d463d5c04541 | 12 | RC.yaw = buf_ppm[5]; |
agiembed | 0:d463d5c04541 | 13 | RC.sw = buf_ppm[0]; |
agiembed | 0:d463d5c04541 | 14 | break; |
agiembed | 0:d463d5c04541 | 15 | |
agiembed | 0:d463d5c04541 | 16 | case 2: |
agiembed | 0:d463d5c04541 | 17 | RC.roll = buf_ppm[3]; |
agiembed | 0:d463d5c04541 | 18 | RC.throttle = buf_ppm[4]; |
agiembed | 0:d463d5c04541 | 19 | RC.pitch = buf_ppm[5]; |
agiembed | 0:d463d5c04541 | 20 | RC.yaw = buf_ppm[0]; |
agiembed | 0:d463d5c04541 | 21 | RC.sw = buf_ppm[1]; |
agiembed | 0:d463d5c04541 | 22 | break; |
agiembed | 0:d463d5c04541 | 23 | |
agiembed | 0:d463d5c04541 | 24 | case 3: |
agiembed | 0:d463d5c04541 | 25 | RC.roll = buf_ppm[4]; |
agiembed | 0:d463d5c04541 | 26 | RC.throttle = buf_ppm[5]; |
agiembed | 0:d463d5c04541 | 27 | RC.pitch = buf_ppm[0]; |
agiembed | 0:d463d5c04541 | 28 | RC.yaw = buf_ppm[1]; |
agiembed | 0:d463d5c04541 | 29 | RC.sw = buf_ppm[2]; |
agiembed | 0:d463d5c04541 | 30 | break; |
agiembed | 0:d463d5c04541 | 31 | |
agiembed | 0:d463d5c04541 | 32 | case 4: |
agiembed | 0:d463d5c04541 | 33 | RC.roll = buf_ppm[5]; |
agiembed | 0:d463d5c04541 | 34 | RC.throttle = buf_ppm[0]; |
agiembed | 0:d463d5c04541 | 35 | RC.pitch = buf_ppm[1]; |
agiembed | 0:d463d5c04541 | 36 | RC.yaw = buf_ppm[2]; |
agiembed | 0:d463d5c04541 | 37 | RC.sw = buf_ppm[3]; |
agiembed | 0:d463d5c04541 | 38 | break; |
agiembed | 0:d463d5c04541 | 39 | |
agiembed | 0:d463d5c04541 | 40 | case 5: |
agiembed | 0:d463d5c04541 | 41 | RC.roll = buf_ppm[0]; |
agiembed | 0:d463d5c04541 | 42 | RC.throttle = buf_ppm[1]; |
agiembed | 0:d463d5c04541 | 43 | RC.pitch = buf_ppm[2]; |
agiembed | 0:d463d5c04541 | 44 | RC.yaw = buf_ppm[3]; |
agiembed | 0:d463d5c04541 | 45 | RC.sw = buf_ppm[4]; |
agiembed | 0:d463d5c04541 | 46 | break; |
agiembed | 0:d463d5c04541 | 47 | |
agiembed | 0:d463d5c04541 | 48 | case 0: |
agiembed | 0:d463d5c04541 | 49 | RC.roll = buf_ppm[1]; |
agiembed | 0:d463d5c04541 | 50 | RC.throttle = buf_ppm[2]; |
agiembed | 0:d463d5c04541 | 51 | RC.pitch = buf_ppm[3]; |
agiembed | 0:d463d5c04541 | 52 | RC.yaw = buf_ppm[4]; |
agiembed | 0:d463d5c04541 | 53 | RC.sw = buf_ppm[5]; |
agiembed | 0:d463d5c04541 | 54 | break; |
agiembed | 0:d463d5c04541 | 55 | |
agiembed | 0:d463d5c04541 | 56 | default: break; |
agiembed | 0:d463d5c04541 | 57 | } |
agiembed | 0:d463d5c04541 | 58 | return; |
agiembed | 0:d463d5c04541 | 59 | } |
agiembed | 0:d463d5c04541 | 60 | |
agiembed | 0:d463d5c04541 | 61 | void getrc(){ |
agiembed | 0:d463d5c04541 | 62 | RC.rolls = (RC.roll - 1518) * 0.73; |
agiembed | 0:d463d5c04541 | 63 | RC.throttles = (RC.throttle - 1105) * 0.3; |
agiembed | 0:d463d5c04541 | 64 | RC.pitchs = (RC.pitch - 1514) * 0.73; |
agiembed | 0:d463d5c04541 | 65 | RC.yaws = (RC.yaw - 1518) * 0.73; |
agiembed | 0:d463d5c04541 | 66 | RC.sws = RC.sw - 1518; |
agiembed | 0:d463d5c04541 | 67 | return; |
agiembed | 0:d463d5c04541 | 68 | } |
agiembed | 0:d463d5c04541 | 69 | |
agiembed | 0:d463d5c04541 | 70 | |
agiembed | 0:d463d5c04541 | 71 | short rc_roll(){ |
agiembed | 0:d463d5c04541 | 72 | return (short)(RC.roll);// 1518); |
agiembed | 0:d463d5c04541 | 73 | } |
agiembed | 0:d463d5c04541 | 74 | |
agiembed | 0:d463d5c04541 | 75 | short rc_throttle(){ |
agiembed | 0:d463d5c04541 | 76 | return (short)(RC.throttle);// - 1105); |
agiembed | 0:d463d5c04541 | 77 | } |
agiembed | 0:d463d5c04541 | 78 | |
agiembed | 0:d463d5c04541 | 79 | short rc_pitch(){ |
agiembed | 0:d463d5c04541 | 80 | return (short)(RC.pitch);// - 1514); |
agiembed | 0:d463d5c04541 | 81 | } |
agiembed | 0:d463d5c04541 | 82 | |
agiembed | 0:d463d5c04541 | 83 | short rc_yaw(){ |
agiembed | 0:d463d5c04541 | 84 | return (short)(RC.yaw);// - 1518); |
agiembed | 0:d463d5c04541 | 85 | } |
agiembed | 0:d463d5c04541 | 86 | |
agiembed | 0:d463d5c04541 | 87 | short rc_sw(){ |
agiembed | 0:d463d5c04541 | 88 | return (short)(RC.sw);// - 1518); |
agiembed | 0:d463d5c04541 | 89 | } |
agiembed | 0:d463d5c04541 | 90 | |
agiembed | 0:d463d5c04541 | 91 | |
agiembed | 0:d463d5c04541 | 92 | void PPM_rise() { |
agiembed | 0:d463d5c04541 | 93 | tick.stop(); // Stop timer |
agiembed | 0:d463d5c04541 | 94 | buf_ppm[i]=tick.read_us(); // Read timer to buffer[i] i=turns |
agiembed | 0:d463d5c04541 | 95 | tick.reset(); // Reset timer |
agiembed | 0:d463d5c04541 | 96 | tick.start(); // Start timer |
agiembed | 0:d463d5c04541 | 97 | i++; // increment i. |
agiembed | 0:d463d5c04541 | 98 | if(buf_ppm[i]>5000) idx = i; |
agiembed | 0:d463d5c04541 | 99 | if(i==6) i = 0; |
agiembed | 0:d463d5c04541 | 100 | get_PPM(); |
agiembed | 0:d463d5c04541 | 101 | return; |
agiembed | 0:d463d5c04541 | 102 | } |
agiembed | 0:d463d5c04541 | 103 | |
agiembed | 0:d463d5c04541 | 104 | |
agiembed | 0:d463d5c04541 | 105 | /* |
agiembed | 0:d463d5c04541 | 106 | Channel 1 = Roll |
agiembed | 0:d463d5c04541 | 107 | Channel 2 = Throttle |
agiembed | 0:d463d5c04541 | 108 | Channel 3 = Pitch |
agiembed | 0:d463d5c04541 | 109 | Channel 4 = Yaw |
agiembed | 0:d463d5c04541 | 110 | Channel 5 = Switch |
agiembed | 0:d463d5c04541 | 111 | */ |