Subversion Repositories FlightCtrl

Rev

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
                                 {