Hi Ingo,
wenn ich dich richtig verstehe, dann unterstellst du mir, dass ich Nils hochnehmen will.
Das entbehrt natürlich jeder Grundlage, ich bin einfach ein Weichei, was bestimmte Dinge angeht, und da gehört der Tri seit meinem letzten Kampf leider dazu.
Du kennst das ja: Wer schon mal gebissen wurde, ist ist in Zukunft vorsichtiger im Umgang mit Hunden
Außerdem kann ich im Moment nix selbst testen, mein Tri liegt mit zwei gebrochenen Flügeln in der Werft
Ich bin Nils also sehr dankbar, dass er meine Fragerei stoisch hin nimmt.
@Nils:
Wenn ich Willas Aussage noch richtig im Kopf habe, dann errechnet er neue Vorgabewerte für die ESCs mit 300 .. 400 Hz, mithin dauert ein Durchlauf seiner Hauptschleife 2,5 .. 3 ms.
20 Iterationen zur Mittelung sind dann nach 50 bis 60 ms fertig... so schnell kannst du den Schalter gar nicht zurück stellen, wenn du nicht gerade auf Speed bist
Hab mir den Code gerade noch mal reingezogen... Vergiss den Text oben, ist vollkommen anders gelöst.
Wenn der Schalter umgelegt wird, läuft die Mittelung der 20 Werte in Höchstgeschwindigkeit in eine Schleife ab, die durch zurück stellen des Schalters nicht unterbrochen werden kann. Genau genommen kann diese Schleife durch gar nichts unterbrochen werden, auch der Tri wird in dieser Zeit weder vom Sender noch von der TriGUIDE gesteuert, insofern ist es gut, dass dieser Vorgang sehr schnell vorüber ist
Dass du Probleme mit zu schnell wieder zurück schalten hattest, verstehe ich also eher nicht.
Allerdings ist dieser Programmteil so geschrieben, dass er immer wieder durchlaufen wird, solange der Schalter (im Flug, also wenn Gas >50 ist und die Motoren mal liefen) auf Off steht.
Das könnte man ggf. noch umschreiben, so dass die Mittelung nach einem On->Off-Übergang nur einmal Statt findet. Genauer wird der Wert durch mehrere Durchläufe direkt hintereinander nämlich nicht, eher ist die Gefahr gegeben, dass der Tri zwischenzeitlich durch äußere Einflüsse weg kippt und die mühsam eingetrimmte Horizontale aufgibt, die Routine sich also Schrott ausrechnet.
@Hans:
Und wenn ich schon am meckern bin... äh, ich meine Vorschläge habe (Hans, verzeih mir!)...
Es würde reichen, beim Abspeichern nur die beiden neuen Werte ins Flash zu schreiben, der Rest sollte unverändert sein. Die Schleife über alle Vars ist also unnötig. Oder habe ich was übersehen?
... später...
Nein, im Gegenteil!
Beim Auslesen der Variablen aus dem EEPROM (Routine Geteeprom) wird bei verschiedenen Variablen was abgezogen, dazu gerechnet, multipliziert oder geteilt.
Da du beim Abspeichern nach der Landung alle 33 Var(x) 1:1 ins EEPROM schreibst (Ausnahme Var(23) und Var(24), die du gerade neu berechnet hast), werden die Vorgabewerte also verfälscht. Das solltest du dir nochmal anschauen.
Lesezeichen