Forum: Mikrocontroller und Digitale Elektronik ATMEGA2561: internes EEPROM will nicht funktionieren


von Peter Hofbauer (Gast)


Lesenswert?

ATMEGA2561: internes EEPROM will nicht funktionieren

Hat jemand schon mal am besagten Controller den internen EEPROM 
verwendet?
Bei meinen Projekt funktioniert weder das schreiben ins EEPROM noch das 
lesen. Mit meinen JTAGICE-MK2 kann ich Daten direkt ins EEPROM 
programmieren und auch wieder lesen. Aber in meinen Programm lese ich 
immer FF obwohl ich nur die ganz einfache Asm-Routine aus dem Datenbuch 
verwende.
Mit den Programmer (JTAGICE-MK2) habe ich mit Hilfe einer entsprechenden 
Hex-Datei das EEPROM mit einer Zahlenreiche voll geschrieben. Trotzdem 
kann ich mit meinen Programm immer nur FF ernten. Und das im kompletten 
Adressenbereich (4k).

das verwendete Lese-UP:

EEPROM_read:
 sbic EECR,EEPE
 rjmp EEPROM_read
 out eearh,r18
 out eearl,r17
 sbi EECR,EERE
 in r16,EEDR
 ret

Einfacher gehts eigentlich nicht. Trotzden lese ich immer FF obwohl im 
EEPROM absolut sicher Zahlen sind.
Habe ich irgend eine Bedingung übersehen?
Ich habe schon alle Adressen und Bits zu Fuß kontrolliert, alles OK.
Wäre super, wenn Ihr mir helfen könnt.
Besten Dank im Voraus für eure Mühen und Hinweise!
Gruß Peter

von Chloddno (Gast)


Lesenswert?

Ja. liegen eearh & eearl im nahen bereich, oder muss man die anders 
adressieren ? Sowas gibt's noch oft. Bei kleinen Controllern geht's bei 
grossen dann nicht mehr.

von Ralf G. (ralg)


Lesenswert?

Peter Hofbauer schrieb:
> das verwendete Lese-UP:

Und der Rest?:
- Adresse korrekt übergeben?
- Wert korrekt aus r16 geholt?
- einfach mal einen Befehl verwechselt?

von Peter Hofbauer (Gast)


Lesenswert?

Danke für die schnelle Antwort.

Die Adressen sind mit Sicherheit richtig, das kann man mit den 
JTAGICE-MK2 sehr gut kontrolieren.
Testweise habe ich verschiedene bits im EECR gesetzt und anschließend 
wieder gelesen. Reagiert wie beschrieben:
EEPM1 und EEPM0 bleiben drin, die unteren bits löscht der Contoller 
selber. Irgendwas geht da also.
Ich habe übrigens schon hunderte Controller programmiert, bin also kein 
Anfänger. Aber hier stehe ich und kann nicht weiter.
Hat schon mal jemand den 2561 mit EEPROM am laufen gehabt? Habe im www 
bis jetzt nichts verwertbares gefunden.
Gruß Peter

von Karl H. (kbuchegg)


Lesenswert?

Peter Hofbauer schrieb:
> Danke für die schnelle Antwort.
>
> Die Adressen sind mit Sicherheit richtig, das kann man mit den
> JTAGICE-MK2 sehr gut kontrolieren.
> Testweise habe ich verschiedene bits im EECR gesetzt und anschließend
> wieder gelesen. Reagiert wie beschrieben:
> EEPM1 und EEPM0 bleiben drin, die unteren bits löscht der Contoller
> selber. Irgendwas geht da also.
> Ich habe übrigens schon hunderte Controller programmiert, bin also kein
> Anfänger. Aber hier stehe ich und kann nicht weiter.

Wir aber auch nicht.
IMHO ist die angegebene Routine korrekt.
IMHO muss das Problem wo anders liegen.

Soll schon vorgekommen sein, dass man sich bei der Ausgabe bzw. 
Weiterverwendung eines Wertes vertan hat, ohne es selbst zu merken.

von Stefan E. (sternst)


Lesenswert?

Ich vermute, das Problem wird eher hier liegen:
> obwohl im EEPROM absolut sicher Zahlen sind.

Denn wenn du dein EEPROM befüllst und anschließend dein Programm 
aufspielst, dann ist das EEPROM danach wieder leer, außer du hast die 
EESAVE-Fuse gesetzt.

von Peter Hofbauer (Gast)


Lesenswert?

Danke  Stefan!

Genau, diese Fusebit EESAVE hatte ich übersehen. Jetzt funktioniert das 
lesen aus dem EE. Damit hatte ich zwar herum experimentiert aber wohl 
irgend eine Fehler fabriziert.

 Nochmals Danke!

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.