Subversion Repositories FlightCtrl

Rev

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

Rev 992 Rev 993
Line 130... Line 130...
130
unsigned char Parameter_NaviGpsGain;    
130
unsigned char Parameter_NaviGpsGain;    
131
unsigned char Parameter_NaviGpsP;        
131
unsigned char Parameter_NaviGpsP;        
132
unsigned char Parameter_NaviGpsI;        
132
unsigned char Parameter_NaviGpsI;        
133
unsigned char Parameter_NaviGpsD;        
133
unsigned char Parameter_NaviGpsD;        
134
unsigned char Parameter_NaviGpsACC;        
134
unsigned char Parameter_NaviGpsACC;        
-
 
135
unsigned char Parameter_NaviOperatingRadius;
-
 
136
unsigned char Parameter_NaviWindCorrection;
-
 
137
unsigned char Parameter_NaviSpeedCompensation;
135
unsigned char Parameter_ExternalControl;
138
unsigned char Parameter_ExternalControl;
136
struct mk_param_struct EE_Parameter;
139
struct mk_param_struct EE_Parameter;
137
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
140
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
138
int MaxStickNick = 0,MaxStickRoll = 0;
141
int MaxStickNick = 0,MaxStickRoll = 0;
139
unsigned int  modell_fliegt = 0;
142
unsigned int  modell_fliegt = 0;
Line 406... Line 409...
406
//############################################################################
409
//############################################################################
407
// Trägt ggf. das Poti als Parameter ein
410
// Trägt ggf. das Poti als Parameter ein
408
void ParameterZuordnung(void)
411
void ParameterZuordnung(void)
409
//############################################################################
412
//############################################################################
410
{
413
{
411
 
-
 
412
 #define CHK_POTI_MM(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;}
414
 #define CHK_POTI_MM(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;}
413
 #define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; }
415
 #define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; }
414
 CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255);
416
 CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255);
415
 CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100);
417
 CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100);
416
 CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100);
418
 CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100);
Line 432... Line 434...
432
 CHK_POTI(Parameter_AchsKopplung1,    EE_Parameter.AchsKopplung1,0,255);
434
 CHK_POTI(Parameter_AchsKopplung1,    EE_Parameter.AchsKopplung1,0,255);
433
 CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255);
435
 CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255);
434
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255);
436
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255);
435
 CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255);
437
 CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255);
436
 CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255);
438
 CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255);
-
 
439
 
437
 CHK_POTI(Parameter_NaviGpsModeControl,EE_Parameter.NaviGpsModeControl,0,255);
440
// CHK_POTI(Parameter_NaviGpsModeControl,EE_Parameter.NaviGpsModeControl,0,255);
438
 CHK_POTI(Parameter_NaviGpsGain,EE_Parameter.NaviGpsGain,0,255);
441
 //CHK_POTI(Parameter_NaviGpsGain,EE_Parameter.NaviGpsGain,0,255);
439
 CHK_POTI(Parameter_NaviGpsP,EE_Parameter.NaviGpsP,0,255);
442
// CHK_POTI(Parameter_NaviGpsP,EE_Parameter.NaviGpsP,0,255);
440
 CHK_POTI(Parameter_NaviGpsI,EE_Parameter.NaviGpsI,0,255);
443
// CHK_POTI(Parameter_NaviGpsI,EE_Parameter.NaviGpsI,0,255);
441
 CHK_POTI(Parameter_NaviGpsD,EE_Parameter.NaviGpsD,0,255);
444
// CHK_POTI(Parameter_NaviGpsD,EE_Parameter.NaviGpsD,0,255);
442
 CHK_POTI(Parameter_NaviGpsACC,EE_Parameter.NaviGpsACC,0,255);
445
// CHK_POTI(Parameter_NaviGpsACC,EE_Parameter.NaviGpsACC,0,255);
-
 
446
// CHK_POTI_MM(Parameter_NaviOperatingRadius,EE_Parameter.NaviOperatingRadius,10,255);
-
 
447
// CHK_POTI(Parameter_NaviWindCorrection,EE_Parameter.NaviWindCorrection,0,255);
-
 
