erste EEPROM-Stelle leer lassen

Gast #2252806
Lesenswert?

Im Kapitel:

"EEPROM-Variable auf feste Adressen legen"

im ersten Beispiel:


uint8_t ee_mem[EESIZE] EEMEM =
{
   [EE_DUMMY]   = 0x00,
   [EE_VALUE1]  = 0x05,
   [EE_WORD1L]  = 0x01,
   [EE_WORD1H]  = 0x00,
   [EE_VALUE2]  = 0xFF
};
#2252808
Lesenswert?

EEPROM schrieb:
> Welcher Grund steckt dahinter?

Wenn der Strom ausfällt und kein BOR konfiguriert ist, 
kann/konnte/könnte es bei manchen AVRs dazu kommen, dass eine 
EEPROM-Zelle gelöscht oder überschrieben wurde...

Hoffnung der Dummy-Zelle ist nun, dass es eben jene ist, deren Daten 
verloren gehen. Deshalb: erste Zelle verwenden, und nach jeder 
Eeprom-Operation ein Read der Dummy-Zelle, um die EE-Address-Register 
wieder zu nullen.

Muss man selber mit seiner Paranoia ausmachen, ob man das braucht oder 
nicht.
#2252835
Lesenswert?

Ah, danke Peter.
Damit wird das klarer...

Das Problem war damals also, dass während des Schreibvorgangs die 
Adresse genullt wurde.
d.H. die von mir angesprochenen regelmäßigen Reads auf die 
Dummy-Eeprom-Zelle um EEADR zu resetten bringen sowieso nix.
Und der BOR hilft auch nicht wirklich, sondern könnte das Problem sogar 
noch verschärfen.
Gast #2252839
Lesenswert?

Oliver schrieb:
> Gar keiner. Wo steht das denn?

hier, im Codebeispiel: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM-Variable_auf_feste_Adressen_legen

Finde ich durchaus sinnvoll, wenn man über Pointer aufs EEPROM zugreift.
Dann kann man vor dem Zugriff den Pointer durch einen Vergleich (ob 
ungleich NULL) auf Gültigkeit testen.
1
if (ptr) { ...

Und Funktionen, die einen Pointer aufs EEPROM liefern sollen, liefern im 
Fehlerfall NULL.

Auf Adresse 0 im EEPROM kann man damit natürlich nicht mehr zugreifen,
und macht daher eine Dummy-Zuweisung.

Der zweite Grund ist, daß wenn irgendwas schiefgeht beim Schreiben ins 
EEPROM oft Adresse 0 betroffen ist.
Bei einigen AtMegas konnte der Speicherinhalt von Adresse 0 zerschossen 
werden, wenn während des Schreibens die RESET-Leitung aktiviert wird.

Gruß,
Thorsten

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