Hallo Klebwax, danke für Deine Hinweise:Puhhh - so. Die unnötigen (unsauberen) Deklarationen "volatile" sind bereinigt. Schon einiges Arbeit (bis man draufkommt wie das schnell geht).
Dann compiliert mit -Os - wie zuvor. Der Vergleich "vorher" "nachher" gab keine Unterschiede aber selbst wenns so wäre - sauber(er) programmiert ist die Sache den Aufwand dann doch wert.
Zusätzlich wurden unnötige Definitionen bereinigt/entfernt - War schon längst angedacht . . .
Ich hatte (einige, wenige) Stellen die mir kritisch vorkamen getestet und hatte die Zeit für diese Stringausgaben gemessen (Ausgang war low, Testanfang - Ausgang high - Stringausgabe - Ausgang low) und Oskar angeguckt (ok ok, *lls Auswerten wäre direkter). Ich blieb dabei im Zeitrahmen. Übrigens hatte ich manche Programmaufrufe (z.B. Regelung!!) auf Zeitbedarf getestet (Oszi, *.lls) um Störungen im "eigentlichen" Betrieb möglichst auszuschließen. 100%igen Erfolg kann ich natürlich nicht garantieren. Es wäre mir auch nicht klar, wie ich das sicherstellen könnte. UND - wenns möglich ist (z.B. beim PingPong-Display) wird UART auch mit ziemlichem Speed gefahren (PingPong wurde extra auf Quarzbetrieb umgelötet).
Die Regelung. Es werden ja beide Antriebe voneinander getrennt geregelt - Geradeauslauf z.B. wird durch gleiche Strecken-/Speed-Vorgaben angestrebt (erhofft - leider nicht garantiert aus vielerlei Gründen). Und genau da spielt die Laufzeit ne Rolle und genau deswegen wird die 100/s-Regelfrequenz dadurch erreicht dass mit 200/sec geregelt wird - aber eben jeweils alternierend nur einer der beiden Antriebe. Die Regelfrequenz liegt dann im Bereich der Motorzeitkonstanten von 10 ms .. 12 ms der Antriebe (die "as build" gemessen wurden). Insbes. beim MiniD0 (die 0,15-Liter-Coladose) ist der Gleichlauf ziemlich gut zu sehen [/Selbstlob].
Bestimmte Ausgaben dauern länger als dieser 50µs Interrupt. Das kommt z.B. vor bei Testfahrten von u.A. Servo von A nach B fahren um Positionen zu testen und Ähnliches. Dabei wurden natürlich auch der Zeitbedarf für bestimmte Gesten erfasst. Aber für das Auge spielen >im "Normalbetriieb"< evtl. Interrupt-Störungen keine Rolle (sprich: ich seh da nix).
Geändert von oberallgeier (04.11.2020 um 09:46 Uhr) Grund: weitgehend (voneinander) gestrichen
Ciao sagt der JoeamBerg
Lesezeichen