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?

  1. APer 1-ms-Timer-Interrupt ein Flag setzen, und die Hauptschleife führt bei gesetztem Flag die Berechnung aus
  2. BIn der Hauptschleife eine leere Schleife einfügen, die etwa 1 ms dauern dürfte, um das Intervall zu erzeugen
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Embedded Systems und Firmware

  1. Welche Aufgabe hat die Brown-out-Erkennung (BOD, Brown-out-Reset) eines Mikrocontrollers?
  2. Bei einem Mikrocontroller mit Interrupt-Prioritäten tritt während der Ausführung des Handlers eines Interrupts niedriger Priorität ein Interrupt hoher Priorität auf. Was geschieht im Allgemeinen (bei erlaubter Interrupt-Verschachtelung)?
  3. Welche C-Schreibweise setzt nur Bit 3 des Registers reg auf 1 und lässt die übrigen Bits unverändert?
  4. Welche C-Schreibweise setzt nur Bit 3 des Registers reg auf 0 und lässt die übrigen Bits unverändert?
  5. Das Bit eines Ausgangspins mit angeschlossener LED soll bei jeder Ausführung zwischen Ein und Aus umgeschaltet werden. Welche C-Schreibweise ist korrekt?

Vergleiche zu diesem Thema