Titelbild Mikrocontroller

7. Interrupts

Dieser Abschnitt beschreibt die Behandlung der Interrupts des ATmega8.

Interruptadressen des ATmega8

Interruptadressen des ATmega8



Hinweise:
(1) Wenn die BOOTRST Fuse programmiert ist, dann springt der Baustein an die Reset-Adresse im Boot-Sektor
(2) Wenn das IVSEL-Bit im GICR-Register gesetzt ist, werden alle Interrupt-Vektoren an den Beginn des Boot-Sektors verschoben. Die Einsprungadresse der Interrupts ergibt sich dann aus der angegebenen Adresse plus der Startadresse des Boot-Sektors.

Die nachfolgende Tabelle zeigt die Lage der Interrupt und des Reset-Vektors bei den verschiedenen Kombinationen der BOOTRST- und IVSEL-Einstellungen. Wenn ein Programm nie Interrupts freigibt, so werden die Interrupt-Vektoren nicht benötigt, und das Hauptprogramm kann ab der Reset-Adresse liegen. Das gilt auch für den Fall, in dem der Reset-Vektor im Applikation-Sektor und die Interrupt-Vektoren im Boot-Sektor liegen bzw. umgekehrt.

Interrupt und Reset-Vektor des ATmega8

Interrupt und Reset-Vektor des ATmega8


Typischerweise sieht es in einem Programm wie folgt aus:

Interrupt Beispiel Code 1

Interrupt Beispiel Code 1


Wenn die BOOTRST Fuse unprogrammiert ist, die Größe des Boot-Sektors 2 k Byte beträgt und das IVSEL-Bit im GICR-Register gesetzt wird, bevor irgendein Interrupt freigegeben wird, dann sieht ein typisches Programm etwa so aus.

Interrupt Beispiel Code 2

Interrupt Beispiel Code 2


Wenn die BOOTRST Fuse programmiert ist und der Boot-Sektor eine Größe von 2 k Bytes hat, dann sieht eine Programm typischerweise so aus:

Interrupt Beispiel Code 3

Interrupt Beispiel Code 3


Wenn die BOOTRST Fuse programmiert ist, die Größe des Boot-Sektors 2 k Byte beträgt und das IVSEL-Bit im GICR-Register gesetzt wird, bevor irgendein Interrupt freigegeben wird, dann sieht ein typisches Programm etwa so aus.

Interrupt Beispiel Code 4

Interrupt Beispiel Code 4

Impressum