Subversion Repositories FlightCtrl

Rev

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

Rev 440 Rev 453
Line 69... Line 69...
69
volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0;
69
volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0;
70
volatile long Mess_Integral_Hoch = 0;
70
volatile long Mess_Integral_Hoch = 0;
71
volatile int  KompassValue = 0;
71
volatile int  KompassValue = 0;
72
volatile int  KompassStartwert = 0;
72
volatile int  KompassStartwert = 0;
73
volatile int  KompassRichtung = 0;
73
volatile int  KompassRichtung = 0;
-
 
74
uint8_t updKompass=0;
74
unsigned char MAX_GAS,MIN_GAS;
75
unsigned char MAX_GAS,MIN_GAS;
75
unsigned char Notlandung = 0;
76
unsigned char Notlandung = 0;
76
unsigned char HoehenReglerAktiv = 0;
77
unsigned char HoehenReglerAktiv = 0;
Line 77... Line 78...
77
 
78
 
Line 128... Line 129...
128
{
129
{
129
    unsigned int timer;
130
    unsigned int timer;
130
        acc_neutral.X = 0;
131
        acc_neutral.X = 0;
131
        acc_neutral.Y = 0;
132
        acc_neutral.Y = 0;
132
        acc_neutral.Z = 0;
133
        acc_neutral.Z = 0;
-
 
134
       
133
    CalibrierMittelwert();     
135
    CalibrierMittelwert();     
134
    timer = SetDelay(5);    
136
    Delay_ms_Mess(100);
135
        while (!CheckDelay(timer));
-
 
136
        CalibrierMittelwert(); 
137
        CalibrierMittelwert(); 
Line 137... Line 138...
137
               
138
               
138
        acc_neutral.X = abs(Mittelwert_AccNick) / ACC_AMPLIFY;
139
        acc_neutral.X = abs(Mittelwert_AccNick) / ACC_AMPLIFY;
139
        acc_neutral.Y = abs(Mittelwert_AccRoll) / ACC_AMPLIFY;
140
        acc_neutral.Y = abs(Mittelwert_AccRoll) / ACC_AMPLIFY;
Line 152... Line 153...
152
        acc_neutral.Y = 0;
153
        acc_neutral.Y = 0;
153
        acc_neutral.Z = 0;
154
        acc_neutral.Z = 0;
154
    AdNeutralNick = 0; 
155
    AdNeutralNick = 0; 
155
        AdNeutralRoll = 0;     
156
        AdNeutralRoll = 0;     
156
        AdNeutralGier = 0;
157
        AdNeutralGier = 0;
-
 
158
       
157
    CalibrierMittelwert();     
159
    CalibrierMittelwert();     
158
    timer = SetDelay(5);    
160
    Delay_ms_Mess(100);
159
        while (!CheckDelay(timer));
-
 
160
        CalibrierMittelwert();
161
        CalibrierMittelwert();
-
 
162
       
161
    if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung aktiviert?
163
    if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung aktiviert?
162
     {    
164
     {    
163
      if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
165
      if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
164
     }
166
     }
165
    AdNeutralNick= abs(MesswertNick);  
167
    AdNeutralNick= abs(MesswertNick);  
Line 435... Line 437...
435
         static unsigned char delay_einschalten = 0,delay_ausschalten = 0;
437
         static unsigned char delay_einschalten = 0,delay_ausschalten = 0;
436
         static unsigned int  modell_fliegt = 0;
438
         static unsigned int  modell_fliegt = 0;
437
     static int hoehenregler = 0;
439
     static int hoehenregler = 0;
438
     static char TimerWerteausgabe = 0;
440
     static char TimerWerteausgabe = 0;
439
     static char NeueKompassRichtungMerken = 0;
441
     static char NeueKompassRichtungMerken = 0;
-
 
442
       
440
        Mittelwert();
443
        Mittelwert();
Line 441... Line 444...
441
 
444
 
Line 442... Line 445...
442
    GRN_ON;
445
    GRN_ON;
Line 654... Line 657...
654
//  Kompass
657
//  Kompass
655
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
658
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
656
    if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)
659
    if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)
657
     {
660
     {
658
       int w,v;
661
       int w,v;
659
       static int SignalSchlecht = 0;
662
       static uint8_t SignalSchlecht = 0;
-
 
663
                   
-
 
664
                if (!updKompass--)              // Aufruf mit ~10 Hz
-
 
665
                {
-
 
666
                        KompassValue = heading_MM3();
-
 
667
                        KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
-
 
668
                        updKompass = 50;
-
 
669
                }
-
 
670
               
660
       w = abs(IntegralNick /1024); // mit zunehmender Neigung den Einfluss drosseln
671
       w = abs(IntegralNick /1024); // mit zunehmender Neigung den Einfluss drosseln
661
       v = abs(IntegralRoll /1024);
672
       v = abs(IntegralRoll /1024);
662
       if(v > w) w = v; // grösste Neigung ermitteln
673
       if(v > w) w = v; // grösste Neigung ermitteln
663
       if(w < 35 && NeueKompassRichtungMerken && !SignalSchlecht)    
674
       if(w < 35 && NeueKompassRichtungMerken && !SignalSchlecht)    
664
        {
675
        {
Line 672... Line 683...
672
          ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
683
          ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
673
          if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32;  // nach Kompass ausrichten
684
          if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32;  // nach Kompass ausrichten
674
          ANALOG_ON;  // ADC einschalten
685
          ANALOG_ON;  // ADC einschalten
675
          if(SignalSchlecht) SignalSchlecht--;
686
          if(SignalSchlecht) SignalSchlecht--;
676
        }  
687
        }  
677
        else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek
688
        else SignalSchlecht = 250; // so lange das Signal taub stellen --> ca. 1/2 sek
678
     }
689
     }
679
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
690
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
680
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
691
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
Line 681... Line 692...
681
 
692