mikrocontroller.net

Forum: Compiler & IDEs Werte im eeprom AT90S2313 geht verloren


Autor: Markus _neu (markush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leutz,

ich speichere zwei Werte im Eprom des 2313 mittels folgender Funktion:
     eeprom_warten();
     eeprom_write_byte( (unsigned char *)10, i >> 6 & 0x1F);
     eeprom_warten();
     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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist normal, steht glaube ich auch im Errata drin.
Sobald die Spannung zu gering wird, macht der uC Mist und kann u.a. die 
EERPOM Werte löschen.
Lösung: externes Reset IC verwenden, oder direkt auf den tiny2313 mit 
interner Brownout detection verwenden.

Autor: Markus _neu (markush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

aber wieso geht dann immer nur der zweite Wert verloren? Außerdem heißt 
es immer, es wären nur die ersten Speicherzellen davon betroffen? 
Deshalb hab ich auch Speicherbereiche weiter hinten genommen.

Gruß, Markus

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus Hiller wrote:
> Hi,
>
> aber wieso geht dann immer nur der zweite Wert verloren?

Warscheinlich, weil die Adresse beim Ausschalten darauf zeigt.


Peter

Autor: Markus _neu (markush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:
>
> Warscheinlich, weil die Adresse beim Ausschalten darauf zeigt.
>
>
> Peter

Ah, das klingt logisch, das hilft mir schon mal sehr weiter!
Mal schauen wie ich das Problem umschiffen kann.

Danke!

Gruß; Markus

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Markus _neu (markush)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus _neu (markush)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.