Diskussion:Interrupt

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Diskussion über den Text der Einleitung[Bearbeiten]

Stefan 11:37, 17. Nov. 2011 (UTC)

Die Einleitung ist IMHO zu knapp und geht lediglich auf die Behandlung der Interrupts mit ISRs ein. Besser wäre es das Konzept von IRQs kurz anhand der IRQ Werkzeuge Flags, Masken, ISRs zu erklären. Den folgende Text im F&A-Stil finde ich praktisch für Anfänger. Wenn ihr den Text nicht in die Einleitung übernehmen möchtet, bitte ich darum, ihn hier stehen zu lassen.

Was ist die Funktion der IRQ-Flags?

Die IRQ-Flags signalisieren, dass ein oder mehrere IRQs aufgetreten sind. Technisch sind IRQ-Flags je nach Architektur Bits in IRQ-Statusregistern (Bsp. AVR) oder Variablen in einem Speicherbereich.

Was ist eine ISR?

Eine ISR (Interrupt Service Routine) ist ein spezielles Unterprogramm, welches nur zur Behandlung eines IRQs aufgerufen werden kann. Je nach Architektur behandelt eine ISR einen (Bsp. AVR) oder mehrere (Bsp. ARM) IRQ-Typen. Beim Aufruf der ISR löscht der µC in der Regel das entsprechende IRQ-Flag (Näheres im Datenblatt!). Die ISR kann mit dem Hauptprogramm (= Restprogramm ohne ISRs) über gemeinsame Variablen kommunizieren (s.u.).

Was ist die Funktion der spezifischen IRQ-Enablebits (IRQ-Masken) in den IRQ-Steuerregistern?

Die IRQ-Enablebits entscheiden, ob eine dazugehörige ISR angesprungen werden kann oder nicht. Gesetzte IRQ-Enablebits ohne dazugehörige ISR im Programmcode führen i.d.R. zu schweren Ausnahmefehlern z.B. RESET.

Was ist die Funktion der globalen IRQ-Enable/Disable Befehle?

Die globalen IRQ-Enable/Disable Befehle (Bsp. SEI/CLI bei AVR) entscheiden für alle IRQs deren ISR enabled ist, ob die ISR beim IRQ tatsächlich angesprungen wird oder nicht.

Kann ein IRQ behandelt werden, ohne dass dafür eine ISR eingerichtet wird?

Das ist möglich, wenn das Hauptprogramm die IRQ-Flags selbst regelmäßig prüft und entsprechend handelt. Das Hauptprogramm muss sich um das Löschen des IRQ-Flags kümmern. Die Behandlung durch ISRs wird jedoch im allgemeinen bevorzugt.


All diese Sachen stehen im Artikel und werden IMO ausreichend erklärt. Ausserdem ist es kontraproduktiv, sich zu sehr in architekturspezifischen Details zu verlaufen. Es geht hier NICHT darum, jede Möglichkeit auf jedem Prozessor dieser Welt darzustellen, sondern nur das Prinzip am Beispiel der AVRs. Zu viele Details und Möglichkeiten verwirren da nur.