Subversion Repositories FlightCtrl

Rev

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

Rev 1715 Rev 1716
Line 156... Line 156...
156
volatile unsigned char FCFlags = 0;
156
volatile unsigned char FCFlags = 0;
157
long GIER_GRAD_FAKTOR = 1291;
157
long GIER_GRAD_FAKTOR = 1291;
158
signed int KopplungsteilNickRoll,KopplungsteilRollNick;
158
signed int KopplungsteilNickRoll,KopplungsteilRollNick;
159
signed int tmp_motorwert[MAX_MOTORS];
159
signed int tmp_motorwert[MAX_MOTORS];
160
char VarioCharacter = ' ';
160
char VarioCharacter = ' ';
-
 
161
int horizontalGas = K_GIER, horizontalNick = K_ROLL; // by Znib
Line 161... Line 162...
161
 
162
 
162
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
163
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
163
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
164
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
Line 588... Line 589...
588
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
589
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
589
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
590
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
590
 Ki = 10300 / (Parameter_I_Faktor + 1);
591
 Ki = 10300 / (Parameter_I_Faktor + 1);
591
 MAX_GAS = EE_Parameter.Gas_Max;
592
 MAX_GAS = EE_Parameter.Gas_Max;
592
 MIN_GAS = EE_Parameter.Gas_Min;
593
 MIN_GAS = EE_Parameter.Gas_Min;
593
 
594
 
-
 
595
 // by Znib
-
 
596
 if (Parameter_UserParam1 == 1  ||  Parameter_UserParam1 == 4)
-
 
597
 {
-
 
598
   // mode 1 oder 4
-
 
599
  horizontalGas  = K_ROLL;
-
 
600
  horizontalNick = K_GIER;
-
 
601
 }
-
 
602
 else
-
 
603
 {
-
 
604
  horizontalGas  = K_GIER;
-
 
605
  horizontalNick = K_ROLL;
-
 
606
 }
-
 
607
 
594
 tmp = EE_Parameter.OrientationModeControl;
608
 tmp = EE_Parameter.OrientationModeControl;
595
 if(tmp > 50)
609
 if(tmp > 50)
596
   {
610
   {
597
#ifdef SWITCH_LEARNS_CAREFREE
611
#ifdef SWITCH_LEARNS_CAREFREE
598
    if(!CareFree) ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2;
612
    if(!CareFree) ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2;
Line 690... Line 704...
690
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
704
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
691
                {
705
                {
692
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
706
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
693
// auf Nullwerte kalibrieren
707
// auf Nullwerte kalibrieren
694
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
708
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
695
                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75)  // Neutralwerte
709
                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] > 75)  // Neutralwerte
696
                    {
710
                    {
697
                    if(++delay_neutral > 200)  // nicht sofort
711
                    if(++delay_neutral > 200)  // nicht sofort
698
                        {
712
                        {
699
                        GRN_OFF;
713
                        GRN_OFF;
700
                        MotorenEin = 0;
714
                        MotorenEin = 0;
701
                        delay_neutral = 0;
715
                        delay_neutral = 0;
702
                        modell_fliegt = 0;
716
                        modell_fliegt = 0;
703
                        if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70)
717
                        if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]]) > 70)
704
                        {
718
                        {
705
                         unsigned char setting=1;
719
                         unsigned char setting=1;
706
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
720
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
707
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
721
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
708
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
722
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
709
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
723
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
710
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
724
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
711
                         SetActiveParamSet(setting);  // aktiven Datensatz merken
725
                         SetActiveParamSet(setting);  // aktiven Datensatz merken
712
                        }
726
                        }
713
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
727
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
714
                          {
728
                          {
715
                           WinkelOut.CalcState = 1;
729
                           WinkelOut.CalcState = 1;
716
                           beeptime = 1000;
730
                           beeptime = 1000;
717
                          }
731
                          }
718
                          else
732
                          else
Line 732... Line 746...
732
                           Piep(GetActiveParamSet(),120);
746
                           Piep(GetActiveParamSet(),120);
733
                         }
747
                         }
734
                        }
748
                        }
735
                    }
749
                    }
736
                 else
750
                 else
737
                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75)  // ACC Neutralwerte speichern
751
                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] < -75)  // ACC Neutralwerte speichern
738
                    {
752
                    {
739
                    if(++delay_neutral > 200)  // nicht sofort
753
                    if(++delay_neutral > 200)  // nicht sofort
740
                        {
754
                        {
741
                        GRN_OFF;
755
                        GRN_OFF;
742
                        MotorenEin = 0;
756
                        MotorenEin = 0;
Line 755... Line 769...
755
            if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
769
            if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
756
                {
770
                {
757
                                        // Motoren Starten
771
                                        // Motoren Starten
758
                                        if(!MotorenEin)
772
                                        if(!MotorenEin)
759
                        {
773
                        {
760
                                                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75)
774
                                                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] < -75)
761
                                                {
775
                                                {
762
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
776
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
763
// Einschalten
777
// Einschalten
764
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
778
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
765
                                                        if(++delay_einschalten > 200)
779
                                                        if(++delay_einschalten > 200)
Line 792... Line 806...
792
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
806
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
793
// Auschalten
807
// Auschalten
794
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
808
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
795
                                        else // only if motors are running
809
                                        else // only if motors are running
796
                                        {
810
                                        {
797
                                                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75)
811
                                                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] > 75)
798
                                                {
812
                                                {
799
                                                        if(++delay_ausschalten > 200)  // nicht sofort
813
                                                        if(++delay_ausschalten > 200)  // nicht sofort
800
                                                        {
814
                                                        {
801
                                                                MotorenEin = 0;
815
                                                                MotorenEin = 0;
802
                                                                delay_ausschalten = 0;
816
                                                                delay_ausschalten = 0;