Subversion Repositories FlightCtrl

Rev

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

Rev 1596 Rev 1630
Line 157... Line 157...
157
volatile unsigned char FCFlags = 0;
157
volatile unsigned char FCFlags = 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 isCalibrated = 0; // by Znib
-
 
163
int horizontalGas = K_GIER, horizontalNick = K_ROLL; // by Znib
Line 162... Line 164...
162
 
164
 
163
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
165
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
164
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
166
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
Line 543... Line 545...
543
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
545
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
544
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
546
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
545
 Ki = 10300 / (Parameter_I_Faktor + 1);
547
 Ki = 10300 / (Parameter_I_Faktor + 1);
546
 MAX_GAS = EE_Parameter.Gas_Max;
548
 MAX_GAS = EE_Parameter.Gas_Max;
547
 MIN_GAS = EE_Parameter.Gas_Min;
549
 MIN_GAS = EE_Parameter.Gas_Min;
-
 
550
 
-
 
551
 // by Znib
-
 
552
 if (Parameter_UserParam1 == 1  ||  Parameter_UserParam1 == 4)
-
 
553
 {
-
 
554
   // mode 1 oder 4
-
 
555
  horizontalGas  = K_ROLL;
-
 
556
  horizontalNick = K_GIER;
-
 
557
 }
-
 
558
 else
-
 
559
 {
-
 
560
  horizontalGas  = K_GIER;
-
 
561
  horizontalNick = K_ROLL;
-
 
562
 }
548
}
563
}
Line 549... Line 564...
549
 
564
 
550
//############################################################################
565
//############################################################################
551
//
566
//
Line 626... Line 641...
626
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
641
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
627
                {
642
                {
628
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
643
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
629
// auf Nullwerte kalibrieren
644
// auf Nullwerte kalibrieren
630
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
645
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
631
                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75)  // Neutralwerte
646
                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] > 75)  // Neutralwerte
632
                    {
647
                    {
633
                    if(++delay_neutral > 200)  // nicht sofort
648
                    if(++delay_neutral > 200)  // nicht sofort
634
                        {
649
                        {
635
                        GRN_OFF;
650
                        GRN_OFF;
636
                        MotorenEin = 0;
651
                        MotorenEin = 0;
637
                        delay_neutral = 0;
652
                        delay_neutral = 0;
638
                        modell_fliegt = 0;
653
                        modell_fliegt = 0;
639
                        if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70)
654
                        if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]]) > 70)
640
                        {
655
                        {
641
                         unsigned char setting=1;
656
                         unsigned char setting=1;
642
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
657
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
643
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
658
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
644
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
659
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
645
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
660
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
646
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
661
                         if(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
647
                         SetActiveParamSetNumber(setting);  // aktiven Datensatz merken
662
                         SetActiveParamSetNumber(setting);  // aktiven Datensatz merken
648
                        }
663
                        }
649
//                        else
664
//                        else
650
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
665
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[horizontalNick]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
651
                          {
666
                          {
652
                           WinkelOut.CalcState = 1;
667
                           WinkelOut.CalcState = 1;
653
                           beeptime = 1000;
668
                           beeptime = 1000;
654
                          }
669
                          }
655
                          else
670
                          else
Line 662... Line 677...
662
                             if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
677
                             if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
663
                            }
678
                            }
664
                                                   ServoActive = 0;
679
                                                   ServoActive = 0;
665
                           SetNeutral();
680
                           SetNeutral();
666
                                                   ServoActive = 1;
681
                                                   ServoActive = 1;
-
 
682
                                                   isCalibrated = 1;  // by Znib
667
                                                   DDRD  |=0x80; // enable J7 -> Servo signal
683
                                                   DDRD  |=0x80; // enable J7 -> Servo signal
668
                           Piep(GetActiveParamSetNumber(),120);
684
                           Piep(GetActiveParamSetNumber(),120);
669
                         }
685
                         }
670
                        }
686
                        }
671
                    }
687
                    }
672
                 else
688
                 else
673
                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75)  // ACC Neutralwerte speichern
689
                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] < -75)  // ACC Neutralwerte speichern
674
                    {
690
                    {
675
                    if(++delay_neutral > 200)  // nicht sofort
691
                    if(++delay_neutral > 200)  // nicht sofort
676
                        {
692
                        {
677
                        GRN_OFF;
693
                        GRN_OFF;
678
                        eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],0xff); // Werte löschen
694
                        eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],0xff); // Werte löschen
Line 697... Line 713...
697
            if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
713
            if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
698
                {
714
                {
699
                                        // Motoren Starten
715
                                        // Motoren Starten
700
                                        if(!MotorenEin)
716
                                        if(!MotorenEin)
701
                        {
717
                        {
702
                                                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75)
718
                                                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] < -75  &&
-
 
719
                                                   (Parameter_UserParam2 == 0  ||  isCalibrated == 1))
703
                                                {
720
                                                {
704
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
721
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
705
// Einschalten
722
// Einschalten
706
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
723
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
707
                                                        if(++delay_einschalten > 200)
724
                                                        if(++delay_einschalten > 200)
Line 726... Line 743...
726
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
743
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
727
// Auschalten
744
// Auschalten
728
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
745
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
729
                                        else // only if motors are running
746
                                        else // only if motors are running
730
                                        {
747
                                        {
731
                                                if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75)
748
                                                if(PPM_in[EE_Parameter.Kanalbelegung[horizontalGas]] > 75)
732
                                                {
749
                                                {
733
                                                        if(++delay_ausschalten > 200)  // nicht sofort
750
                                                        if(++delay_ausschalten > 200)  // nicht sofort
734
                                                        {
751
                                                        {
735
                                                                MotorenEin = 0;
752
                                                                MotorenEin = 0;
736
                                                                delay_ausschalten = 0;
753
                                                                delay_ausschalten = 0;