PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMega8 + EEPROM



Bumbum
12.06.2008, 18:52
Hallo,

ich habe ein Problem mit dem EEPROM in einem ATMega8. Der Chip ist (relativ) neu und bis jetzt nur ein paar mal geflascht, trotzdem funktioniert das Beispiel aus dem Datenblatt nicht:



cli ();

while (EECR & (1<<EEWE));

EEARH = 0;
EEARL = 0;
EEDR = 10;
EECR |= (1<<EEMWE);
EECR |= (1<<EEWE);

while (EECR & (1<<EEWE));

EEARH = 0;
EEARL = 0;
EECR |= (1<<EERE);
tmp = EEDR;

if (tmp == 10)
SwitchLed (On);

while (1);


Die Led geht nie an. Wenn ich auf (tmp = 0xFF) prüfe, geht sie an. Also wird das EEPROM nicht beschrieben oder falsch gelesen. Wo könnte mein Fehler sein?

Viele Grüße
Andreas

Ceos
12.06.2008, 18:56
das ist ein problem beim starten des meg8, schreib mal mehr als 4 bytes, nach dem 4ten byte sollten die daten stabil sein, zur not versuchs mal mit ner einschaltverzögerung für den reset oder ne kurzen pauseschleife bevor du ins eeprom schreibst bzw. liesst .... hat was mit der spannungsversorgung zu tun, ist die nicht stabil kanns zu fehlern kommen

Bumbum
12.06.2008, 19:26
Hallo Ceos,

danke für die Antwort. Ich schreibe sogar insgesamt 16 Bytes auf einen Schlag und lese diese aus dem EEPROM. Nur das funktioniert nicht, deshalb habe ich das Problem auf diesen kleinen Teil heruntergebrochen. Ich dachte mir wenn das funktioniert, funktioniert auch der große Teil.

Bevor das ganze ausgeführt wird ist im Programm-Init tatsächlich eine Warteschleife mit 100x NOP vorhanden, da ich Probleme beim einlesen einiger Eingänge direkt nach dem Start hatte.

Bleibt also entweder ein Fehler im Programm, oder tatsächlich die Versorgungsspannung. Diese kommt aber vom STK500 mit einem recht kurzem (10cm) ISP-Kabel. Als Verbrauchen ist nur der ATMega8 und ein Max232 auf der Platine und genügend Kondensatoren (220µF am Eingang) und 100nF-Block-Kondensatoren an jedem IC. Ich werde das ganz aber noch mal am Labor-Netzteil mit mehr Power probieren.

Viele Grüße
Andreas

Ceos
12.06.2008, 19:30
das hat mit power nicht viel zu tun, aber versuchs mal mit ner warteschleife

EDIT: kommando zurück, zu schnell gelesen ... 100nop ist evtl. zu wenig versuchs mal ruhig mit noch etwas mehr, die vielen abblock kondensatoren müssen erstmal geladen werden, da kann auch die spannung anfangs recht niedrig sein! oder du lässt ihn auf einen tastendruck warten, dann kannst du ganz gezielt ausprobieren obs evtl. am start liegt

EDIT du kannst auch versuchshalber das BOD stark nach oen drehen und nen automatischen reset machen lassen, solange die spannung zu niedrig ist

Bumbum
12.06.2008, 19:50
...weil ich Taster lese: Ich habe beim testen natürlich mehrmals Reset am STK500 gedrückt. Danach sollte die Spannung auf jeden Fall stabil gewesen sein. Aber ich probiers auf jeden Fall aus. (Das BOD und die erhöhung der NOPs)

drew
14.06.2008, 21:59
Hallo,
versuch doch mal, ob du irgend etwas mit deinem Programmer ins EEPROM schreiben kannst.
So kannst du einen Hardwar-Fehler sicher aussliessen und auch prüfen, ob das Lesen geht.

drew
14.06.2008, 22:00
Hallo,
versuch doch mal, ob du irgend etwas mit deinem Programmer ins EEPROM schreiben kannst.
So kannst du einen Hardwar-Fehler sicher aussliessen und auch prüfen, ob das Lesen geht.