beginner_de
beginner_de
beginner_de
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Avr-Asm-Tutorial S. 69<br />
Dann initiiert das Hauptprogramm die Hardware, schaltet also Timer, AD-Wandler, Serielle Schnittstelle<br />
und was auch immer gebraucht wird ein und ermöglicht die entsprechen<strong>de</strong>n Interrupts.<br />
Außer<strong>de</strong>m wer<strong>de</strong>n dann noch Register mit ihren richtigen Startwerten zu la<strong>de</strong>n, damit alles seinen<br />
geregelten Gang geht. Dann ist noch wichtig, <strong>de</strong>n Schlafmodus so zu setzen, dass <strong>de</strong>r Prozessor bei<br />
Interrupts auch wie<strong>de</strong>r aufwacht.<br />
Am En<strong>de</strong> wird das Interrupt-Flag <strong>de</strong>s Prozessors gesetzt, damit er auch auf ausgelöste Interrupts<br />
reagieren kann. Damit ist alles erledigt und <strong>de</strong>r Prozessor wird mit <strong>de</strong>r Instruktion SLEEP schlafen<br />
gelegt.<br />
Interrupt<br />
Irgendwann schlägt nun Interrupt 3 zu. Der Prozessor<br />
• wacht auf,<br />
• schaltet die Interrupts ab,<br />
• legt <strong>de</strong>n <strong>de</strong>rzeitigen Wert <strong>de</strong>s Programmzählers (die nächste Instruktion hinter SLEEP) auf<br />
<strong>de</strong>m Stapel ab,<br />
• schreibt die Adresse 0003 in <strong>de</strong>n Programmzähler, und<br />
• setzt die Verarbeitung an dieser Adresse fort,<br />
• dort steht ein Sprungbefehl zur Interrupt-Service-Routine an Adresse ISR3:,<br />
• ISR3: wird bearbeitet und signalisiert durch Setzen von Bit 4 in einem Flaggenregister, dass<br />
eine Weiterverarbeitung <strong>de</strong>s Ereignisses notwendig wird,<br />
• ISR3 wird been<strong>de</strong>t, in<strong>de</strong>m mit <strong>de</strong>r Instruktion RETI die Ausgangsadresse vom Stapel geholt<br />
und in <strong>de</strong>n Programmzähler gela<strong>de</strong>n wird und schließlich die Interrupts wie<strong>de</strong>r zugelassen<br />
wer<strong>de</strong>n,<br />
• <strong>de</strong>r nun aufgeweckte Prozessor setzt die Verarbeitung an <strong>de</strong>r Instruktion hinter SLEEP fort,<br />
• falls ISR3 das Flaggenbit gesetzt hat, kann jetzt die Nachbearbeitung <strong>de</strong>s Ereignisses erfolgen<br />
und das Flaggenbit wie<strong>de</strong>r auf Null gesetzt wer<strong>de</strong>n,<br />
• ohne o<strong>de</strong>r mit Nachbearbeitung wird <strong>de</strong>r Prozessor auf je<strong>de</strong>n Fall danach wie<strong>de</strong>r schlafen<br />
gelegt.<br />
Der Ablauf zeigt, wie die Interrupt-Service-Routine mit <strong>de</strong>m Rest <strong>de</strong>s Programmablaufs kommuni-