Subversion Repositories FlightCtrl

Rev

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

Rev 1793 Rev 1803
Line 157... Line 157...
157
volatile unsigned char FC_StatusFlags = 0;
157
volatile unsigned char FC_StatusFlags = 0;
158
long GIER_GRAD_FAKTOR = 1291;
158
long GIER_GRAD_FAKTOR = 1291;
159
signed int KopplungsteilNickRoll,KopplungsteilRollNick;
159
signed int KopplungsteilNickRoll,KopplungsteilRollNick;
160
signed int tmp_motorwert[MAX_MOTORS];
160
signed int tmp_motorwert[MAX_MOTORS];
161
char VarioCharacter = ' ';
161
char VarioCharacter = ' ';
-
 
162
int horizontalGas = K_GIER, horizontalNick = K_ROLL; // by Znib
Line 162... Line 163...
162
 
163
 
163
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
164
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
164
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
165
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
Line 601... Line 602...
601
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
602
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
602
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
603
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
603
 Ki = 10300 / (Parameter_I_Faktor + 1);
604
 Ki = 10300 / (Parameter_I_Faktor + 1);
604
 MAX_GAS = EE_Parameter.Gas_Max;
605
 MAX_GAS = EE_Parameter.Gas_Max;
605
 MIN_GAS = EE_Parameter.Gas_Min;
606
 MIN_GAS = EE_Parameter.Gas_Min;
606
 
607
 
-
 
608
 // by Znib
-
 
609
 if (Parameter_UserParam1 == 1  ||  Parameter_UserParam1 == 4)
-
 
610
 {
-
 
611
   // mode 1 oder 4
-
 
612
  horizontalGas  = K_ROLL;
-
 
613
  horizontalNick = K_GIER;
-
 
614
 }
-
 
615
 else
-
 
616
 {
-
 
617
  horizontalGas  = K_GIER;
-
 
618
  horizontalNick = K_ROLL;
-
 
619
 }
-
 
620
 
607
 tmp = EE_Parameter.OrientationModeControl;
621
 tmp = EE_Parameter.OrientationModeControl;
608
 if(tmp > 50)
622
 if(tmp > 50)
609
   {
623
   {
610
#ifdef SWITCH_LEARNS_CAREFREE
624
#ifdef SWITCH_LEARNS_CAREFREE
611
    if(!CareFree) ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2;
625
    if(!CareFree) ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2;
Line 703... Line 717...
703
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
717
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
704
                {
718
                {
705
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
719
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
706
// auf Nullwerte kalibrieren
720
// auf Nullwerte kalibrieren
707
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
721
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
708
                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75)  // Neutralwerte
722
                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] > 75)  // Neutralwerte
709
                    {
723
                    {
710
                    if(++delay_neutral > 200)  // nicht sofort
724
                    if(++delay_neutral > 200)  // nicht sofort
711
                        {
725
                        {
712
                        GRN_OFF;
726
                        GRN_OFF;
713
                        MotorenEin = 0;
727
                        MotorenEin = 0;
714
                        delay_neutral = 0;
728
                        delay_neutral = 0;
715
                        modell_fliegt = 0;
729
                        modell_fliegt = 0;
716
                        if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70)
730
                        if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]]) > 70)
717
                        {
731
                        {
718
                         unsigned char setting=1;
732
                         unsigned char setting=1;
719
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
733
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
720
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
734
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
721
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
735
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
722
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
736
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
723
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
737
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
724
                         SetActiveParamSet(setting);  // aktiven Datensatz merken
738
                         SetActiveParamSet(setting);  // aktiven Datensatz merken
725
                        }
739
                        }
726
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
740
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
727
                          {
741
                          {
728
                           WinkelOut.CalcState = 1;
742
                           WinkelOut.CalcState = 1;
729
                           beeptime = 1000;
743
                           beeptime = 1000;
730
                          }
744
                          }
731
                          else
745
                          else
Line 745... Line 759...
745
                           Piep(GetActiveParamSet(),120);
759
                           Piep(GetActiveParamSet(),120);
746
                         }
760
                         }
747
                        }
761
                        }
748
                    }
762
                    }
749
                 else
763
                 else
750
                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75)  // ACC Neutralwerte speichern
764
                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] < -75)  // ACC Neutralwerte speichern
751
                    {
765
                    {
752
                    if(++delay_neutral > 200)  // nicht sofort
766
                    if(++delay_neutral > 200)  // nicht sofort
753
                        {
767
                        {
754
                        GRN_OFF;
768
                        GRN_OFF;
755
                        MotorenEin = 0;
769
                        MotorenEin = 0;
Line 769... Line 783...
769
            if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
783
            if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
770
                {
784
                {
771
                                        // Motoren Starten
785
                                        // Motoren Starten
772
                                        if(!MotorenEin)
786
                                        if(!MotorenEin)
773
                        {
787
                        {
774
                                                if((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) && (PPM_in[EE_Parameter.MotorSafetySwitch] < -75 || EE_Parameter.MotorSafetySwitch == 0))
788
                                                if((PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] < -75) && (PPM_in[EE_Parameter.MotorSafetySwitch] < -75 || EE_Parameter.MotorSafetySwitch == 0))
775
                                                {
789
                                                {
776
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
790
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
777
// Einschalten
791
// Einschalten
778
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
792
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
779
                                                        if(++delay_einschalten > 200)
793
                                                        if(++delay_einschalten > 200)
Line 806... Line 820...
806
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
820
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
807
// Auschalten
821
// Auschalten
808
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
822
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
809
                                        else // only if motors are running
823
                                        else // only if motors are running
810
                                        {
824
                                        {
811
                                                if((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) && (PPM_in[EE_Parameter.MotorSafetySwitch] < -75 || EE_Parameter.MotorSafetySwitch == 0))
825
                                                if((PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] > 75) && (PPM_in[EE_Parameter.MotorSafetySwitch] < -75 || EE_Parameter.MotorSafetySwitch == 0))
812
                                                {
826
                                                {
813
                                                        if(++delay_ausschalten > 200)  // nicht sofort
827
                                                        if(++delay_ausschalten > 200)  // nicht sofort
814
                                                        {
828
                                                        {
815
                                                                MotorenEin = 0;
829
                                                                MotorenEin = 0;
816
                                                                delay_ausschalten = 0;
830
                                                                delay_ausschalten = 0;