Forum: Compiler & IDEs EEPROM bekommt Luecken


von Lukas (Gast)


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

von Klaus D. (kolisson)


Lesenswert?

vielleicht fehlt dir bei Chip_select ein Pullup oder pulldown ?
Was fürn Eeprom ?

k.

von Uwe (de0508)


Lesenswert?

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?

_

von Oliver (Gast)


Lesenswert?

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

von Max D. (max_d)


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.

von Lukas (Gast)


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

von Klaus D. (kolisson)


Lesenswert?

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.

von Lukas (Gast)


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.

von Max D. (max_d)


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.

von Lukas (Gast)


Lesenswert?

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.

von Klaus D. (kolisson)


Lesenswert?

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.

von Bernhard R. (barnyhh)


Lesenswert?

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

von Luka L. (lymphater)


Lesenswert?

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. :)

von Lukas (Gast)


Lesenswert?

Es funktioniert!!! :) BOD war die Loesung! Meine Firma ist gerettet! :)
VIELEN VIELEN DANK AN ALLE!
Lukas

von Klaus D. (kolisson)


Lesenswert?

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.

von Oliver (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.