Rev 1933 | Rev 2034 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1933 | Rev 2008 | ||
---|---|---|---|
Line 18... | Line 18... | ||
18 | volatile char Channels,tmpChannels = 0; |
18 | volatile char Channels,tmpChannels = 0; |
19 | volatile unsigned char NewPpmData = 1; |
19 | volatile unsigned char NewPpmData = 1; |
20 | unsigned int PPM_Neutral = 466; |
20 | unsigned int PPM_Neutral = 466; |
Line 21... | Line 21... | ||
21 | 21 | ||
22 | //############################################################################ |
- | |
23 | //zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
22 | //############################################################################ |
24 | //Capture Funktion benutzt: |
23 | // Clear the values |
25 | void rc_sum_init (void) |
24 | void rc_sum_init (void) |
26 | //############################################################################ |
25 | //############################################################################ |
27 | { |
26 | { |
28 | unsigned char i; |
27 | unsigned char i; |
Line 37... | Line 36... | ||
37 | return; |
36 | return; |
38 | } |
37 | } |
Line 39... | Line 38... | ||
39 | 38 | ||
40 | #ifndef ACT_S3D_SUMMENSIGNAL |
39 | #ifndef ACT_S3D_SUMMENSIGNAL |
41 | //############################################################################ |
40 | //############################################################################ |
42 | //Diese Routine startet und inizialisiert den Timer für RC |
41 | // Interrupt function for the PPM-Input |
43 | ISR(TIMER1_CAPT_vect) |
42 | ISR(TIMER1_CAPT_vect) |
44 | //############################################################################ |
43 | //############################################################################ |
45 | { |
44 | { |
46 | if(!(EE_Parameter.ExtraConfig & CFG_SENSITIVE_RC)) |
45 | if(!(EE_Parameter.ExtraConfig & CFG_SENSITIVE_RC)) |
Line 64... | Line 63... | ||
64 | { |
63 | { |
65 | if((signal > 250) && (signal < 687)) |
64 | if((signal > 250) && (signal < 687)) |
66 | { |
65 | { |
67 | signal -= PPM_Neutral; |
66 | signal -= PPM_Neutral; |
68 | // Stabiles Signal |
67 | // Stabiles Signal |
- | 68 | if(EE_Parameter.FailsafeChannel == 0 || PPM_in[EE_Parameter.FailsafeChannel] < 100) // forces Failsafe if the receiver doesn't have 'signal loss' on Failsafe |
|
- | 69 | { |
|
69 | if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10; else SenderOkay = 200;} |
70 | if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10; else SenderOkay = 200;} |
- | 71 | } |
|
70 | tmp = (3 * (PPM_in[index]) + signal) / 4; |
72 | tmp = (3 * (PPM_in[index]) + signal) / 4; |
71 | if(tmp > signal+1) tmp--; else |
73 | if(tmp > signal+1) tmp--; else |
72 | if(tmp < signal-1) tmp++; |
74 | if(tmp < signal-1) tmp++; |
73 | if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
75 | if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
74 | else PPM_diff[index] = 0; |
76 | else PPM_diff[index] = 0; |
Line 133... | Line 135... | ||
133 | { |
135 | { |
134 | signal -= PPM_Neutral; |
136 | signal -= PPM_Neutral; |
135 | // Stabiles Signal |
137 | // Stabiles Signal |
136 | if((abs(signal - ppm_in[index]) < 6)) |
138 | if((abs(signal - ppm_in[index]) < 6)) |
137 | { |
139 | { |
- | 140 | if(EE_Parameter.FailsafeChannel == 0 || PPM_in[EE_Parameter.FailsafeChannel] < 100) // forces Failsafe if the receiver doesn't have 'signal loss' on Failsafe |
|
- | 141 | { |
|
138 | if(okay_cnt > 25) SenderOkay += 10; |
142 | if(okay_cnt > 25) SenderOkay += 10; |
139 | else |
143 | else |
140 | if(okay_cnt > 10) SenderOkay += 2; |
144 | if(okay_cnt > 10) SenderOkay += 2; |
141 | if(SenderOkay > 200) SenderOkay = 200; |
145 | if(SenderOkay > 200) SenderOkay = 200; |
- | 146 | } |
|
142 | } |
147 | } |
143 | tmp = (3 * (ppm_in[index]) + signal) / 4; |
148 | tmp = (3 * (ppm_in[index]) + signal) / 4; |
144 | if(tmp > signal+1) tmp--; else |
149 | if(tmp > signal+1) tmp--; else |
145 | if(tmp < signal-1) tmp++; |
150 | if(tmp < signal-1) tmp++; |
146 | if(SenderOkay >= 190) ppm_diff[index] = ((tmp - ppm_in[index]) / 3) * 3; |
151 | if(SenderOkay >= 190) ppm_diff[index] = ((tmp - ppm_in[index]) / 3) * 3; |
Line 173... | Line 178... | ||
173 | } |
178 | } |
174 | } |
179 | } |
Line 175... | Line 180... | ||
175 | 180 | ||
176 | #else |
181 | #else |
177 | //############################################################################ |
182 | //############################################################################ |
178 | //Diese Routine startet und inizialisiert den Timer für RC |
183 | // Interrupt function for the PPM-Input |
179 | ISR(TIMER1_CAPT_vect) |
184 | ISR(TIMER1_CAPT_vect) |
Line 180... | Line 185... | ||
180 | //############################################################################ |
185 | //############################################################################ |
181 | 186 |