EEPROM schreiben ohne Unterbrechung

Gast #2695191
Lesenswert?

Hallo,

ich möchte gern das EEPROM eines Atmega644 beschreiben. Das klappt auch 
alles wunderbar. ABER, es dauert laut Datenblatt min 3,4ms. Leider wird 
per Timer jede ms ein Interreupt erzeugt. Jetzt steht aber im Tutorial, 
dass Interrupts global deaktiviert werden, wenn man mit den Funktionen 
eeprom_write_byte(&eeFooByte, myByte) arbeitet. Das wiederum würde mir 
bis zu 3 Interrupts verloren gehen lassen. Gibt es eine Möglichkeit 
dieses Problem irgendwie zu umgehen?


Ingo
Gast #2695210
Lesenswert?

Zitat:

Bei Nutzung des EEPROMs ist zu beachten, dass vor dem Zugriff auf diesen 
Speicher abgefragt wird, ob der Controller die vorherige 
EEPROM-Operation abgeschlossen hat. Die avr-libc-Funktionen beinhalten 
diese Prüfung, man muss sie nicht selbst implementieren. Man sollte auch 
verhindern, dass der Zugriff durch die Abarbeitung einer 
Interrupt-Routine unterbrochen wird, da bestimme Befehlsabfolgen 
vorgegeben sind, die innerhalb weniger Taktzyklen aufeinanderfolgen 
müssen ("timed sequence"). Auch dies muss bei Nutzung der Funktionen aus 
der avr-libc/eeprom.h-Datei nicht selbst implementiert werden. Innerhalb 
der Funktionen werden Interrupts vor der "EEPROM-Sequenz" global 
deaktiviert und im Anschluss, falls vorher auch schon eingeschaltet, 
wieder aktiviert.

Zitat Ende, 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM

Im letzten Satz.


Ingo

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren