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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.