Werte im eeprom AT90S2313 geht verloren

OP #442133
Lesenswert?

Hi Leutz,

ich speichere zwei Werte im Eprom des 2313 mittels folgender Funktion:
1
     eeprom_warten();
2
     eeprom_write_byte( (unsigned char *)10, i >> 6 & 0x1F);
3
     eeprom_warten();
4
     eeprom_write_byte( (unsigned char *)11, (i & 0x3F) | (~i >> 7 & 0x40));

Hinter eeprom_warten versteckt sich nur der Aufruf 
while(!eeprom_is_ready()); als Funktion.

Die Werte werden brav geschrieben. µC vom Strom, kurz gewartet und 
wieder dran - Werte sind immer noch da. Jetzt kommt's aber: Nach 
nochmaligem Strom weg und wieder da ist immer der zweite Wert weg bzw. 
255.

Wie kommt das? Es wird keine Schreibfunktion mehr aufgerufen. Beim Strom 
einschalten werden nur einmalig die Werte ausgelesen (eeprom_read_byte). 
Ich hab auch schon verschiedene Speicherstellen probiert, es ist immer 
der zweite Wert weg, das kann doch nicht sein, oder überseh ich da was??

Gruß, Markus
#442364
Lesenswert?

> Mal schauen wie ich das Problem umschiffen kann.

Reservier dir im EEprom irgendwo ein Byte,
das zu sonst nichts anderen benutzt wird, als das
der µC beim Ein/Ausschalten da lustig seine Werte
ändern darf.

Nachdem du deine wirklichen Daten geschrieben hast,
schreibst du noch in dieses Dummy-Byte und setzt
so das EEProm Adressregister auf einen ungefährlichen
Wert, sodass dir der µC deine richtigen Daten nicht
mehr zerschiest.

Die Speicherstelle 0 würde sich hervorragend
dafür eigenen :-)
OP #442371
Lesenswert?

Karl heinz Buchegger wrote:
>
> Reservier dir im EEprom irgendwo ein Byte,
> das zu sonst nichts anderen benutzt wird, als das
> der µC beim Ein/Ausschalten da lustig seine Werte
> ändern darf.
>
> Nachdem du deine wirklichen Daten geschrieben hast,
> schreibst du noch in dieses Dummy-Byte und setzt
> so das EEProm Adressregister auf einen ungefährlichen
> Wert, sodass dir der µC deine richtigen Daten nicht
> mehr zerschiest.
>
> Die Speicherstelle 0 würde sich hervorragend
> dafür eigenen :-)

Hi,

ja so in der Art hatte ich das auch vor. Ich werd mal testen ob es 
reicht wenn ich eine andere Speicherstelle (0 :-)) auslese.
Falls nicht schreib ich halt da einen Dummy-Wert rein.

Gruß, Markus
OP #442862
Lesenswert?

Alles klar, es funzt jetzt.

Das reine Auslesen der Adresse 0 reicht nicht aus, verursachte dann 
immer noch Probleme. Nach dem Auslesen der Adressen schreib ich jetzt in 
die Adresse 0 noch einen dummy-Wert und dann gibt's keine Probleme.

Vielen Dank für die Hinweise.

Gruß, Markus

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