Titelbild Mikrocontroller

7.1. GICR – General Interrupt Control Register

cdes ATmega8

GICR Register des ATmega8

Bit 7 bis 6 – Werden später beschrieben



Bit 5 bis 2 – Res: Reservierte Bits

Diese Bits sind reserviert und werden immer als 0 gelesen.

Bit 1 – IVSEL: Interrupt Vektor Select

Wenn das IVSEL-Bit gelöscht ist, liegen alle Interrupt-Vektoren am Anfang des Programmspeichers. Wenn das Bit auf 1 gesetzt wird, liegen alle Interrupt-Vektoren am Anfang des Boot-Sektors. Die aktuelle Adresse des Anfangs des Boot-Sektors wird durch die BOOTSZ Fuses bestimmt. Um unkontrollierte Verschiebungen der Interrupt-Vektoren zu verhindern, ist eine spezielle Sequenz für das Ändern des IVSEL-Bist erforderlich:
1. Schreiben einer 1 in das IVCE-Bit
2. Innerhalb von vier Taktzyklen schreiben des neuen Wertes für das ICSEL-Bit bei gleichzeitigem Löschen des IVCE-Bits.

Die Interrupts werden automatisch gesperrt, während diese Sequenz ausgeführt wird. Die Sperre beginnt mit dem Setzen des IVCE-Bits und sie bleibt so lange erhalten, bis der neue Wert in des ICSEL-Bit geschrieben wurde oder die vier Taktzyklen vorüber sind. Dass I-Bit im Status-Register bleibt von diesen Vorgängen unberührt.

Hinweis:
Wenn die Interrupt-Vektoren im Boot-Sektor liegen und das Boot Lock Bit BLB02 programmiert ist, sind die Interrupts gesperrt, während der Programmteil im Applikations-sektor ausgeführt wird. Umgekehrt gilt, dass, wenn die Interrupt-Vektoren im Applikations-Sektor liegen und das Boot Lock Bit BLBV12 programmiert ist, die Interrupts gesperrt sind, wenn ein Programmteil im Boot-Sektor abgearbeitet wird.

Bit 0 – IVCE: Interrupt Vector Change Enable

Das IVCE Bit muss mit einer 1 beschrieben werden, um das Ändern des IVSEl-Bits freizugeben. Das IVCE-Bit wird durch die Hardware automatisch gelöscht, wenn nach dem Setzen des Bits vier Taktzyklen vergangen sind oder das ICSEL-Bit beschrieben wird. Durch das Setzen des IVCE Bits werden alle Interrupts wie in den Erklärungen zum IVSEL-Bit beschrieben, gesperrt. Codebeispiel Interrupt Vektoren ändern

Codebeispiel Interrupt Vektoren ändern

« zurück:
7. Interrupts
» weiter:
8. I/O Ports
Impressum