Rev 378 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 378 | Rev 391 | ||
---|---|---|---|
Line 651... | Line 651... | ||
651 | ANALOG_ON; // ADC einschalten |
651 | ANALOG_ON; // ADC einschalten |
Line 652... | Line 652... | ||
652 | 652 | ||
653 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
653 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
654 | // Kompass |
654 | // Kompass |
655 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
655 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
656 | if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
656 | if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
- | 657 | { |
|
- | 658 | int w,v; |
|
- | 659 | static int SignalSchlecht = 0; |
|
- | 660 | w = abs(IntegralNick /1024); // mit zunehmender Neigung den Einfluss drosseln |
|
- | 661 | v = abs(IntegralRoll /1024); |
|
657 | { |
662 | if(v > w) w = v; // grösste Neigung ermitteln |
658 | if(NeueKompassRichtungMerken) |
663 | if(w < 35 && NeueKompassRichtungMerken && !SignalSchlecht) |
659 | { |
664 | { |
660 | KompassStartwert = KompassValue; |
665 | KompassStartwert = KompassValue; |
661 | NeueKompassRichtungMerken = 0; |
666 | NeueKompassRichtungMerken = 0; |
- | 667 | } |
|
- | 668 | w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
|
- | 669 | w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
|
- | 670 | if(w > 0) |
|
662 | } |
671 | { |
663 | ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
672 | ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
664 | Mess_Integral_Gier -= (KompassRichtung * Parameter_KompassWirkung) / 32; // nach Kompass ausrichten |
673 | if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
- | 674 | ANALOG_ON; // ADC einschalten |
|
- | 675 | if(SignalSchlecht) SignalSchlecht--; |
|
- | 676 | } |
|
665 | ANALOG_ON; // ADC einschalten |
677 | else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
666 | } |
678 | } |
667 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
679 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Line 668... | Line 680... | ||
668 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
680 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
669 | 681 | ||
Line 675... | Line 687... | ||
675 | { |
687 | { |
676 | TimerWerteausgabe = 49; |
688 | TimerWerteausgabe = 49; |
677 | // DebugOut.Analog[0] = MesswertNick; |
689 | // DebugOut.Analog[0] = MesswertNick; |
678 | // DebugOut.Analog[1] = MesswertRoll; |
690 | // DebugOut.Analog[1] = MesswertRoll; |
679 | // DebugOut.Analog[2] = MesswertGier; |
691 | // DebugOut.Analog[2] = MesswertGier; |
680 | // DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
692 | DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
681 | // DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
693 | DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
Line 682... | Line 694... | ||
682 | 694 | ||
683 | DebugOut.Analog[0] = MM3.NickGrad; |
695 | // DebugOut.Analog[0] = MM3.NickGrad; |
684 | DebugOut.Analog[1] = MM3.RollGrad; |
696 | // DebugOut.Analog[1] = MM3.RollGrad; |
685 | DebugOut.Analog[2] = Mittelwert_AccNick; |
697 | DebugOut.Analog[2] = Mittelwert_AccNick; |
686 | DebugOut.Analog[3] = Mittelwert_AccRoll; |
698 | DebugOut.Analog[3] = Mittelwert_AccRoll; |
687 | DebugOut.Analog[4] = MesswertGier; |
699 | DebugOut.Analog[4] = MesswertGier; |
688 | DebugOut.Analog[5] = HoehenWert; |
700 | DebugOut.Analog[5] = HoehenWert; |