Subversion Repositories FlightCtrl

Rev

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