02.05.2013 Aufrufe

beginner_de

beginner_de

beginner_de

MEHR ANZEIGEN
WENIGER ANZEIGEN

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-

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!