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
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.
Peter Hofbauer schrieb: > das verwendete Lese-UP: Und der Rest?: - Adresse korrekt übergeben? - Wert korrekt aus r16 geholt? - einfach mal einen Befehl verwechselt?
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.