Titelbild Mikrocontroller

19.6. SPMCR Store Program Memory Control Register

Das SPMCR enthält die Controll-Bits, die benötigt werden, um die Boot Loader Funktionen zu steuern
SPMCR Register des ATmega8

SPMCR Register des ATmega8


Bit 7 – SPMIE: SPM Interrupt Enable

Wenn das SPMIE Bit auf 1 gesetzt ist und das I-Bit im Status Register gesetzt ist, wird der SPM Ready Interrupt freigegeben. Der SPM Ready Interrupt wird so lange ausgeführt wie das SPMEN-Bit im SPMCR gelöscht ist.

Bit 6 – RWWSB: Read While Write Section Busy

Wenn eine Selbstprogrammieroperation (löschen oder schreiben) in dem RWW Bereich gestartet wird, wird das RWWSB durch die Hardware auf 1 gesetzt. Wenn das RWWSB Bit gesetzt ist, kann nicht auf den RWW Bereich zugegriffen werden. Das RWWSB Bit wird gelöscht, wenn das RWWSRE Bit auf 1 gesetzt wird, nachdem der Selbstprogrammierungs-vorgang abgeschlossen ist. Alternativ wird das RWWSB Bit automatisch gelöscht, wenn eine Page Load Operation gestartet wird.

Bit 5 – Res: Reserviertes Bit

Dieses Bit ist reserviert und wird immer als 0 gelesen.

Bit 4 – RWWSRE: Read While Write Section Read Enable

Wenn eine Programmierung des RWW Bereiches erfolgt (Seite löschen oder schreiben) ist die RWW Sektion für das Lesen gesperrt (das RWWSB Bit wird durch die Hardware gesetzt). Um die RWW Sektion wieder freizugeben muss die Software warten, bis der Programmiervorgang abgeschlossen ist (SPMEN wird gelöscht). Dann, wenn das RWWSRE Bit zur gleichen Zeit wie das SPMEN Bit mit einer 1 beschrieben wird, gibt der nächste SPM Befehl innerhalb von vier Taktzyklen den RWW Bereich wieder frei. Der RWW Bereich kann nicht wieder freigegeben werden, während der Flash mit dem Löschen oder Schreiben einer Seite beschäftigt ist (SPMEN ist gesetzt). Wenn das RWWSRE Bit beschrieben wird, während der Flash geladen wird, wird die Flash Operation abgebrochen und die zu ladenden Daten gehen verloren.

Bit 3 – BLBSET: Boot Lock Bit Set

Wenn dieses Bit zur gleichen Zeit wie das SPMEN Bit auf eins gesetzt wird, wird der nächste SPM Befehl innerhalb von vier Taktzyklen die Boot Lock Bits mit den Daten einstellen, die in R0 stehen. Die Daten in R1 und die Adresse im Z-Pointer werden ignoriert. Das BLBSET Bit wird automatisch gelöscht, wenn die Einstellung der Boot Lock Bits erfolgte oder wenn der SPM Befehl nicht innerhalb der vier Taktzyklen ausgeführt wird.

Ein LPM Befehl innerhalb von drei Taktzyklen nach dem Setzen der BLBSET und SPMEN Bits ließt entweder die Lock oder die Fuse Bits (abhängig von Z0 des Z-Pointers) in ein Zielregister. Siehe Lesen der Fuse und Lock Bits.

Bit 2 – PGWRT: Page Write

Wenn dieses Bit zur gleichen Zeit wie das SPMEN Bit auf eins gesetzt wird, wird der nächste SPM Befehl innerhalb von vier Taktzyklen das Beschreiben einer Seite mit den Daten, die im temporären Buffer gespeichert sind, starten. Die Seitenadresse wird aus dem oberen Teil des Z-Pointers entnommen. Die Daten in R1 und R0 werden ignoriert. Das PGWRT Bit wird nachdem die Seite geschrieben wurde automatisch gelöscht oder dann, wenn der SPM Befehl nicht innerhalb der vier Taktzyklen ausgeführt wurde. Die CPU wird angehalten, wenn eine Seitenschreib Operation in dem NRWW Bereich durchgeführt wird.

Bit 1 – PGERS: Page Erase

Wenn dieses Bit zur gleichen Zeit wie das SPMEN Bit auf eins gesetzt wird, wird der nächste SPM Befehl innerhalb von vier Taktzyklen das Löschen einer Seite starten. Die Seitenadresse wird dem oberen Teil des Z-Pointers entnommen. Die Daten in R1 und R0 werden ignoriert. Das PGERS Bit wird automatisch gelöscht, wenn die Seite gelöscht wurde oder wenn innerhalb der nächsten vier Taktzyklen kein SPM Befehl ausgeführt wurde. Die CPU wird angehalten, wenn eine Seitenschreib Operation in dem NRWW Bereich durchgeführt wird.

Bit 0 – SPMEN: Store Program Memory Enable

Dieses Bit gibt die Ausführung eines SPM Befehls innerhalb der nächsten vier Taktzyklen frei. Wenn es zusammen mit einem der Bits RWWSRE, BLBSET, PGWRT oder PGERS gesetzt wird, hat der folgende SPM Befehl eine besondere Bedeutung (wie oben beschrieben). Wenn nur das SPMEN auf eins besetzt wird, wird der folgende SPM Befehl die Werte, die in R1:R0 stehen in den temporären Seiten Buffer speichern, der durch den Z-Pointer adressiert ist. Dabei wird das LSB des Z-Pointers ignoriert. Das SPMEN Bit wird automatisch gelöscht, wenn ein SPM Operation ausgeführt wurde, oder innerhalb der nächsten vier Taktzyklen kein SPM Befehl ausgefühert wird. Während des Löschens und Schreibens einer Seite verbleibt das SPMEN Bits so lange High, bis die Operation vollständig abgeschlossen ist.

Das Schreiben anderer Werte als 10001, 01001, 00101, 00011 oder 00001 in die oberen fünf Bits hat keine Auswirkungen.
Impressum