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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.