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.
- 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.
- Bei einer Tastatureingabe werden von einer minimalen ISR die notwendigen
Informationen zur späteren Auswertung der Tastaturbetätigung in Variablen
abgelegt.
- Timer gesteuerte Interrupts (über den 8-Bit Timer/Counter0 ausgelöst)
werden als ,,Pseudo-Scheduler'' zur Steuerung zeitabhängiger
Ereignisse verwendet.
- Das Zählen der Winkelschritte soll unabhängig passieren, sodass nicht
einmal etwaige auftretende Interrupts dies beeinflussen können.
- 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