Hallo, mit folgendem Code versuche ich, ein Byte an der ersten Stelle im Eeprom meines Atmel-Controllers (AAT90S8515) zu speichern. Wenn ich den Code neu compiliere und NUR die besagte Stelle auslese, kommt 0 Inhalt zurück. Was läuft da falsch?
Wo läuft dein Programm hin, nachdem es die Daten an PortD geschickt hat? Übrigrens die 1. EEProm Zelle besser nicht verwenden, die wird beim Programmstart gerne mal überschrieben, was zumindest bei deinem Testprogramm jedoch egal sein dürfte.
Nicht ganz, die erste EEPROM-Zelle kann überschrieben werden, wenn während eines EEPROM-Schreibens ein Reset eintritt. Wenn das nie passiert (weil z. B. die Applikation selbst gar nicht im EEPROM schreibt, sondern nur vom Programmierer hinterlegte Daten liest), ist die erste Zelle nicht anders riskant als jede andere Zelle. Allerdings geht allgemein die Einschätzung um, daß besonders die AVRs der AT90-Serie anfällig gegen EEPROM-Korrumpierung sind, wenn sie (auch read/only) in einen brown-out geraten. Die aktuellen Chips sind dem Vernehmen nach davon weniger betroffen, wobei mir nicht klar ist, ob diese Aussage allgemein gilt oder nur dann, wenn man den (verbesserten?) brown-out detector benutzt.
Hallo nochmal, das Programm bleibt in einer while-schleife hängen. Anbei ein Versuch, das geschriebene im nächsten Kompilat auszulesen (zuerst eine willkürliche Zelle, dann die zuvor beschriebene)... es kommt immer nur 0 zurück. Diesen Versuch habe ich nun auf einen Atmega16 durchgeführt. Was mach ich nur falsch???
Nachtrag: ...oder täusche ich mich da? Wenn man den das Board aussschaltet (STK500), müssten die Daten erhalten bleiben, oder etwa nicht?
Ok, hat sich erledigt: Ich hatte übersehen, beim Flashen im AVRStudio das Flag "Preserve EEPROM memory...." einzuschalten. Ich Hirn ;-)
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.