Rev 1431 | Rev 1506 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1431 | Rev 1481 | ||
---|---|---|---|
Line 195... | Line 195... | ||
195 | 195 | ||
196 | #define MIN_FRAMEGAP 68 // 7ms |
196 | #define MIN_FRAMEGAP 68 // 7ms |
Line 197... | Line -... | ||
197 | #define MAX_BYTEGAP 3 // 310us |
- | |
198 | - | ||
199 | 197 | #define MAX_BYTEGAP 3 // 310us |
|
200 | 198 | ||
201 | 199 | ||
202 | //############################################################################ |
200 | //############################################################################ |
203 | //Diese Routine startet und inizialisiert den USART1 für seriellen Spektrum satellite reciever |
201 | // Wird im UART-Interrupt aufgerufen |
204 | //############################################################################ |
202 | //############################################################################ |
205 | void SpektrumParser(unsigned char c) |
203 | void SpektrumParser(unsigned char c) |
206 | { |
204 | { |
207 | static unsigned char Sync=0, FrameCnt=0, ByteHigh=0, ReSync=1, Frame2=0; |
205 | static unsigned char Sync=0, FrameCnt=0, ByteHigh=0, ReSync=1, Frame2=0; |
208 | unsigned int Channel, index; |
- | |
209 | signed int signal, tmp; |
206 | unsigned int Channel, index = 0; |
210 | int bCheckDelay; |
207 | signed int signal = 0, tmp; |
211 | 208 | int bCheckDelay; |
|
212 | // c = UDR1; // get data byte |
209 | // c = UDR1; // get data byte |
213 | if(ReSync == 1) |
210 | if(ReSync == 1) |
Line 273... | Line 270... | ||
273 | // Datenbyte low |
270 | // Datenbyte low |
274 | // High-Byte for next channel comes next |
271 | // High-Byte for next channel comes next |
275 | SpektrumTimer = MAX_BYTEGAP; |
272 | SpektrumTimer = MAX_BYTEGAP; |
276 | Sync = 2; |
273 | Sync = 2; |
277 | FrameCnt ++; |
274 | FrameCnt ++; |
278 | index = (ByteHigh >> 2) & 0x0f; |
- | |
279 | index++; |
- | |
280 | Channel = ((unsigned int)ByteHigh << 8) | c; |
275 | Channel = ((unsigned int)ByteHigh << 8) | c; |
- | 276 | if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM) |
|
- | 277 | { |
|
281 | signal = Channel & 0x3ff; |
278 | signal = Channel & 0x3ff; |
282 | signal -= 0x200; // Offset, range 0x000..0x3ff? |
279 | signal -= 0x200; // Offset, range 0x000..0x3ff? |
283 | signal = signal/3; // scaling to fit PPM resolution |
280 | signal = signal/3; // scaling to fit PPM resolution |
- | 281 | index = (ByteHigh >> 2) & 0x0f; |
|
- | 282 | } |
|
- | 283 | else |
|
- | 284 | if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM_HI_RES) |
|
- | 285 | { |
|
- | 286 | signal = Channel & 0x7ff; |
|
- | 287 | signal -= 0x400; // Offset, range 0x000..0x7ff? |
|
- | 288 | signal = signal/6; // scaling to fit PPM resolution |
|
- | 289 | index = (ByteHigh >> 3) & 0x0f; |
|
- | 290 | } |
|
- | 291 | else |
|
- | 292 | //if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM_LOW_RES) |
|
- | 293 | { |
|
- | 294 | signal = Channel & 0x3ff; |
|
- | 295 | signal -= 360; // Offset, range 0x000..0x3ff? |
|
- | 296 | signal = signal/2; // scaling to fit PPM resolution |
|
- | 297 | index = (ByteHigh >> 2) & 0x0f; |
|
- | 298 | } |
|
Line -... | Line 299... | ||
- | 299 | ||
284 | 300 | index++; |
|
285 | if(index > 0 && index < 13) |
301 | if(index < 13) |
286 | { |
302 | { |
287 | // Stabiles Signal |
303 | // Stabiles Signal |
288 | if(abs(signal - PPM_in[index]) < 6) |
304 | if(abs(signal - PPM_in[index]) < 6) |
289 | { |
305 | { |