448
// CHK_POTI(Parameter_NaviSpeedCompensation,EE_Parameter.NaviSpeedCompensation,0,255);
-
 
449
 
443
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl,0,255);
450
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl,0,255);
Line 444... Line 451...
444
 
451
 
445
 Ki = (float) Parameter_I_Faktor * 0.0001;
452
 Ki = (float) Parameter_I_Faktor * 0.0001;
446
 MAX_GAS = EE_Parameter.Gas_Max;
453
 MAX_GAS = EE_Parameter.Gas_Max;
447
 MIN_GAS = EE_Parameter.Gas_Min;
454
 MIN_GAS = EE_Parameter.Gas_Min;
Line 448... Line -...
448
}
-
 
449
 
455
}
450
 
456
 
451
 
457
 
452
 
458
 
453
//############################################################################
459
//############################################################################
Line 556... Line 562...
556
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
562
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
557
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
563
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
558
                         eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting);  // aktiven Datensatz merken
564
                         eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting);  // aktiven Datensatz merken
559
                        }
565
                        }
560
//                        else
566
//                        else
561
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 20 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
567
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
562
                          {
568
                          {
563
                           WinkelOut.CalcState = 1;
569
                           WinkelOut.CalcState = 1;
564
                           beeptime = 1000;
570
                           beeptime = 1000;
565
                          }
571
                          }
566
                          else
572
                          else
Line 725... Line 731...
725
    if(Notlandung)  {MaxStickNick = 0; MaxStickRoll = 0;}
731
    if(Notlandung)  {MaxStickNick = 0; MaxStickRoll = 0;}
Line 726... Line 732...
726
 
732
 
727
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
733
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
728
// Looping?
734
// Looping?
729
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
735
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
730
  if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_LINKS)  Looping_Links = 1;
736
  if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_LINKS)  Looping_Links = 1;
731
  else
737
  else
732
   {
738
   {
733
     {
739
     {
734
      if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0;  
740
      if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0;  
735
     }  
741
     }  
736
   }
742
   }
737
  if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1;
743
  if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1;
738
   else
744
   else
739
   {
745
   {
740
   if(Looping_Rechts) // Hysterese
746
   if(Looping_Rechts) // Hysterese
741
     {
747
     {
742
      if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0;
748
      if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0;
743
     }
749
     }
Line 744... Line 750...
744
   }
750
   }
745
 
751
 
746
  if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_OBEN) Looping_Oben = 1;
752
  if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_OBEN) Looping_Oben = 1;
747
  else
753
  else
748
   {
754
   {
749
    if(Looping_Oben)  // Hysterese
755
    if(Looping_Oben)  // Hysterese
750
     {
756
     {
751
      if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0;  
757
      if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0;  
752
     }  
758
     }  
753
   }
759
   }
754
  if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_UNTEN) Looping_Unten = 1;
760
  if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_UNTEN) Looping_Unten = 1;
755
   else
761
   else
756
   {
762
   {
757
    if(Looping_Unten) // Hysterese
763
    if(Looping_Unten) // Hysterese
Line 1185... Line 1191...
1185
 if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung
1191
 if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung
1186
  {
1192
  {
1187
    int tmp_int;
1193
    int tmp_int;
1188
    if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER)  // Regler wird über Schalter gesteuert
1194
    if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER)  // Regler wird über Schalter gesteuert
1189
    {
1195
    {
-
 
1196
    if(((EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && ((Parameter_MaxHoehe > 50) && (Parameter_MaxHoehe < 180))) ||
1190
     if(Parameter_MaxHoehe < 50)
1197
      (!(EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && (Parameter_MaxHoehe < 50)))
1191
      {
1198
      {
1192
       SollHoehe = HoehenWert - 20;  // Parameter_MaxHoehe ist der PPM-Wert des Schalters
1199
       SollHoehe = HoehenWert - 20;  // Parameter_MaxHoehe ist der PPM-Wert des Schalters
1193
       HoehenReglerAktiv = 0;
1200
       HoehenReglerAktiv = 0;
1194
      }
1201
      }
1195
      else  
1202
      else