Rev 440 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 440 | Rev 453 | ||
---|---|---|---|
Line 69... | Line 69... | ||
69 | volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
69 | volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
70 | volatile long Mess_Integral_Hoch = 0; |
70 | volatile long Mess_Integral_Hoch = 0; |
71 | volatile int KompassValue = 0; |
71 | volatile int KompassValue = 0; |
72 | volatile int KompassStartwert = 0; |
72 | volatile int KompassStartwert = 0; |
73 | volatile int KompassRichtung = 0; |
73 | volatile int KompassRichtung = 0; |
- | 74 | uint8_t updKompass=0; |
|
74 | unsigned char MAX_GAS,MIN_GAS; |
75 | unsigned char MAX_GAS,MIN_GAS; |
75 | unsigned char Notlandung = 0; |
76 | unsigned char Notlandung = 0; |
76 | unsigned char HoehenReglerAktiv = 0; |
77 | unsigned char HoehenReglerAktiv = 0; |
Line 77... | Line 78... | ||
77 | 78 | ||
Line 128... | Line 129... | ||
128 | { |
129 | { |
129 | unsigned int timer; |
130 | unsigned int timer; |
130 | acc_neutral.X = 0; |
131 | acc_neutral.X = 0; |
131 | acc_neutral.Y = 0; |
132 | acc_neutral.Y = 0; |
132 | acc_neutral.Z = 0; |
133 | acc_neutral.Z = 0; |
- | 134 | ||
133 | CalibrierMittelwert(); |
135 | CalibrierMittelwert(); |
134 | timer = SetDelay(5); |
136 | Delay_ms_Mess(100); |
135 | while (!CheckDelay(timer)); |
- | |
136 | CalibrierMittelwert(); |
137 | CalibrierMittelwert(); |
Line 137... | Line 138... | ||
137 | 138 | ||
138 | acc_neutral.X = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
139 | acc_neutral.X = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
139 | acc_neutral.Y = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
140 | acc_neutral.Y = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
Line 152... | Line 153... | ||
152 | acc_neutral.Y = 0; |
153 | acc_neutral.Y = 0; |
153 | acc_neutral.Z = 0; |
154 | acc_neutral.Z = 0; |
154 | AdNeutralNick = 0; |
155 | AdNeutralNick = 0; |
155 | AdNeutralRoll = 0; |
156 | AdNeutralRoll = 0; |
156 | AdNeutralGier = 0; |
157 | AdNeutralGier = 0; |
- | 158 | ||
157 | CalibrierMittelwert(); |
159 | CalibrierMittelwert(); |
158 | timer = SetDelay(5); |
160 | Delay_ms_Mess(100); |
159 | while (!CheckDelay(timer)); |
- | |
160 | CalibrierMittelwert(); |
161 | CalibrierMittelwert(); |
- | 162 | ||
161 | if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
163 | if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
162 | { |
164 | { |
163 | if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
165 | if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
164 | } |
166 | } |
165 | AdNeutralNick= abs(MesswertNick); |
167 | AdNeutralNick= abs(MesswertNick); |
Line 435... | Line 437... | ||
435 | static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
437 | static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
436 | static unsigned int modell_fliegt = 0; |
438 | static unsigned int modell_fliegt = 0; |
437 | static int hoehenregler = 0; |
439 | static int hoehenregler = 0; |
438 | static char TimerWerteausgabe = 0; |
440 | static char TimerWerteausgabe = 0; |
439 | static char NeueKompassRichtungMerken = 0; |
441 | static char NeueKompassRichtungMerken = 0; |
- | 442 | ||
440 | Mittelwert(); |
443 | Mittelwert(); |
Line 441... | Line 444... | ||
441 | 444 | ||
Line 442... | Line 445... | ||
442 | GRN_ON; |
445 | GRN_ON; |
Line 654... | Line 657... | ||
654 | // Kompass |
657 | // Kompass |
655 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
658 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
656 | if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
659 | if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
657 | { |
660 | { |
658 | int w,v; |
661 | int w,v; |
659 | static int SignalSchlecht = 0; |
662 | static uint8_t SignalSchlecht = 0; |
- | 663 | ||
- | 664 | if (!updKompass--) // Aufruf mit ~10 Hz |
|
- | 665 | { |
|
- | 666 | KompassValue = heading_MM3(); |
|
- | 667 | KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
|
- | 668 | updKompass = 50; |
|
- | 669 | } |
|
- | 670 | ||
660 | w = abs(IntegralNick /1024); // mit zunehmender Neigung den Einfluss drosseln |
671 | w = abs(IntegralNick /1024); // mit zunehmender Neigung den Einfluss drosseln |
661 | v = abs(IntegralRoll /1024); |
672 | v = abs(IntegralRoll /1024); |
662 | if(v > w) w = v; // grösste Neigung ermitteln |
673 | if(v > w) w = v; // grösste Neigung ermitteln |
663 | if(w < 35 && NeueKompassRichtungMerken && !SignalSchlecht) |
674 | if(w < 35 && NeueKompassRichtungMerken && !SignalSchlecht) |
664 | { |
675 | { |
Line 672... | Line 683... | ||
672 | ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
683 | ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
673 | if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
684 | if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
674 | ANALOG_ON; // ADC einschalten |
685 | ANALOG_ON; // ADC einschalten |
675 | if(SignalSchlecht) SignalSchlecht--; |
686 | if(SignalSchlecht) SignalSchlecht--; |
676 | } |
687 | } |
677 | else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
688 | else SignalSchlecht = 250; // so lange das Signal taub stellen --> ca. 1/2 sek |
678 | } |
689 | } |
679 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
690 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
680 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
691 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Line 681... | Line 692... | ||
681 | 692 |