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
Lukas schrieb:> Es passiert sowohl mit AVR-Studio 4 inkl. WinAVR wie auch mit dem> AtmelStudio 6.
Was hat den dass mit deinem Problem zu tun? Das sind doch nur
Texteditoren!
Wie immer sit das Problem in dem >Code< in Zeile 42.
Ist den Hinweis angekommen?
_
Lukas schrieb:> Kennt jemand aehnliche Faelle?
Das Problem taucht regelmässig hier i Forum und auch naderswo auf, die
Lösung dazu steht im Datenblatt, und lautet "brown out detection"
einschalten.
Oliver
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.
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
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 ich
aber, dass du irgendein internes verwendest. In diesem Falle kannst du
den Hinweis vergessen.
k.
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.
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.
Max D. schrieb:> Ist in den Fuses drinne. Für <= 8MHz reichen 2,7V für >8MHz musst du 4,3 V
einstellen.
Betreibe meinen ATmega128 AU mit 16mHz, daher sind 4,3V zu waehlen. Aber
laut Datenblatt ist 2,7V (BODLEVEL=1) nur fuer ATmega128L waehlbar.
Lukas schrieb:> laut Datenblatt ist 2,7V (BODLEVEL=1) nur fuer ATmega128L waehlbar.
Das passt schon.
es ist nur wichtig, dass der uC nicht beim Ein- oder Ausschalten
irgendwo herumdümpelt und nicht genau weiss was er tut.
Gruss k.
Klaus De lisson schrieb:> es ist nur wichtig, dass der uC nicht beim Ein- oder Ausschalten> irgendwo herumdümpelt und nicht genau weiss was er tut.
Wie heißt es so schön in der Bibel: Herr vergib ihm, denn er weiß nicht,
was er tut!
Bernhard
Bernhard R. schrieb:> Wie heißt es so schön in der Bibel: Herr vergib ihm, denn er weiß nicht,> was er tut!
Der Herr wird dem AVR es vielleicht vergeben.
Meine Kunden mir aber nicht. :)
Bernhard R. schrieb:> Klaus De lisson schrieb:>> es ist nur wichtig, dass der uC nicht beim Ein- oder Ausschalten>> irgendwo herumdümpelt und nicht genau weiss was er tut.>> Wie heißt es so schön in der Bibel: Herr vergib ihm, denn er weiß nicht,> was er tut!>> Bernhard
Was soll das bedeuten ? Minst du es war falsch ?
k.
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