Rev 1722 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1722 | Rev 1728 | ||
---|---|---|---|
Line 99... | Line 99... | ||
99 | long HoehenWert = 0; |
99 | long HoehenWert = 0; |
100 | long SollHoehe = 0; |
100 | long SollHoehe = 0; |
101 | int LageKorrekturRoll = 0,LageKorrekturNick = 0, HoverGas = 0; |
101 | int LageKorrekturRoll = 0,LageKorrekturNick = 0, HoverGas = 0; |
102 | //float Ki = FAKTOR_I; |
102 | //float Ki = FAKTOR_I; |
103 | int Ki = 10300 / 33; |
103 | int Ki = 10300 / 33; |
- | 104 | int KiHH = 10300 / 33; // MartinR : für Ki bei HH über Schalter |
|
- | 105 | ||
104 | unsigned char Looping_Nick = 0,Looping_Roll = 0; |
106 | unsigned char Looping_Nick = 0,Looping_Roll = 0; |
105 | unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0; |
107 | unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0; |
Line 106... | Line 108... | ||
106 | 108 | ||
107 | unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
109 | unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
Line 149... | Line 151... | ||
149 | unsigned char Parameter_ExternalControl; |
151 | unsigned char Parameter_ExternalControl; |
150 | unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5; |
152 | unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5; |
151 | unsigned char CareFree = 0; |
153 | unsigned char CareFree = 0; |
Line 152... | Line 154... | ||
152 | 154 | ||
153 | signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
155 | signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
- | 156 | //int MaxStickNick = 0,MaxStickRoll = 0; MartinR: so war es |
|
- | 157 | int MaxStickNick = 0,MaxStickRoll = 0,stick_nick_neutral = 0,stick_roll_neutral = 0; // MartinR: stick_.._neutral hinzugefügt |
|
154 | int MaxStickNick = 0,MaxStickRoll = 0; |
158 | |
155 | unsigned int modell_fliegt = 0; |
159 | unsigned int modell_fliegt = 0; |
156 | volatile unsigned char FCFlags = 0; |
160 | volatile unsigned char FCFlags = 0; |
157 | long GIER_GRAD_FAKTOR = 1291; |
161 | long GIER_GRAD_FAKTOR = 1291; |
158 | signed int KopplungsteilNickRoll,KopplungsteilRollNick; |
162 | signed int KopplungsteilNickRoll,KopplungsteilRollNick; |
Line 396... | Line 400... | ||
396 | 400 | ||
397 | // Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
401 | // Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
398 | Mess_Integral_Gier += MesswertGier; |
402 | Mess_Integral_Gier += MesswertGier; |
399 | ErsatzKompass += MesswertGier; |
403 | ErsatzKompass += MesswertGier; |
- | 404 | // Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
|
- | 405 | if((EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) || (Parameter_UserParam1 > 50)) IntegralFaktor = 0; // MartinR: zusätzlich |
|
400 | // Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
406 | |
- | 407 | //if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) // MartinR : so war es |
|
- | 408 | if(!Looping_Nick && !Looping_Roll && IntegralFaktor && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) // MartinR: zusätzlich "&& IntegralFaktor" |
|
401 | if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
409 | |
402 | { |
410 | { |
403 | tmpl3 = (MesswertRoll * winkel_nick) / 2048L; |
411 | tmpl3 = (MesswertRoll * winkel_nick) / 2048L; |
404 | tmpl3 *= Parameter_AchsKopplung2; //65 |
412 | tmpl3 *= Parameter_AchsKopplung2; //65 |
405 | tmpl3 /= 4096L; |
413 | tmpl3 /= 4096L; |
Line 463... | Line 471... | ||
463 | #define D_LIMIT 128 |
471 | #define D_LIMIT 128 |
Line 464... | Line 472... | ||
464 | 472 | ||
465 | MesswertNick = HiResNick / 8; |
473 | MesswertNick = HiResNick / 8; |
Line -... | Line 474... | ||
- | 474 | MesswertRoll = HiResRoll / 8; |
|
- | 475 | ||
- | 476 | // MartinR : so war es Anfang |
|
466 | MesswertRoll = HiResRoll / 8; |
477 | /* |
467 | 478 | |
|
468 | if(AdWertNick < 15) MesswertNick = -1000; if(AdWertNick < 7) MesswertNick = -2000; |
479 | if(AdWertNick < 15) MesswertNick = -1000; if(AdWertNick < 7) MesswertNick = -2000; |
469 | if(PlatinenVersion == 10) { if(AdWertNick > 1010) MesswertNick = +1000; if(AdWertNick > 1017) MesswertNick = +2000; } |
480 | if(PlatinenVersion == 10) { if(AdWertNick > 1010) MesswertNick = +1000; if(AdWertNick > 1017) MesswertNick = +2000; } |
470 | else { if(AdWertNick > 2000) MesswertNick = +1000; if(AdWertNick > 2015) MesswertNick = +2000; } |
481 | else { if(AdWertNick > 2000) MesswertNick = +1000; if(AdWertNick > 2015) MesswertNick = +2000; } |
471 | if(AdWertRoll < 15) MesswertRoll = -1000; if(AdWertRoll < 7) MesswertRoll = -2000; |
482 | if(AdWertRoll < 15) MesswertRoll = -1000; if(AdWertRoll < 7) MesswertRoll = -2000; |
- | 483 | if(PlatinenVersion == 10) { if(AdWertRoll > 1010) MesswertRoll = +1000; if(AdWertRoll > 1017) MesswertRoll = +2000; } |
|
- | 484 | else { if(AdWertRoll > 2000) MesswertRoll = +1000; if(AdWertRoll > 2015) MesswertRoll = +2000; } |
|
- | 485 | |
|
- | 486 | // MartinR : FC 1.0: Sprung von 500 auf 2000 !! FC-ME: Sprung von 1000 auf 2000 |
|
- | 487 | */ |
|
- | 488 | // MartinR : so war es Ende |
|
- | 489 | ||
- | 490 | // MartinR : Neu Anfang |
|
- | 491 | if(PlatinenVersion == 10) |
|
- | 492 | { |
|
- | 493 | if(AdWertNick > 1010) MesswertNick = +600; |
|
- | 494 | if(AdWertNick > 1017) MesswertNick = +800; |
|
- | 495 | if(AdWertNick < 15) MesswertNick = -600; |
|
- | 496 | if(AdWertNick < 7) MesswertNick = -800; |
|
- | 497 | if(AdWertRoll > 1010) MesswertRoll = +600; |
|
- | 498 | if(AdWertRoll > 1017) MesswertRoll = +800; |
|
- | 499 | if(AdWertRoll < 15) MesswertRoll = -600; |
|
- | 500 | if(AdWertRoll < 7) MesswertRoll = -800; |
|
- | 501 | } |
|
- | 502 | else |
|
- | 503 | { |
|
- | 504 | if(AdWertNick > 2000) MesswertNick = +1200; |
|
- | 505 | if(AdWertNick > 2015) MesswertNick = +1600; |
|
- | 506 | if(AdWertNick < 15) MesswertNick = -1200; |
|
- | 507 | if(AdWertNick < 7) MesswertNick = -1600; |
|
- | 508 | if(AdWertRoll > 2000) MesswertRoll = +1200; |
|
- | 509 | if(AdWertRoll > 2015) MesswertRoll = +1600; |
|
- | 510 | if(AdWertRoll < 15) MesswertRoll = -1200; |
|
- | 511 | if(AdWertRoll < 7) MesswertRoll = -1600; |
|
Line 472... | Line 512... | ||
472 | if(PlatinenVersion == 10) { if(AdWertRoll > 1010) MesswertRoll = +1000; if(AdWertRoll > 1017) MesswertRoll = +2000; } |
512 | } |
473 | else { if(AdWertRoll > 2000) MesswertRoll = +1000; if(AdWertRoll > 2015) MesswertRoll = +2000; } |
513 | // MartinR : Neu Ende |
474 | 514 | ||
475 | if(Parameter_Gyro_D) |
515 | if(Parameter_Gyro_D) |
Line 559... | Line 599... | ||
559 | CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255); |
599 | CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255); |
560 | CHK_POTI(Parameter_Servo3,EE_Parameter.Servo3); |
600 | CHK_POTI(Parameter_Servo3,EE_Parameter.Servo3); |
561 | CHK_POTI(Parameter_Servo4,EE_Parameter.Servo4); |
601 | CHK_POTI(Parameter_Servo4,EE_Parameter.Servo4); |
562 | CHK_POTI(Parameter_Servo5,EE_Parameter.Servo5); |
602 | CHK_POTI(Parameter_Servo5,EE_Parameter.Servo5); |
563 | CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe); |
603 | CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe); |
564 | CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe); |
604 | //CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe); // MartinR: Zeile war doppelt |
565 | CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung); |
605 | CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung); |
566 | CHK_POTI(Parameter_Hoehe_GPS_Z,EE_Parameter.Hoehe_GPS_Z); |
606 | CHK_POTI(Parameter_Hoehe_GPS_Z,EE_Parameter.Hoehe_GPS_Z); |
567 | CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung); |
607 | CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung); |
568 | CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I); |
608 | CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I); |
569 | CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D); |
609 | CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D); |
Line 586... | Line 626... | ||
586 | CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection); |
626 | CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection); |
587 | // CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
627 | // CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
588 | CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability); |
628 | CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability); |
589 | CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl); |
629 | CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl); |
590 | Ki = 10300 / (Parameter_I_Faktor + 1); |
630 | Ki = 10300 / (Parameter_I_Faktor + 1); |
- | 631 | ||
- | 632 | ||
- | 633 | if(Parameter_UserParam1 > 50) KiHH = 10300 / (Parameter_UserParam2 + 1); else KiHH = Ki; // MartinR : für HH über Schalter |
|
- | 634 | Parameter_NaviGpsModeControl = EE_Parameter.NaviGpsModeControl; //MartinR: Standard: EE_Parameter.NaviGpsModeControl wird übertragen |
|
- | 635 | if(!IntegralFaktor) Parameter_NaviGpsModeControl= 0; // MartinR: wenn HH dann GPS auf free- Mode |
|
- | 636 | // 0 = free; 100 = AID; 200 = coming home //neu |
|
- | 637 | ||
- | 638 | ||
591 | MAX_GAS = EE_Parameter.Gas_Max; |
639 | MAX_GAS = EE_Parameter.Gas_Max; |
592 | MIN_GAS = EE_Parameter.Gas_Min; |
640 | MIN_GAS = EE_Parameter.Gas_Min; |
Line 593... | Line 641... | ||
593 | 641 | ||
594 | tmp = EE_Parameter.OrientationModeControl; |
642 | tmp = EE_Parameter.OrientationModeControl; |
Line 618... | Line 666... | ||
618 | void MotorRegler(void) |
666 | void MotorRegler(void) |
619 | //############################################################################ |
667 | //############################################################################ |
620 | { |
668 | { |
621 | int pd_ergebnis_nick,pd_ergebnis_roll,tmp_int, tmp_int2; |
669 | int pd_ergebnis_nick,pd_ergebnis_roll,tmp_int, tmp_int2; |
622 | int GierMischanteil,GasMischanteil; |
670 | int GierMischanteil,GasMischanteil; |
- | 671 | ||
- | 672 | static long SummeNickHH=0,SummeRollHH=0; // MartinR: Für ACC-HH Umschaltung Prüfen !!!!!!!!!!!!! |
|
- | 673 | ||
623 | static long sollGier = 0,tmp_long,tmp_long2; |
674 | static long sollGier = 0,tmp_long,tmp_long2; |
624 | static long IntegralFehlerNick = 0; |
675 | static long IntegralFehlerNick = 0; |
625 | static long IntegralFehlerRoll = 0; |
676 | static long IntegralFehlerRoll = 0; |
626 | static unsigned int RcLostTimer; |
677 | static unsigned int RcLostTimer; |
627 | static unsigned char delay_neutral = 0; |
678 | static unsigned char delay_neutral = 0; |
Line 813... | Line 864... | ||
813 | 864 | ||
814 | if(!NewPpmData-- || (FCFlags & FCFLAG_NOTLANDUNG)) |
865 | if(!NewPpmData-- || (FCFlags & FCFLAG_NOTLANDUNG)) |
815 | { |
866 | { |
816 | static int stick_nick,stick_roll; |
867 | static int stick_nick,stick_roll; |
- | 868 | ParameterZuordnung(); |
|
- | 869 | // MartinR: original: |
|
817 | ParameterZuordnung(); |
870 | /* |
818 | stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
871 | stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
819 | stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
872 | stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
820 | stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
873 | stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
- | 874 | stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
|
- | 875 | |
|
- | 876 | */ |
|
- | 877 | // MartinR: geändert Anfang |
|
- | 878 | if(Parameter_UserParam1 > 50) // MartinR: zweiter Stick_P Wert nur, wenn HH über Schalter aktiv ist |
|
- | 879 | { |
|
- | 880 | stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * Parameter_UserParam3 - stick_nick_neutral) / 4; |
|
- | 881 | stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * Parameter_UserParam3 - stick_roll_neutral) / 4 ; |
|
- | 882 | //stick_nick = (PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * Parameter_UserParam3 - stick_nick_neutral); |
|
- | 883 | //stick_roll = (PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * Parameter_UserParam3 - stick_roll_neutral); |
|
- | 884 | } |
|
- | 885 | ||
- | 886 | else |
|
- | 887 | { |
|
- | 888 | stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
|
- | 889 | stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
|
- | 890 | stick_nick_neutral = stick_nick; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR |
|
- | 891 | stick_roll_neutral = stick_roll; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR |
|
- | 892 | } |
|
- | 893 | ||
- | 894 | if(IntegralFaktor) |
|
- | 895 | { |
|
- | 896 | stick_nick_neutral = stick_nick; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR |
|
- | 897 | stick_roll_neutral = stick_roll; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR |
|
- | 898 | stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
|
- | 899 | stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
|
- | 900 | ||
- | 901 | //StickNick = stick_nick - (GPS_Nick + GPS_Nick2); // MartinR: GPS nur im ACC-Mode wirksam wohin verschoben ?? Prüfen !!!!!!!!!!!!!!!!!!!! |
|
- | 902 | //StickRoll = stick_roll - (GPS_Roll + GPS_Roll2); // MartinR: GPS nur im ACC-Mode wirksam |
|
- | 903 | } |
|
- | 904 | else // wenn HH , MartinR |
|
- | 905 | { |
|
- | 906 | //stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; // MartinR: eventuell vor if verschieben |
|
- | 907 | //stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; // MartinR: eventuell vor if verschieben |
|
- | 908 | //StickNick = stick_nick; // MartinR: GPS nur im ACC-Mode wirksam wohin verschoben ?? Prüfen !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|
- | 909 | //StickRoll = stick_roll; // MartinR: GPS nur im ACC-Mode wirksam |
|
- | 910 | } |
|
- | 911 | ||
- | 912 | // MartinR: geändert Ende |
|
Line 821... | Line 913... | ||
821 | stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
913 | |
822 | 914 | ||
823 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
915 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
824 | // CareFree und freie Wahl der vorderen Richtung |
916 | // CareFree und freie Wahl der vorderen Richtung |
Line 825... | Line 917... | ||
825 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
917 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
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}; |
918 | 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 | 919 | ||
828 | if(CareFree) |
920 | if(CareFree) // MartinR: hier kann vermutlich Code gespart werden |
829 | { |
921 | { |
830 | signed int nick, roll; |
922 | signed int nick, roll; |
831 | nick = stick_nick / 4; |
923 | nick = stick_nick / 4; |
832 | roll = stick_roll / 4; |
924 | roll = stick_roll / 4; |
833 | StickNick = ((FromNC_Rotate_C * nick) + (FromNC_Rotate_S * roll)) / (32 / 4); |
925 | StickNick = ((FromNC_Rotate_C * nick) + (FromNC_Rotate_S * roll)) / (32 / 4); |
834 | StickRoll = ((FromNC_Rotate_C * roll) - (FromNC_Rotate_S * nick)) / (32 / 4); |
926 | StickRoll = ((FromNC_Rotate_C * roll) - (FromNC_Rotate_S * nick)) / (32 / 4); |
835 | } |
927 | } |
836 | else |
928 | else // verrechnung des OrientationAngle |
837 | { |
929 | { |
838 | FromNC_Rotate_C = sintab[EE_Parameter.OrientationAngle + 6]; |
930 | FromNC_Rotate_C = sintab[EE_Parameter.OrientationAngle + 6]; |
Line 856... | Line 948... | ||
856 | IntegralFaktorGier = Parameter_Gyro_Gier_I; |
948 | IntegralFaktorGier = Parameter_Gyro_Gier_I; |
Line 857... | Line 949... | ||
857 | 949 | ||
858 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
950 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
859 | //+ Analoge Steuerung per Seriell |
951 | //+ Analoge Steuerung per Seriell |
- | 952 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 953 | // MartinR: ToDo: eventuell die Kombination HH und Steuerung per Seriell nicht zulassen?? |
|
860 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
954 | |
861 | if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 128) |
955 | if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 128) |
862 | { |
956 | { |
863 | StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P; |
957 | StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P; |
864 | StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P; |
958 | StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P; |
865 | StickGier += ExternControl.Gier; |
959 | StickGier += ExternControl.Gier; |
866 | ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung; |
960 | ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung; |
867 | if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas; |
961 | if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas; |
868 | } |
962 | } |
Line 869... | Line 963... | ||
869 | if(StickGas < 0) StickGas = 0; |
963 | if(StickGas < 0) StickGas = 0; |
- | 964 | ||
- | 965 | //if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; // MartinR: so war es |
|
Line 870... | Line 966... | ||
870 | 966 | if((EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) || (Parameter_UserParam1 > 50)) IntegralFaktor = 0; // MartinR geändert |
|
871 | if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
967 | |
872 | 968 | ||
873 | if(abs(StickNick/STICK_GAIN) > MaxStickNick) |
969 | if(abs(StickNick/STICK_GAIN) > MaxStickNick) |
Line 956... | Line 1052... | ||
956 | MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren |
1052 | MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren |
957 | MittelIntegralRoll += IntegralRoll; |
1053 | MittelIntegralRoll += IntegralRoll; |
958 | MittelIntegralNick2 += IntegralNick2; |
1054 | MittelIntegralNick2 += IntegralNick2; |
959 | MittelIntegralRoll2 += IntegralRoll2; |
1055 | MittelIntegralRoll2 += IntegralRoll2; |
Line 960... | Line 1056... | ||
960 | 1056 | ||
- | 1057 | //if(Looping_Nick || Looping_Roll) // MartinR: so war es |
|
- | 1058 | if(Looping_Nick || Looping_Roll || !IntegralFaktor) // MartinR: "|| !IntegralFaktor" hinzugefügt |
|
961 | if(Looping_Nick || Looping_Roll) |
1059 | |
962 | { |
1060 | { |
963 | IntegralAccNick = 0; |
1061 | IntegralAccNick = 0; |
964 | IntegralAccRoll = 0; |
1062 | IntegralAccRoll = 0; |
965 | MittelIntegralNick = 0; |
1063 | MittelIntegralNick = 0; |
966 | MittelIntegralRoll = 0; |
1064 | MittelIntegralRoll = 0; |
967 | MittelIntegralNick2 = 0; |
1065 | MittelIntegralNick2 = 0; |
- | 1066 | MittelIntegralRoll2 = 0; |
|
- | 1067 | ||
- | 1068 | IntegralNick = 0; // MartinR: im HH-Modus alle unbenutzten Integratoren = 0 |
|
- | 1069 | IntegralRoll = 0; // MartinR: im HH-Modus alle unbenutzten Integratoren = 0 |
|
- | 1070 | Mess_IntegralNick = 0; // MartinR: im HH-Modus alle unbenutzten Integratoren = 0 |
|
- | 1071 | Mess_IntegralRoll = 0; // MartinR: im HH-Modus alle unbenutzten Integratoren = 0 |
|
- | 1072 | //Mess_Integral_Gier = 0; // MartinR: im HH-Modus alle unbenutzten Integratoren = 0 |
|
- | 1073 | //Mess_Integral_Gier2 = 0; // MartinR: im HH-Modus alle unbenutzten Integratoren = 0 |
|
968 | MittelIntegralRoll2 = 0; |
1074 | |
969 | Mess_IntegralNick2 = Mess_IntegralNick; |
1075 | Mess_IntegralNick2 = Mess_IntegralNick; |
970 | Mess_IntegralRoll2 = Mess_IntegralRoll; |
1076 | Mess_IntegralRoll2 = Mess_IntegralRoll; |
971 | ZaehlMessungen = 0; |
1077 | ZaehlMessungen = 0; |
972 | LageKorrekturNick = 0; |
1078 | LageKorrekturNick = 0; |
973 | LageKorrekturRoll = 0; |
1079 | LageKorrekturRoll = 0; |
Line 974... | Line 1080... | ||
974 | } |
1080 | } |
975 | 1081 | ||
- | 1082 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 1083 | //if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin)) // MartinR: so war es |
|
976 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1084 | if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin) && IntegralFaktor) // MartinR: "&& IntegralFaktor" hinzugefügt |
977 | if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin)) |
1085 | |
978 | { |
1086 | { |
979 | long tmp_long, tmp_long2; |
1087 | long tmp_long, tmp_long2; |
980 | if(FromNaviCtrl_Value.Kalman_K != -1 /*&& !TrichterFlug*/) |
1088 | if(FromNaviCtrl_Value.Kalman_K != -1 /*&& !TrichterFlug*/) |
Line 1029... | Line 1137... | ||
1029 | if(ZaehlMessungen >= ABGLEICH_ANZAHL) |
1137 | if(ZaehlMessungen >= ABGLEICH_ANZAHL) |
1030 | { |
1138 | { |
1031 | static int cnt = 0; |
1139 | static int cnt = 0; |
1032 | static char last_n_p,last_n_n,last_r_p,last_r_n; |
1140 | static char last_n_p,last_n_n,last_r_p,last_r_n; |
1033 | static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt; |
1141 | static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt; |
1034 | if(!Looping_Nick && !Looping_Roll && !TrichterFlug && EE_Parameter.Driftkomp) |
1142 | //if(!Looping_Nick && !Looping_Roll && !TrichterFlug && EE_Parameter.Driftkomp) // MartinR: so war es |
- | 1143 | if(!Looping_Nick && !Looping_Roll && !TrichterFlug && EE_Parameter.Driftkomp && IntegralFaktor) // MartinR: "&& IntegralFaktor" hinzugefügt |
|
- | 1144 | ||
1035 | { |
1145 | { |
1036 | MittelIntegralNick /= ABGLEICH_ANZAHL; |
1146 | MittelIntegralNick /= ABGLEICH_ANZAHL; |
1037 | MittelIntegralRoll /= ABGLEICH_ANZAHL; |
1147 | MittelIntegralRoll /= ABGLEICH_ANZAHL; |
1038 | IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
1148 | IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
1039 | IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
1149 | IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
Line 1248... | Line 1358... | ||
1248 | 1358 | ||
1249 | #define TRIM_MAX 200 |
1359 | #define TRIM_MAX 200 |
1250 | if(TrimNick > TRIM_MAX) TrimNick = TRIM_MAX; else if(TrimNick <-TRIM_MAX) TrimNick =-TRIM_MAX; |
1360 | if(TrimNick > TRIM_MAX) TrimNick = TRIM_MAX; else if(TrimNick <-TRIM_MAX) TrimNick =-TRIM_MAX; |
Line -... | Line 1361... | ||
- | 1361 | if(TrimRoll > TRIM_MAX) TrimRoll = TRIM_MAX; else if(TrimRoll <-TRIM_MAX) TrimRoll =-TRIM_MAX; |
|
- | 1362 | ||
- | 1363 | //MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN);// MartinR so war es |
|
- | 1364 | //MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN);// MartinR so war es |
|
- | 1365 | ||
- | 1366 | if(!IntegralFaktor) // MartinR : hinzugefügt |
|
- | 1367 | { |
|
- | 1368 | MesswertNick = (long) ((long)MesswertNick * GyroFaktor) / (256L / STICK_GAIN) ; // MartinR : hinzugefügt |
|
- | 1369 | MesswertRoll = (long) ((long)MesswertRoll * GyroFaktor) / (256L / STICK_GAIN) ; // MartinR : hinzugefügt |
|
- | 1370 | } |
|
1251 | if(TrimRoll > TRIM_MAX) TrimRoll = TRIM_MAX; else if(TrimRoll <-TRIM_MAX) TrimRoll =-TRIM_MAX; |
1371 | else // MartinR so war es |
1252 | 1372 | { |
|
- | 1373 | MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN); |
|
- | 1374 | MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN); |
|
1253 | MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN); |
1375 | } |
Line 1254... | Line 1376... | ||
1254 | MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN); |
1376 | |
1255 | MesswertGier = (long)(MesswertGier * 2 * (long)GyroFaktorGier) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktorGier) / (2 * (44000 / STICK_GAIN)); |
1377 | MesswertGier = (long)(MesswertGier * 2 * (long)GyroFaktorGier) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktorGier) / (2 * (44000 / STICK_GAIN)); |
1256 | 1378 | ||
Line 1341... | Line 1463... | ||
1341 | } |
1463 | } |
Line 1342... | Line 1464... | ||
1342 | 1464 | ||
1343 | // if height control is activated by an rc channel |
1465 | // if height control is activated by an rc channel |
1344 | if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
1466 | if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
1345 | { // check if parameter is less than activation threshold |
1467 | { // check if parameter is less than activation threshold |
- | 1468 | // if(Parameter_MaxHoehe < 50) // for 3 or 2-state switch height control is disabled in lowest position // MartinR :so war es |
|
1346 | if(Parameter_MaxHoehe < 50) // for 3 or 2-state switch height control is disabled in lowest position |
1469 | if(Parameter_MaxHoehe < 50 || (Parameter_UserParam1 > 140) ) // MartinR: Schalter aus oder HH ohne Höhenregler über UsererParam1 an |
1347 | { //height control not active |
1470 | { //height control not active |
1348 | if(!delay--) |
1471 | if(!delay--) |
1349 | { |
1472 | { |
1350 | HoehenReglerAktiv = 0; // disable height control |
1473 | HoehenReglerAktiv = 0; // disable height control |
Line 1359... | Line 1482... | ||
1359 | } |
1482 | } |
1360 | } |
1483 | } |
1361 | else // no switchable height control |
1484 | else // no switchable height control |
1362 | { |
1485 | { |
1363 | SollHoehe = ((int16_t) ExternHoehenValue + (int16_t) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung; |
1486 | SollHoehe = ((int16_t) ExternHoehenValue + (int16_t) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung; |
- | 1487 | // HoehenReglerAktiv = 1; // MartinR : so war es |
|
- | 1488 | // MartinR : geändert Anfang |
|
- | 1489 | if(Parameter_UserParam1 > 140) // HH über Schalter: HH an + Höhenregler abgeschaltet, Nachführen von Parametern |
|
- | 1490 | { |
|
- | 1491 | HoehenReglerAktiv = 0; |
|
- | 1492 | } |
|
- | 1493 | else // Höhenregler mit Sollhöhe über Poti aktiv |
|
- | 1494 | { |
|
1364 | HoehenReglerAktiv = 1; |
1495 | HoehenReglerAktiv = 1; |
- | 1496 | } |
|
- | 1497 | // MartinR : geändert Ende |
|
1365 | } |
1498 | } |
Line 1366... | Line 1499... | ||
1366 | 1499 | ||
1367 | // calculate cos of nick and roll angle used for projection of the vertical hoover gas |
1500 | // calculate cos of nick and roll angle used for projection of the vertical hoover gas |
1368 | tmp_int = (int)(IntegralNick/GIER_GRAD_FAKTOR); // nick angle in deg |
1501 | tmp_int = (int)(IntegralNick/GIER_GRAD_FAKTOR); // nick angle in deg |
Line 1643... | Line 1776... | ||
1643 | 1776 | ||
1644 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1777 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1645 | // Nick-Achse |
1778 | // Nick-Achse |
1646 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1779 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
- | 1780 | DiffNick = MesswertNick - StickNick; // Differenz bestimmen |
|
- | 1781 | // MartinR : so war es Anfang |
|
1647 | DiffNick = MesswertNick - StickNick; // Differenz bestimmen |
1782 | /* |
1648 | if(IntegralFaktor) SummeNick += IntegralNickMalFaktor - StickNick; // I-Anteil bei Winkelregelung |
1783 | if(IntegralFaktor) SummeNick += IntegralNickMalFaktor - StickNick; // I-Anteil bei Winkelregelung |
1649 | else SummeNick += DiffNick; // I-Anteil bei HH |
1784 | else SummeNick += DiffNick; // I-Anteil bei HH |
1650 | if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L); |
1785 | if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L); |
1651 | if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN); |
1786 | if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN); |
1652 | pd_ergebnis_nick = (EE_Parameter.Gyro_Stability * DiffNick) / 8 + SummeNick / Ki; // PI-Regler für Nick |
1787 | pd_ergebnis_nick = (EE_Parameter.Gyro_Stability * DiffNick) / 8 + SummeNick / Ki; // PI-Regler für Nick |
- | 1788 | // Motor Vorn |
|
- | 1789 | |
|
- | 1790 | */ |
|
- | 1791 | // MartinR : so war es Ende |
|
- | 1792 | ||
- | 1793 | // MartinR : geändert Anfang |
|
- | 1794 | pd_ergebnis_nick = (EE_Parameter.Gyro_Stability * DiffNick) / 8 ; // Zwischenergebnis um Code zu sparen |
|
- | 1795 | if(IntegralFaktor) // MartinR : ACC-Mode |
|
- | 1796 | { |
|
- | 1797 | SummeNick += IntegralNickMalFaktor - StickNick; // I-Anteil bei Winkelregelung |
|
- | 1798 | if(SummeNick > (STICK_GAIN * 8000L)) SummeNick = (STICK_GAIN * 8000L); // MartinR : von 16000 auf 8000, da überlauf |
|
- | 1799 | if(SummeNick < -(8000L * STICK_GAIN)) SummeNick = -(8000L * STICK_GAIN); // MartinR : von 16000 auf 8000, da überlauf |
|
- | 1800 | //pd_ergebnis_nick = DiffNick + (SummeNick / Ki); |
|
- | 1801 | pd_ergebnis_nick += (SummeNick / Ki); // PI-Regler für Nick |
|
- | 1802 | SummeNickHH = 0 ; |
|
- | 1803 | } |
|
- | 1804 | else // MartinR : HH-Mode |
|
- | 1805 | { |
|
- | 1806 | SummeNickHH += DiffNick; // I-Anteil bei HH |
|
- | 1807 | if(SummeNickHH > (STICK_GAIN * 8000L)) SummeNickHH = (STICK_GAIN * 8000L); // MartinR : von 16000 auf 8000, da überlauf |
|
- | 1808 | if(SummeNickHH < -(8000L * STICK_GAIN)) SummeNickHH = -(8000L * STICK_GAIN); // MartinR : von 16000 auf 8000, da überlauf |
|
- | 1809 | pd_ergebnis_nick += SummeNickHH / KiHH; // MartinR: PI-Regler für Nick bei HH |
|
- | 1810 | SummeNick = 0; |
|
- | 1811 | } |
|
- | 1812 | // MartinR : geändert Ende |
|
- | 1813 | ||
1653 | // Motor Vorn |
1814 | |
1654 | tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
1815 | tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
1655 | if(pd_ergebnis_nick > tmp_int) pd_ergebnis_nick = tmp_int; |
1816 | if(pd_ergebnis_nick > tmp_int) pd_ergebnis_nick = tmp_int; |
Line 1656... | Line 1817... | ||
1656 | if(pd_ergebnis_nick < -tmp_int) pd_ergebnis_nick = -tmp_int; |
1817 | if(pd_ergebnis_nick < -tmp_int) pd_ergebnis_nick = -tmp_int; |
1657 | 1818 | ||
1658 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1819 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1659 | // Roll-Achse |
1820 | // Roll-Achse |
- | 1821 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 1822 | DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen |
|
1660 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1823 | // MartinR : so war es Anfang |
1661 | DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen |
1824 | /* |
1662 | if(IntegralFaktor) SummeRoll += IntegralRollMalFaktor - StickRoll;// I-Anteil bei Winkelregelung |
1825 | if(IntegralFaktor) SummeRoll += IntegralRollMalFaktor - StickRoll;// I-Anteil bei Winkelregelung |
1663 | else SummeRoll += DiffRoll; // I-Anteil bei HH |
1826 | else SummeRoll += DiffRoll; // I-Anteil bei HH |
1664 | if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L); |
1827 | if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L); |
- | 1828 | if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN); |
|
- | 1829 | pd_ergebnis_roll = (EE_Parameter.Gyro_Stability * DiffRoll) / 8 + SummeRoll / Ki; // PI-Regler für Roll |
|
- | 1830 | */ |
|
- | 1831 | // MartinR : so war es Ende |
|
- | 1832 | ||
- | 1833 | // MartinR : geändert Anfang |
|
- | 1834 | pd_ergebnis_roll = (EE_Parameter.Gyro_Stability * DiffRoll) / 8; |
|
- | 1835 | if(IntegralFaktor) // MartinR : ACC-Mode |
|
- | 1836 | { |
|
- | 1837 | SummeRoll += IntegralRollMalFaktor - StickRoll; |
|
- | 1838 | if(SummeRoll > (STICK_GAIN * 8000L)) SummeRoll = (STICK_GAIN * 8000L);// MartinR : von 16000 auf 8000, da überlauf |
|
- | 1839 | if(SummeRoll < -(8000L * STICK_GAIN)) SummeRoll = -(8000L * STICK_GAIN);// MartinR : von 16000 auf 8000, da überlauf |
|
- | 1840 | //tmp_int = SummeRoll / Ki; |
|
- | 1841 | //pd_ergebnis_roll = DiffRoll + tmp_int; // MartinR: PI-Regler im ACC-Mode |
|
- | 1842 | pd_ergebnis_roll += SummeRoll / Ki; // PI-Regler für Roll |
|
- | 1843 | //SummeRollHH = (IntegralRollMalFaktor + tmp_int - stick_roll_neutral + (TrimRoll * STICK_GAIN / 2)) * KiHH;// MartinR: Startwert von SummeRollHH bei Umschaltung auf HH |
|
- | 1844 | // MartinR: Hintergrund: pd_ergebnis_xx soll sich beim Umschalten nicht ändern! |
|
- | 1845 | SummeRollHH = 0; |
|
- | 1846 | } |
|
- | 1847 | else // MartinR : HH-Mode |
|
- | 1848 | { |
|
- | 1849 | SummeRollHH += DiffRoll; // I-Anteil bei HH |
|
- | 1850 | if(SummeRollHH > (STICK_GAIN * 8000L)) SummeRollHH = (STICK_GAIN * 8000L);// MartinR : von 16000 auf 8000, da überlauf |
|
- | 1851 | if(SummeRollHH < -(8000L * STICK_GAIN)) SummeRollHH = -(8000L * STICK_GAIN);// MartinR : von 16000 auf 8000, da überlauf |
|
- | 1852 | pd_ergebnis_roll += SummeRollHH / KiHH; // MartinR: PI-Regler für Roll bei HH |
|
- | 1853 | SummeRoll = 0; |
|
- | 1854 | } |
|
1665 | if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN); |
1855 | // MartinR : geändert Ende |
1666 | pd_ergebnis_roll = (EE_Parameter.Gyro_Stability * DiffRoll) / 8 + SummeRoll / Ki; // PI-Regler für Roll |
1856 | |
1667 | tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
1857 | tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
Line 1668... | Line 1858... | ||
1668 | if(pd_ergebnis_roll > tmp_int) pd_ergebnis_roll = tmp_int; |
1858 | if(pd_ergebnis_roll > tmp_int) pd_ergebnis_roll = tmp_int; |
Line 1690... | Line 1880... | ||
1690 | if(Mixer.Motor[i][3] == 64) tmp_int += GierMischanteil; |
1880 | if(Mixer.Motor[i][3] == 64) tmp_int += GierMischanteil; |
1691 | else if(Mixer.Motor[i][3] == -64) tmp_int -= GierMischanteil; |
1881 | else if(Mixer.Motor[i][3] == -64) tmp_int -= GierMischanteil; |
1692 | else tmp_int += ((long)GierMischanteil * Mixer.Motor[i][3]) / 64L; |
1882 | else tmp_int += ((long)GierMischanteil * Mixer.Motor[i][3]) / 64L; |
Line 1693... | Line 1883... | ||
1693 | 1883 | ||
1694 | if(tmp_int > tmp_motorwert[i]) tmp_int = (tmp_motorwert[i] + tmp_int) / 2; // MotorSmoothing |
1884 | if(tmp_int > tmp_motorwert[i]) tmp_int = (tmp_motorwert[i] + tmp_int) / 2; // MotorSmoothing |
- | 1885 | //else tmp_int = 2 * tmp_int - tmp_motorwert[i]; // MotorSmoothing // MartinR: so war es |
|
Line 1695... | Line 1886... | ||
1695 | else tmp_int = 2 * tmp_int - tmp_motorwert[i]; // MotorSmoothing |
1886 | //else tmp_int = tmp_int; // MartinR: Entsprechend Vorschlag von MartinW geändert |
1696 | 1887 | ||
1697 | LIMIT_MIN_MAX(tmp_int,MIN_GAS * 4,MAX_GAS * 4); |
1888 | LIMIT_MIN_MAX(tmp_int,MIN_GAS * 4,MAX_GAS * 4); |
1698 | Motor[i].SetPoint = tmp_int / 4; |
1889 | Motor[i].SetPoint = tmp_int / 4; |