Forum: Mikrocontroller und Digitale Elektronik ATMega8 EEPROM - Probleme


von Tobias B. (roxxity)


Lesenswert?

Hallo!

Ich lese hier schon länger mit, und bisher hab ich für alles eine Lösung 
gefunden, aber jetzt bin ich ratlos.

Mein EEPROM scheint Daten zu vergessen und ich kann mir nicht erklären 
warum. Es lässt sich auch keine Regelmäßigkeit feststellen, wann das 
passiert. Einige Variablen sind dann einfach mit wirren Werten 
überschrieben.

Ich programmiere in C und übers AVRStudio. Was mein Programm tut hab ich 
mal stichpunktartig aufgelistet:

- Timer1  mit CompareA+B, läuft immer für eine Software-PWM
- Variablen werden beim Start aus dem EEPROM ins RAM gelesen und danach 
nicht mehr angerührt. (eeprom_read_word) Erst danach kommt das sei();
- Ein Array wird hin und wieder aus dem Programmspeicher gelesen 
(pgm_read_word)
- Ein ADC-Eingang wird benutzt.
- Die Schaltung wird einfach abgeschalten, dabei fällt die Spannung 
relativ langsam ab.
- LB Lockbits sind gesetzt

Weis da jemand was dazu? Bin echt ratlos.

Grüße, Tobias

von Gregor B. (gregor54321)


Lesenswert?

brownout detection aktiviert?

von peter-neu-ulm (Gast)


Lesenswert?

Wenn die Betriebsspannung abgeschaltet wird, kann, besonders bei großem 
Stütz-C, der Kontroller relativ lange im unteren Spannungsbereich 
arbeiten, wo z. B. der Programmzähler nicht mehr richtig arbeitet. Das 
kann dazu führen dass ungewollt am EEPROM rumprogrammiert wird.
Abhilfe ist die brown-out-Technik: immer wenn die zulässige 
Betriebsspannung unterschritten wird, schaltet sich der Kontroller in 
ein Reset. Dann wird durch die Wartezeit beim Neustart des Programms ein 
Zugriff auf das EEPROM verhindert.
Also bei Verwendung des EEPROM immer Brown-Out aktivieren. Möglichst 
große Start-up-Zeit einstellen.

von Tobias B. (roxxity)


Lesenswert?

Das scheint der Fehler gewesen zu sein. Steht sogar schön im Datenblatt 
drin -.-

Danke!

von Nils (Gast)


Lesenswert?

Ich habe auch ein Problem mit dem internen EEprom beim MEGA32.

Ich möchte ein WORD ins eeprom speichern. Dazu benutze ich die eeprom.h 
vom AVR Studio und eeprom_write_word (0x0001,2500);.

Wenn ich jetzt compiliere, dann warnt der compiler mit folgender Meldung
"../main.c:76: warning: passing argument 1 of 'eeprom_write_word' makes 
pointer from integer without a cast"

Weiß jemand von euch woran das liegen könnte.

Danke und Gruss

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.