Subversion Repositories FlightCtrl

Rev

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

Rev 1021 Rev 1036
Line 164... Line 164...
164
        AdNeutralRoll = 0;     
164
        AdNeutralRoll = 0;     
165
        AdNeutralGier = 0;
165
        AdNeutralGier = 0;
166
    AdNeutralGierBias = 0;
166
    AdNeutralGierBias = 0;
167
    Parameter_AchsKopplung1 = 0;
167
    Parameter_AchsKopplung1 = 0;
168
    Parameter_AchsGegenKopplung1 = 0;
168
    Parameter_AchsGegenKopplung1 = 0;
-
 
169
    ExpandBaro = 0;
169
    CalibrierMittelwert();     
170
    CalibrierMittelwert();     
170
    Delay_ms_Mess(100);
171
    Delay_ms_Mess(100);
171
        CalibrierMittelwert();
172
        CalibrierMittelwert();
172
    if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung aktiviert?
173
    if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung aktiviert?
173
     {    
174
     {    
Line 1065... Line 1066...
1065
       w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
1066
       w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
1066
       v = abs(IntegralRoll /512);
1067
       v = abs(IntegralRoll /512);
1067
       if(v > w) w = v; // grösste Neigung ermitteln
1068
       if(v > w) w = v; // grösste Neigung ermitteln
1068
       korrektur = w / 8 + 1;
1069
       korrektur = w / 8 + 1;
1069
       fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180;
1070
       fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180;
-
 
1071
           if(NeueKompassRichtungMerken)
-
 
1072
            {
-
 
1073
                 fehler = 0;
1070
//DebugOut.Analog[25] = KompassSignalSchlecht;
1074
                 ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR;
-
 
1075
                }
1071
       if(!KompassSignalSchlecht && w < 25)
1076
       if(!KompassSignalSchlecht && w < 25)
1072
        {
1077
        {
1073
        GierGyroFehler += fehler;
1078
        GierGyroFehler += fehler;
1074
        if(NeueKompassRichtungMerken)    
1079
        if(NeueKompassRichtungMerken)    
1075
         {
1080
         {
Line 1185... Line 1190...
1185
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht
1190
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht
1186
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1191
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1187
//OCR0B = 180 - (Poti1 + 120) / 4;
1192
//OCR0B = 180 - (Poti1 + 120) / 4;
1188
//DruckOffsetSetting = OCR0B;
1193
//DruckOffsetSetting = OCR0B;
1189
  GasMischanteil *= STICK_GAIN;
1194
  GasMischanteil *= STICK_GAIN;
-
 
1195
/*
-
 
1196
  if(Poti1 > 200) {OCR0A = DruckOffsetSetting - 16; ExpandBaro = 16; }else
-
 
1197
  if(Poti1 > 150) {OCR0A = DruckOffsetSetting - 8; ExpandBaro = 8; }else
-
 
1198
  if(Poti1 > 100) {OCR0A = DruckOffsetSetting - 4; ExpandBaro = 4; }else
-
 
1199
  if(Poti1 >  50) {OCR0A = DruckOffsetSetting - 2; ExpandBaro = 1; }else
-
 
1200
  {OCR0A = DruckOffsetSetting; ExpandBaro = 0;}
1190
 
1201
*/
1191
 if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung
1202
 if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung
1192
  {
1203
  {
1193
    int tmp_int;
1204
    int tmp_int;
-
 
1205
        static char delay = 100;
1194
    if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER)  // Regler wird über Schalter gesteuert
1206
    if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER)  // Regler wird über Schalter gesteuert
1195
    {
1207
    {
1196
    if(((EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && ((Parameter_MaxHoehe > 50) && (Parameter_MaxHoehe < 180))) ||
1208
    if(((EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && ((Parameter_MaxHoehe > 80) && (Parameter_MaxHoehe < 140))) ||
1197
      (!(EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && (Parameter_MaxHoehe < 50)))
1209
      (!(EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && (Parameter_MaxHoehe < 50)))
1198
      {
1210
      {
-
 
1211
       if(!delay--)
-
 
1212
            {
-
 
1213
         if(MessLuftdruck > 1000)
-
 
1214
                  {
-
 
1215
                   ExpandBaro -= 10;
-
 
1216
                   OCR0A = DruckOffsetSetting - ExpandBaro;
-
 
1217
                   beeptime = 300;
-
 
1218
           delay = 250;
-
 
1219
                  }
-
 
1220
                  else
-
 
1221
         if(MessLuftdruck < 100)
-
 
1222
                  {
-
 
1223
                   ExpandBaro += 10;
-
 
1224
                   OCR0A = DruckOffsetSetting - ExpandBaro;
-
 
1225
                   beeptime = 300;
-
 
1226
           delay = 250;
-
 
1227
                  }
-
 
1228
          else
-
 
1229
          {
1199
       SollHoehe = HoehenWert - 20;  // Parameter_MaxHoehe ist der PPM-Wert des Schalters
1230
               SollHoehe = HoehenWert - 20;  // Parameter_MaxHoehe ist der PPM-Wert des Schalters
1200
       HoehenReglerAktiv = 0;
1231
           HoehenReglerAktiv = 0;
-
 
1232
                   delay = 1;
-
 
1233
                  }
-
 
1234
                }
1201
      }
1235
      }
1202
      else  
1236
      else
-
 
1237
        {
1203
        HoehenReglerAktiv = 1;
1238
         HoehenReglerAktiv = 1;
-
 
1239
                 delay = 200;
-
 
1240
                }
1204
    }
1241
    }
1205
    else
1242
    else
1206
    {
1243
    {
1207
     SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20;
1244
     SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20;
1208
     HoehenReglerAktiv = 1;
1245
     HoehenReglerAktiv = 1;