3 Hardwaresteuerung und Interrupts

Port-Eingabeaktionen sind im vorliegenden Fall immer extern getriggerte Ereignisse. Sowohl eine Benutzerinteraktion (Tastatureingabe) als auch das Zählen der Drehwinkelimpulse können zu jedem Zeitpunkt auftreten und werden deshalb sinnvoller Weise von Interrupt-Behandlungsroutinen (ISR, Interrupt Service Routine) abgearbeitet.

Da jedoch auch Interrupts von weiteren Interrupts unterbrochen werden können und diese dann gemäß einer vorgegebenen Priorität abgearbeitet werden, kann es im Extremfall zu Verlusten von externen Ereignissen kommen. Deshalb liegt es nahe die ISRs möglichst kurz zu halten, bzw. das Abarbeiten weiterer ISRs zeitweilig zu unterbinden, wenn die Gefahr besteht, dass eine zwischenzeitlich auftretende Unterbrechung zu Informationsverlusten führen kann.

Da aber auf keinen Fall Zählschritte verloren gehen dürfen, wurden folgende Eingabebehandlungen und Zeit abhängige bzw. Zeit gesteuerte Mechanismen festgelegt:

  1. Unkritische Warteschleifen, in denen keine unerwarteten Zustände eintreten können, werden als einfache Software-Loops (z.B. Tastatur-Wiederholrate bei niedergedrückten Tasten) ausgeführt. Dies beeinträchtigt nicht die Interrupt-Behandlung, verzögert aber die abhängigen Zyklen in vorhersehbarer weise.
  2. Bei einer Tastatureingabe werden von einer minimalen ISR die notwendigen Informationen zur späteren Auswertung der Tastaturbetätigung in Variablen abgelegt.
  3. Timer gesteuerte Interrupts (über den 8-Bit Timer/Counter0 ausgelöst) werden als ,,Pseudo-Scheduler'' zur Steuerung zeitabhängiger Ereignisse verwendet.
  4. Das Zählen der Winkelschritte soll unabhängig passieren, sodass nicht einmal etwaige auftretende Interrupts dies beeinflussen können.
  5. Das Anfahren einer Endposition wird im Pollingmodus durchgeführt, was auf Grund der geringen Dreh-Geschwindigkeit zu keinen Verlusten führen kann (siehe 7.8.1.3).
Diese Mechanismen werden nun in den folgenden Abschnitten im Einzelnen beschrieben.



Subsections
gerhard.reithofer@tech-edv.co.at