-
-
Erfahrener Benutzer
Roboter Genie
Ich kann meinen Vorrednern nur zustimmen.
Die ganze Struktur dieses Codes (und sein Format ganz neben
bei auch, dafür gibt es Code-Tags...) mit CLI und SEIs in der ISR und dann auch noch Unterprogrammaufrufen in diesen Ausmaßen sind einer mikrosekundengenauen Zeitmessung mehr als gegenläufig.
Außerdem ist das Programm so nicht zuverlässig terminiert, was dazu führen kann, dass es stundenlang läuft und sich dann mit einem Stackoverflow verabschiedet.
SEI und CLI sind zudem in allen Fällen außer Overflow2 völlig überflüssig, weil beim Eintritt in eine ISR ohnehin ein CLI ausgeführt wird und bei Austritt entsprechend ein SEI. Kann sogar sein, dass der Compiler diesen Unfug gleich wegoptimiert, sofern Du die Optimierung eingeschaltet hast, was ich doch hoffe.
Zuverlässig wäre es, wenn die ISR viel kleiner wird, möglicherweise nur ein Flag gesetzt wird, alle SEIs und CLIs draußen sind und die Unterprogrammaufrufe möglichst durch Code ersetzt werden, denn diese kosten Zeit.
Dann fällt auf, dass Du entweder eine alte GCC oder einen anderen Compiler benutzt. In ersterem Fall würde sich ein Update lohnen.
Ich befürchte, Dein Problem ist zuverlässig nicht nebenbei zu lösen, ohne den Rest des Programms auch zu kennen.
Gruß
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen