Rev 1705 | Rev 1719 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1705 | Rev 1707 | ||
---|---|---|---|
Line 682... | Line 682... | ||
682 | sollGier = 0; |
682 | sollGier = 0; |
683 | Mess_Integral_Gier = 0; |
683 | Mess_Integral_Gier = 0; |
684 | if(modell_fliegt == 250) |
684 | if(modell_fliegt == 250) |
685 | { |
685 | { |
686 | NeueKompassRichtungMerken = 1; |
686 | NeueKompassRichtungMerken = 1; |
687 | // Mess_Integral_Gier2 = 0; |
- | |
688 | } |
687 | } |
689 | } else FCFlags |= FCFLAG_FLY; |
688 | } else FCFlags |= FCFLAG_FLY; |
Line 690... | Line 689... | ||
690 | 689 | ||
691 | if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0) |
690 | if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0) |
Line 709... | Line 708... | ||
709 | if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
708 | if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
710 | if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
709 | if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
711 | if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
710 | if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
712 | SetActiveParamSet(setting); // aktiven Datensatz merken |
711 | SetActiveParamSet(setting); // aktiven Datensatz merken |
713 | } |
712 | } |
714 | // else |
- | |
715 | if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) |
713 | if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) |
716 | { |
714 | { |
717 | WinkelOut.CalcState = 1; |
715 | WinkelOut.CalcState = 1; |
718 | beeptime = 1000; |
716 | beeptime = 1000; |
719 | } |
717 | } |
Line 820... | Line 818... | ||
820 | stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
818 | stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
821 | stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
819 | stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
822 | stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
820 | stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
823 | stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
821 | stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
Line 824... | Line -... | ||
824 | - | ||
- | 822 | ||
- | 823 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 824 | // CareFree und freie Wahl der vorderen Richtung |
|
825 | 825 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
Line 826... | Line 826... | ||
826 | signed char sintab[31] = { 0, 2, 4, 6, 7, 8, 8, 8, 7, 6, 4, 2, 0, -2, -4, -6, -7, -8, -8, -8, -7, -6, -4, -2, 0, 2, 4, 6, 7, 8, 8}; |
826 | signed char sintab[31] = { 0, 2, 4, 6, 7, 8, 8, 8, 7, 6, 4, 2, 0, -2, -4, -6, -7, -8, -8, -8, -7, -6, -4, -2, 0, 2, 4, 6, 7, 8, 8}; |
827 | 827 | ||
828 | if(CareFree) |
828 | if(CareFree) |
Line 867... | Line 867... | ||
867 | if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas; |
867 | if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas; |
868 | } |
868 | } |
869 | if(StickGas < 0) StickGas = 0; |
869 | if(StickGas < 0) StickGas = 0; |
Line 870... | Line 870... | ||
870 | 870 | ||
871 | if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
- | |
872 | //if(GyroFaktor < 0) GyroFaktor = 0; |
- | |
Line 873... | Line 871... | ||
873 | //if(IntegralFaktor < 0) IntegralFaktor = 0; |
871 | if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
874 | 872 | ||
875 | if(abs(StickNick/STICK_GAIN) > MaxStickNick) |
873 | if(abs(StickNick/STICK_GAIN) > MaxStickNick) |
876 | { |
874 | { |
Line 1038... | Line 1036... | ||
1038 | MittelIntegralNick /= ABGLEICH_ANZAHL; |
1036 | MittelIntegralNick /= ABGLEICH_ANZAHL; |
1039 | MittelIntegralRoll /= ABGLEICH_ANZAHL; |
1037 | MittelIntegralRoll /= ABGLEICH_ANZAHL; |
1040 | IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
1038 | IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
1041 | IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
1039 | IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
1042 | IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL; |
1040 | IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL; |
1043 | #define MAX_I 0//(Poti2/10) |
1041 | #define MAX_I 0 |
1044 | // Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
1042 | // Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
1045 | IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick); |
1043 | IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick); |
1046 | ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich; |
1044 | ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich; |
1047 | // Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
1045 | // Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
1048 | IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll); |
1046 | IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll); |
Line 1062... | Line 1060... | ||
1062 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1060 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1063 | MittelIntegralNick2 /= ABGLEICH_ANZAHL; |
1061 | MittelIntegralNick2 /= ABGLEICH_ANZAHL; |
1064 | MittelIntegralRoll2 /= ABGLEICH_ANZAHL; |
1062 | MittelIntegralRoll2 /= ABGLEICH_ANZAHL; |
1065 | tmp_long = IntegralNick2 - IntegralNick; |
1063 | tmp_long = IntegralNick2 - IntegralNick; |
1066 | tmp_long2 = IntegralRoll2 - IntegralRoll; |
1064 | tmp_long2 = IntegralRoll2 - IntegralRoll; |
1067 | //DebugOut.Analog[25] = MittelIntegralRoll2 / 26; |
- | |
Line 1068... | Line 1065... | ||
1068 | 1065 | ||
1069 | IntegralFehlerNick = tmp_long; |
1066 | IntegralFehlerNick = tmp_long; |
1070 | IntegralFehlerRoll = tmp_long2; |
1067 | IntegralFehlerRoll = tmp_long2; |
1071 | Mess_IntegralNick2 -= IntegralFehlerNick; |
1068 | Mess_IntegralNick2 -= IntegralFehlerNick; |