Rev 2334 | Rev 2341 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2334 | Rev 2340 | ||
---|---|---|---|
Line 56... | Line 56... | ||
56 | 56 | ||
57 | #include "rc.h" |
57 | #include "rc.h" |
58 | #include "main.h" |
58 | #include "main.h" |
Line 59... | Line 59... | ||
59 | // Achtung: ACT_S3D_SUMMENSIGNAL wird in der Main.h gesetzt |
59 | // Achtung: ACT_S3D_SUMMENSIGNAL wird in der Main.h gesetzt |
60 | 60 | ||
61 | volatile int PPM_in[26]; |
61 | volatile int PPM_in[26+4]; |
62 | volatile int PPM_diff[26]; // das diffenzierte Stick-Signal |
62 | volatile int PPM_diff[26+4]; // das diffenzierte Stick-Signal |
63 | volatile char Channels,tmpChannels = 0; |
63 | volatile char Channels,tmpChannels = 0; |
Line 64... | Line 64... | ||
64 | volatile unsigned char NewPpmData = 1; |
64 | volatile unsigned char NewPpmData = 1; |
65 | unsigned int PPM_Neutral = 466; |
65 | unsigned int PPM_Neutral = 466; |
66 | 66 | ||
67 | //############################################################################ |
67 | //############################################################################ |
68 | // Clear the values |
68 | // Clear the values |
69 | void rc_sum_init (void) |
69 | void rc_sum_init (void) |
70 | //############################################################################ |
70 | //############################################################################ |
71 | { |
71 | { |
72 | unsigned char i; |
72 | unsigned char i; |
73 | for(i=0;i<26;i++) |
73 | for(i=0;i<sizeof(PPM_in);i++) |
74 | { |
74 | { |
75 | if(i < 5) PPM_in[i] = 0; else PPM_in[i] = -127; |
75 | if(i < 5) PPM_in[i] = 0; else PPM_in[i] = -127; |
Line 104... | Line 104... | ||
104 | if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
104 | if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
105 | index = 1; |
105 | index = 1; |
106 | } |
106 | } |
107 | else |
107 | else |
108 | { |
108 | { |
109 | if(index < 13) |
109 | if(index < 13+4) |
110 | { |
110 | { |
111 | if((signal > 250) && (signal < 687)) |
111 | if((signal > 250) && (signal < 687)) |
112 | { |
112 | { |
113 | signal -= PPM_Neutral; |
113 | signal -= PPM_Neutral; |
114 | // Stabiles Signal |
114 | // Stabiles Signal |
Line 138... | Line 138... | ||
138 | } |
138 | } |
139 | #if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
139 | #if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
140 | else |
140 | else |
141 | { |
141 | { |
142 | static unsigned int AltICR=0; |
142 | static unsigned int AltICR=0; |
143 | static int ppm_in[13]; |
143 | static int ppm_in[13+4]; |
144 | static int ppm_diff[13]; |
144 | static int ppm_diff[13+4]; |
145 | static int old_ppm_in[13]; |
145 | static int old_ppm_in[13+4]; |
146 | static int old_ppm_diff[13]; |
146 | static int old_ppm_diff[13+4]; |
147 | signed int signal = 0,tmp; |
147 | signed int signal = 0,tmp; |
148 | static unsigned char index, okay_cnt = 0; |
148 | static unsigned char index, okay_cnt = 0; |
149 | signal = (unsigned int) ICR1 - AltICR; |
149 | signal = (unsigned int) ICR1 - AltICR; |
150 | AltICR = ICR1; |
150 | AltICR = ICR1; |
151 | //Syncronisationspause? (3.52 ms < signal < 25.6 ms) |
151 | //Syncronisationspause? (3.52 ms < signal < 25.6 ms) |
Line 155... | Line 155... | ||
155 | if(tmpChannels >= 4 && Channels == tmpChannels) |
155 | if(tmpChannels >= 4 && Channels == tmpChannels) |
156 | { |
156 | { |
157 | if(okay_cnt > 10) |
157 | if(okay_cnt > 10) |
158 | { |
158 | { |
159 | NewPpmData = 0; // Null bedeutet: Neue Daten |
159 | NewPpmData = 0; // Null bedeutet: Neue Daten |
160 | for(index = 0; index < 13; index++) |
160 | for(index = 0; index < 13+4; index++) |
161 | { |
161 | { |
162 | if(okay_cnt > 30) |
162 | if(okay_cnt > 30) |
163 | { |
163 | { |
164 | old_ppm_in[index] = PPM_in[index]; |
164 | old_ppm_in[index] = PPM_in[index]; |
165 | old_ppm_diff[index] = PPM_diff[index]; |
165 | old_ppm_diff[index] = PPM_diff[index]; |
Line 178... | Line 178... | ||
178 | index = 1; |
178 | index = 1; |
179 | if(!MotorenEin) Channels = tmpChannels; |
179 | if(!MotorenEin) Channels = tmpChannels; |
180 | } |
180 | } |
181 | else |
181 | else |
182 | { |
182 | { |
183 | if(index < 13) |
183 | if(index < 13+4) |
184 | { |
184 | { |
185 | if((signal > 250) && (signal < 687)) |
185 | if((signal > 250) && (signal < 687)) |
186 | { |
186 | { |
187 | signal -= PPM_Neutral; |
187 | signal -= PPM_Neutral; |
188 | // Stabiles Signal |
188 | // Stabiles Signal |
Line 219... | Line 219... | ||
219 | if(index == 20) |
219 | if(index == 20) |
220 | { |
220 | { |
221 | unsigned char i; |
221 | unsigned char i; |
222 | ROT_ON; |
222 | ROT_ON; |
223 | index = 30; |
223 | index = 30; |
224 | for(i=0;i<13;i++) // restore from older data |
224 | for(i=0;i<13+4;i++) // restore from older data |
225 | { |
225 | { |
226 | PPM_in[i] = old_ppm_in[i]; |
226 | PPM_in[i] = old_ppm_in[i]; |
227 | PPM_diff[i] = 0; |
227 | PPM_diff[i] = 0; |
228 | // okay_cnt /= 2; |
228 | // okay_cnt /= 2; |
229 | } |
229 | } |