Subversion Repositories FlightCtrl

Rev

Rev 2176 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2176 Rev 2177
Line 183... Line 183...
183
//
183
//
184
ISR(ADC_vect)
184
ISR(ADC_vect)
185
//#######################################################################################
185
//#######################################################################################
186
{
186
{
187
    static unsigned char kanal=0,state = 0;
187
    static unsigned char kanal=0,state = 0;
188
        static signed char subcount = 0;
188
        //static signed char subcount = 0; // MartinR: wird nicht mehr benötigt, da deaktiviert
189
    static signed int gier1, roll1, nick1, nick_filter, roll_filter;
189
    static signed int gier1, roll1, nick1, nick_filter, roll_filter;
190
        static signed int accy, accx;
190
        static signed int accy, accx;
191
        static long tmpLuftdruck = 0;
191
        static long tmpLuftdruck = 0;
192
        static char messanzahl_Druck = 0;
192
        static char messanzahl_Druck = 0;
193
    switch(state++)
193
    switch(state++)
Line 230... Line 230...
230
                        UBat = (3 * UBat + ADC / 3) / 4;
230
                        UBat = (3 * UBat + ADC / 3) / 4;
231
                    kanal = AD_ACC_Z;
231
                    kanal = AD_ACC_Z;
232
            break;
232
            break;
233
       case 8:
233
       case 8:
234
            AdWertAccHoch =  (signed int) ADC - NeutralAccZ;
234
            AdWertAccHoch =  (signed int) ADC - NeutralAccZ;
-
 
235
                       
-
 
236
                        /*  // MartinR: deaktivieren Anfang
-
 
237
                       
235
            if(AdWertAccHoch > 1)
238
            if(AdWertAccHoch > 1)
236
             {
239
             {
237
              if(NeutralAccZ < 750)
240
              if(NeutralAccZ < 750)
238
               {
241
               {
239
                subcount += 5;
242
                subcount += 5;
Line 248... Line 251...
248
                 subcount -= 5;
251
                 subcount -= 5;
249
                 if(modell_fliegt < 500) subcount -= 10;
252
                 if(modell_fliegt < 500) subcount -= 10;
250
                 if(subcount < -100) { NeutralAccZ--; subcount += 100;}
253
                 if(subcount < -100) { NeutralAccZ--; subcount += 100;}
251
                }
254
                }
252
             }
255
             }
-
 
256
                         
-
 
257
                         */ // MartinR: deaktivieren Ende
-
 
258
                         
253
//            messanzahl_AccHoch = 1;
259
            //messanzahl_AccHoch = 1;
254
            Aktuell_az = ADC;
260
            Aktuell_az = ADC;
255
            Mess_Integral_Hoch += AdWertAccHoch;      // Integrieren
261
            Mess_Integral_Hoch += AdWertAccHoch;      // Integrieren
256
            Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen
262
            Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen
257
                kanal = AD_DRUCK;
263
                kanal = AD_DRUCK;
258
            break;
264
            break;
Line 285... Line 291...
285
        case 15:
291
        case 15:
286
            nick1 += ADC;
292
            nick1 += ADC;
287
            if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4;
293
            if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4;
288
            AdWertNick = nick1 / 8;
294
            AdWertNick = nick1 / 8;
289
            nick_filter = (nick_filter + nick1) / 2;
295
            nick_filter = (nick_filter + nick1) / 2;
290
            HiResNick = nick_filter - AdNeutralNick;
296
                        //HiResNick = nick_filter - AdNeutralNick; // MartinR: so war es
-
 
297
                        HiResNick = (nick_filter - AdNeutralNick + 4 ) / 8 ; // MartinR: + 4um Rundungsfehler zu verbessern
-
 
298
                        // MartinR: /8 von fc.c nach hier verschoben um Code zu sparen
291
            AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2;
299
            AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2;
292
            kanal = AD_ROLL;
300
            kanal = AD_ROLL;
293
            break;
301
            break;
294
        case 16:
302
        case 16:
295
            roll1 += ADC;
303
            roll1 += ADC;
296
            if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4;
304
            if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4;
297
            AdWertRoll = roll1 / 8;
305
            AdWertRoll = roll1 / 8;
298
            roll_filter = (roll_filter + roll1) / 2;
306
            roll_filter = (roll_filter + roll1) / 2;
299
            HiResRoll = roll_filter - AdNeutralRoll;
307
            //HiResRoll = roll_filter - AdNeutralRoll; // MartinR: so war es
-
 
308
                        HiResRoll = (roll_filter - AdNeutralRoll + 4 ) / 8; // MartinR: + 4um Rundungsfehler zu verbessern
-
 
309
                        // MartinR: /8 von fc.c nach hier verschoben um Code zu sparen
300
            AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2;
310
            AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2;
301
                kanal = AD_DRUCK;
311
                kanal = AD_DRUCK;
302
            break;
312
            break;
303
        case 17:
313
        case 17:
304
            state = 0;
314
            state = 0;
305
                        AdReady = 1;
315
                        AdReady = 1;
306
            ZaehlMessungen++;
316
            ZaehlMessungen++;
307
            // "break" fehlt hier absichtlich
317
            // "break" fehlt hier absichtlich
308
        case 9:
318
        case 9:
309
                MessLuftdruck = ADC;
319
                //MessLuftdruck = ADC; // MartinR: so war es
-
 
320
                        MessLuftdruck = ADC + ((Parameter_UserParam4 * AdWertAccHoch) / 256) ; // MartinR: 
-
 
321
                        // mit Korrektur der Beschleunigungsempfindlichkeit des Luftdrucksensors
310
            tmpLuftdruck += MessLuftdruck;
322
            tmpLuftdruck += MessLuftdruck;
311
            if(++messanzahl_Druck >= 16) // war bis 0.86 "18"
323
            if(++messanzahl_Druck >= 16) // war bis 0.86 "18"
312
            {
324
            {
313
                            signed int tmp;
325
                            signed int tmp;
314
                                Luftdruck = (7 * Luftdruck + tmpLuftdruck - (16 * 523) * (long)ExpandBaro + 4) / 8;  // -523.19 counts per 10 counts offset step
326
                                Luftdruck = (7 * Luftdruck + tmpLuftdruck - (16 * 523) * (long)ExpandBaro + 4) / 8;  // -523.19 counts per 10 counts offset step