EEPROM bekommt Luecken

Gast #2703371
Lesenswert?

Hallo,
habe ein Problem mit EEPROM, mit welchem ich schon seit vielen Monaten 
vergeblich kaempfe.
Benutze den EEPROM, um die Sprachdateien meines Geraets abzuspeichern. 
Es ist ein Variablenfeld deklariert mit
unsigned char eetext[3700] EEMEM;
, aus welchem ich danach die die einzelnen Buchstaben nacheinander 
auslese mit:

buchstabe = (char)eeprom_read_byte(&eetext[imtext]);

"imtext" wird natuerlich vorher deklariert mit

volatile unsigned int imtext=0;

Es geht eine weile gut, jedoch nach mehrmaligem Ein-/Ausschalten sind 
immer wieder einzelne stellen im EEPROM geloescht. Auch die Funktion 
"Verify" zeigt dann an, dass der Inhalt des EEPROMs auf dem Atmega128 
nicht mehr mit der entsprechenden hex Datei auf dem Rechner 
uebereinstimmt. Meine Software uberschreibt es ganz sicher nicht. Sie 
beschreibt den EEPROM nur ein mal und kehrt an diese Stelle nie wieder 
zurueck.
Es passiert sowohl mit AVR-Studio 4 inkl. WinAVR wie auch mit dem 
AtmelStudio 6.
Kennt jemand aehnliche Faelle?
Gruesse
Lukas
#2703394
Lesenswert?

Also die Stelle mit der Adresse 0 wird manchmal bei einem reset 
überschrieben...
Vlt. steigt deine Versorgung so langsam an, dass der µC erstmal amok 
läuft, mach mal die BOD (Brown-Out-Detection) an und stell die auf einen 
Wert der für deinen Quarz passt.
Gast #2703406
Lesenswert?

Bin nur nebenbei zum Programmierer geworden und lerne immer noch. 
"Brown-Out-Detection" war mir bis jetzt kein Begriff, aber danke fuer 
den Hinweis, werde in dieser Richtung weiterforschen. Was mit 
"Chip_select  Pullup  pulldown" gemeint ist, weiss ich noch nicht. 
Noch nicht. Werde nachlesen. Vielen Dank an alle fuer die Hinweise.
Lukas
prelis.de
Gast #2703467
Lesenswert?

Klaus De lisson schrieb:
> Lukas schrieb:> Was mit> "Chip_select  Pullup  pulldown" gemeint ist, weiss ich 
noch nicht.das würde sich auf ein externes EEprom beziehen. Mitlerweile glaube 
ichaber, dass du irgendein internes verwendest. In diesem Falle kannst duden 
Hinweis vergessen.k.

Ja, ich verwende den internen EEPROM.
Habe mittlerweile ueber BOD nachgelesen und werde es heute Abend testen.
Gruesse
L.L.
#2703472
Lesenswert?

Brown-Out-detection bedeutet, dass der µC sich solange im Reset befindet 
bis die Versorgung über den programierten Wert (bei AVRs entweder 4,3 
oder 2,7 V) befindet und damit davor keinen Mist (z.B. EEPROM löschen) 
machen kann. Ist in den Fuses drinne. Für <= 8MHz reichen 2,7V für > 
8MHz musst du 4,3 V einstellen.
Gast #2704877
Lesenswert?

Lukas schrieb:
> habe ein Problem mit EEPROM, mit welchem ich schon seit vielen Monaten
> vergeblich kaempfe.

Lukas schrieb:
> Es funktioniert!!! :) BOD war die Loesung! Meine Firma ist gerettet! :)

Ähem, vielleicht solltes du dich tatsächlich mal etwas mit google und 
den damit gebotenen Suchmöglichkeiten im Netz befassen. Denn wie schon 
gesagt, das Problem (und viele andere auch) ist seit langem bekannt, und 
die Lösungen dazu auch. Maximal 5 Minunten Internet-Recherche hätten dir 
monatelanges kämpfen erspart.

Alleine hier im Forum liefert eine Suchen nach "avr eeprom datenverlust" 
ausreichend viele Treffer.

Oliver

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