Embedded Systems und Firmware
Eine bestimmte Regelberechnung soll alle 1 ms ausgeführt werden. Welche Implementierung auf einem Mikrocontroller ohne Betriebssystem ist am besten geeignet?
- APer 1-ms-Timer-Interrupt ein Flag setzen, und die Hauptschleife führt bei gesetztem Flag die Berechnung aus
- BIn der Hauptschleife eine leere Schleife einfügen, die etwa 1 ms dauern dürfte, um das Intervall zu erzeugen
- CDen Mikrocontroller nach jeder Berechnung neu starten
Antwort und Erläuterung anzeigen
Antwort: A. Per 1-ms-Timer-Interrupt ein Flag setzen, und die Hauptschleife führt bei gesetztem Flag die Berechnung aus
Erzeugt man Zeit mit einer leeren Schleife, ändert sich das Intervall mit der Dauer anderer Verarbeitung und der Compileroptimierung und wird ungenau. Ein Hardware-Timer zählt unabhängig von der Verarbeitung exakt, sodass mit dem 1-ms-Interrupt als Bezug ein konstantes Intervall gehalten wird. Ist die Berechnung kurz, kann sie direkt im Interrupt erfolgen; ist sie lang, behindert man andere Interrupts nicht, wenn man per Flag signalisiert und die Berechnung in der Hauptschleife ausführt.