Subversion Repositories FlightCtrl

Rev

Rev 1219 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1219 Rev 1247
Line 79... Line 79...
79
   if(i<10) Delay_ms_Mess(10);  
79
   if(i<10) Delay_ms_Mess(10);  
80
  }
80
  }
81
   Delay_ms_Mess(70);  
81
   Delay_ms_Mess(70);  
82
}
82
}
Line 83... Line 83...
83
 
83
 
84
/*
84
/*  // MartinR: so war es
85
0  n
85
0  n
86
1  r
86
1  r
87
2     g
87
2     g
88
3     y
88
3     y
Line 100... Line 100...
100
15 n
100
15 n
101
16 r
101
16 r
102
17    L
102
17    L
103
*/
103
*/
Line -... Line 104...
-
 
104
 
-
 
105
 
-
 
106
/*  MartinR : geändert
-
 
107
0  n
-
 
108
1  r
-
 
109
2     g
-
 
110
3     L
-
 
111
4  n
-
 
112
5  r
-
 
113
6         y
-
 
114
7     x
-
 
115
8  n  
-
 
116
9  r  
-
 
117
10    g
-
 
118
11    L
-
 
119
12 n  
-
 
120
13 r  
-
 
121
14    u
-
 
122
15    z
-
 
123
*/
104
 
124
 
105
//#######################################################################################
125
//#######################################################################################
106
//
126
//
107
SIGNAL(SIG_ADC)
127
SIGNAL(SIG_ADC)
108
//#######################################################################################
128
//#######################################################################################
109
{
129
{
110
    static unsigned char kanal=0,state = 0;
130
    static unsigned char kanal=0,state = 0;
-
 
131
    static signed int gier1, roll1, nick1, nick_filter, roll_filter;   
-
 
132
       
-
 
133
        static signed int roll_alt1, roll_alt2, roll_alt3, nick_alt1, nick_alt2, nick_alt3;     // MartinR: 4x Mittelung
-
 
134
        //static signed int roll_alt1, nick_alt1;       // MartinR: 2x Mittelung
111
    static signed int gier1, roll1, nick1, nick_filter, roll_filter;   
135
       
-
 
136
        static signed int accy, accx;
-
 
137
       
112
        static signed int accy, accx;
138
/*      // MartinR : so war es Anfang
113
    switch(state++)
139
    switch(state++)
114
        {
140
        {
115
        case 0:
141
        case 0:
116
            nick1 = ADC;
142
            nick1 = ADC;
Line 235... Line 261...
235
            break;
261
            break;
236
        default:  
262
        default:  
237
            kanal = 0; state = 0; kanal = AD_NICK;
263
            kanal = 0; state = 0; kanal = AD_NICK;
238
            break;
264
            break;
239
        }
265
        }
-
 
266
               
-
 
267
        */  // MartinR : so war es Ende
-
 
268
       
-
 
269
        // MartinR : geändert Anfang
-
 
270
       
-
 
271
switch(state++)
-
 
272
        {
-
 
273
        case 0:
-
 
274
            nick1 = ADC;
-
 
275
            kanal = AD_ROLL;
-
 
276
            break;
-
 
277
        case 1:
-
 
278
            roll1 = ADC;
-
 
279
                    kanal = AD_GIER;
-
 
280
            break;
-
 
281
                       
-
 
282
                case 2:
-
 
283
            gier1 = ADC;
-
 
284
            kanal = AD_DRUCK;
-
 
285
            break;     
-
 
286
                case 3:
-
 
287
            tmpLuftdruck = ADC;
-
 
288
            kanal = AD_NICK;
-
 
289
            break;     
-
 
290
                       
-
 
291
                case 4:
-
 
292
            nick1 += ADC;
-
 
293
            kanal = AD_ROLL;
-
 
294
            break;
-
 
295
        case 5:
-
 
296
            roll1 += ADC;
-
 
297
            kanal = AD_ACC_Y;
-
 
298
            break;             
-
 
299
                       
-
 
300
                case 6:
-
 
301
            Aktuell_ay = NeutralAccY - ADC;
-
 
302
                        AdWertAccRoll = (Aktuell_ay + accy);
-
 
303
                        accy = Aktuell_ay;
-
 
304
                    kanal = AD_ACC_X;
-
 
305
            break;     
-
 
306
                case 7:
-
 
307
            Aktuell_ax = ADC - NeutralAccX;
-
 
308
                        AdWertAccNick =  (Aktuell_ax + accx);
-
 
309
            accx =  Aktuell_ax;
-
 
310
            kanal = AD_NICK;
-
 
311
            break;
-
 
312
                       
-
 
313
                case 8:
-
 
314
            nick1 += ADC;
-
 
315
            kanal = AD_ROLL;
-
 
316
            break;
-
 
317
        case 9:
-
 
318
            roll1 += ADC;      
-
 
319
                        kanal = AD_GIER;
-
 
320
            break;     
-
 
321
                       
-
 
322
                case 10:
-
 
323
                        if(PlatinenVersion == 10)  AdWertGier = (ADC + gier1 + 1) / 2;
-
 
324
            else
-
 
325
            if(PlatinenVersion == 20)  AdWertGier = 2047 - (ADC + gier1);
-
 
326
                        else                                       AdWertGier = (ADC + gier1);
-
 
327
            kanal = AD_DRUCK;
-
 
328
            break;
-
 
329
                       
-
 
330
                case 11:       
-
 
331
                                /* MartinR: so war es Anfang
-
 
332
                                HoeheD = (31 * HoeheD + (int) Parameter_Luftdruck_D * (int)(255 * ExpandBaro + StartLuftdruck - tmpLuftdruck - HoehenWert))/32;  // D-Anteil = neuerWert - AlterWert
-
 
333
                                */  //MartinR: so war es Ende
-
 
334
                               
-
 
335
                                // MartinR: Änderungen Anfang :
-
 
336
                                /*
-
 
337
                                HoehenWertSumme += HoehenWert ;
-
 
338
                                if (++ iHoehe >= 40) // MartinR: Wartezeit um auch kleine Änderungsgeschwindigkeiten erkennen zu können
-
 
339
                                {
-
 
340
                                 HoehenWertSumme = HoehenWertSumme / iHoehe ; // MartinR: Mittelwert während der Wartezeit
-
 
341
                                 HoeheD = (int) Parameter_Luftdruck_D * (HoehenWert - HoehenWertalt) ;
-
 
342
                                 if (HoeheD < 0) HoeheD += Parameter_Luftdruck_D ; // MartinR: Digitalisierungsrauschen abmindern
-
 
343
                                 if (HoeheD > 0) HoeheD -= Parameter_Luftdruck_D ; // MartinR: entspricht - 1 Bit vom Höhenwert
-
 
344
                                 
-
 
345
                                 iHoehe = 0 ;
-
 
346
                                 HoehenWertalt = HoehenWertSumme ;
-
 
347
                                 HoehenWertSumme = 0 ;
-
 
348
                                }
-
 
349
                                */
-
 
350
                               
-
 
351
                        // MartinR: neu
-
 
352
                        tmpLuftdruck += ADC;
-
 
353
                        MessLuftdruck = tmpLuftdruck / 2;
-
 
354
                        Luftdruck = (MessLuftdruck + 7 * Luftdruck + 4) / 8;
-
 
355
            // HoehenWert = 255 * ExpandBaro + StartLuftdruck - Luftdruck; // MartinR: zu Höhenregler
-
 
356
                       
-
 
357
            kanal = AD_NICK;
-
 
358
            break;
-
 
359
                       
-
 
360
                case 12:
-
 
361
            nick1 += ADC;
-
 
362
                        //if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4; // MartinR: so war es
-
 
363
                        //if(PlatinenVersion == 10) ; else nick1 *= 2; // MartinR: 2x Mittelung
-
 
364
                        if(PlatinenVersion == 10) nick1 /= 2; //else nick1 *= 1; // MartinR: 4x Mittelung
-
 
365
            //AdWertNick = nick1 / 8; // MartinR: so war es
-
 
366
                        //AdWertNick = nick1 / 4; // MartinR: 2x Mittelung
-
 
367
                        AdWertNick = nick1 / 2; // MartinR: 4x Mittelung
-
 
368
                       
-
 
369
            // nick_filter = (nick_filter + nick1) / 2; // MartinR: so war es
-
 
370
                        //nick_filter = (nick_alt1 + nick1); // MartinR: anderer Nick-Filter: 2x Mittelung 
-
 
371
                        nick_filter = (nick_alt3 +nick_alt2 +nick_alt1 + nick1); // MartinR: anderer Nick-Filter: 4x Mittelung
-
 
372
                        nick_alt3 = nick_alt2; // MartinR: anderer Nick-Filter
-
 
373
                        nick_alt2 = nick_alt1; // MartinR: anderer Nick-Filter
-
 
374
                        nick_alt1 = nick1; // MartinR: anderer Nick-Filter
-
 
375
                       
-
 
376
            HiResNick = nick_filter - AdNeutralNick;
-
 
377
            //AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2; // MartinR: so war es
-
 
378
                        AdWertNickFilter = HiResNick; // MartinR: Filter deaktiviert
-
 
379
            kanal = AD_ROLL;
-
 
380
                       
-
 
381
            break;
-
 
382
        case 13:
-
 
383
            roll1 += ADC;      
-
 
384
                        // if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4; // MartinR: so war es
-
 
385
                        //if(PlatinenVersion == 10) ; else roll1 *= 2; // MartinR: 2x Mittelung
-
 
386
                        if(PlatinenVersion == 10) roll1 /= 2; //else roll1 *= 1; // MartinR: 4x Mittelung
-
 
387
            // AdWertRoll = roll1 / 8; // MartinR: so war es
-
 
388
                        //AdWertRoll = roll1 / 4; // MartinR: 2x Mittelung
-
 
389
                        AdWertRoll = roll1 / 2; // MartinR: 4x Mittelung
-
 
390
                       
-
 
391
            //roll_filter = (roll_filter + roll1) / 2; // MartinR: so war es
-
 
392
                        //roll_filter = (roll_alt1 + roll1); // MartinR: anderer Nick-Filter: 2x Mittelung
-
 
393
                        roll_filter = (roll_alt3 + roll_alt2 + roll_alt1 + roll1); // MartinR: anderer Nick-Filter: 4x Mittelung
-
 
394
                        roll_alt3 = roll_alt2; // MartinR: anderer Nick-Filter
-
 
395
                        roll_alt2 = roll_alt1; // MartinR: anderer Nick-Filter
-
 
396
                        roll_alt1 = roll1; // MartinR: anderer Nick-Filter
-
 
397
                               
-
 
398
            HiResRoll = roll_filter - AdNeutralRoll;
-
 
399
            //AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2;  // MartinR: so war es
-
 
400
                        AdWertRollFilter = HiResRoll; // MartinR: Filter deaktiviert
-
 
401
                       
-
 
402
                        kanal = AD_UBAT;
-
 
403
                       
-
 
404
            break;     
-
 
405
                       
-
 
406
                case 14:
-
 
407
            UBat = (3 * UBat + ADC / 3) / 4;
-
 
408
                    kanal = AD_ACC_Z;
-
 
409
            break;
-
 
410
                       
-
 
411
                case 15:       
-
 
412
                        // AdWertAccHoch =  (signed int) ADC - NeutralAccZ; // MartinR : so war es
-
 
413
                        //AdWertAccHoch =  ADC - NeutralAccZ; // MartinR: modifiziert für Tests
-
 
414
                        /* // MartinR: deaktiviert
-
 
415
                       
-
 
416
            if(AdWertAccHoch > 1)
-
 
417
             {
-
 
418
              if(NeutralAccZ < 750)
-
 
419
               {
-
 
420
                NeutralAccZ += 0.02;
-
 
421
                if(modell_fliegt < 500) NeutralAccZ += 0.1;
-
 
422
               }
-
 
423
             }  
-
 
424
             else if(AdWertAccHoch < -1)
-
 
425
             {
-
 
426
              if(NeutralAccZ > 550)
-
 
427
                {
-
 
428
                 NeutralAccZ -= 0.02;
-
 
429
                 if(modell_fliegt < 500) NeutralAccZ -= 0.1;              
-
 
430
                }
-
 
431
             }
-
 
432
                        */ // MartinR: deaktiviert Ende 
-
 
433
                         
-
 
434
            // messanzahl_AccHoch = 1; MartinR: deaktiviert, da nicht verwendet
-
 
435
               
-
 
436
                        Aktuell_az = (Aktuell_az + ADC) / 2;
-
 
437
                        AdWertAccHoch =  Aktuell_az - NeutralAccZ; // MartinR: modifiziert für Tests
-
 
438
                        //Mess_Integral_Hoch += AdWertAccHoch;      // Integrieren  // MartinR: zu Höhenregler in fc.c verschoben
-
 
439
            //Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen // MartinR: zu Höhenregler in fc.c verschoben
-
 
440
                       
-
 
441
                        AdReady = 1;
-
 
442
                        state = 0;
-
 
443
                        kanal = AD_NICK;
-
 
444
            break;
-
 
445
                       
-
 
446
        default:  
-
 
447
            kanal = 0; state = 0; kanal = AD_NICK;
-
 
448
            break;
-
 
449
        }
-
 
450
       
-
 
451
        // MartinR : geändert Ende
-
 
452
       
-
 
453
       
240
    ADMUX = kanal;
454
    ADMUX = kanal;
241
    if(state != 0) ANALOG_ON;
455
        // if(state != 0) ANALOG_ON; // MartinR : so war es
-
 
456
        // if(state != 0) ANALOG_START; // MartinR verschoben zu timer0
-
 
457
       
242
}
458
}
Line 243... Line 459...
243
 
459