ATMEGA2561: internes EEPROM will nicht funktionieren

Gast #3439642
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
Gast #3439787
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
#3439792
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.
Gast #3439949
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren