Hi, habe schon im Forum gesucht, aber nicht so richtig die Antwort auf mein Problem gefunden. Ich habe mit AVR GCC einen Wert definiert: uint8_t ee_Endlage1_W EEMEM; Kompilieren klappt prima. Auch ein EEP-File wird erzeugt. Ich lade mein EEP und HEX mit MegaLoad hoch. Leider habe ich jetzt das Problem, dass ich nach dem neu kompilieren und flashen die unmöglichsten Werte für ee_Endlage1_W bekomme. Ich würde gerne Standardwerte im EEP-File definieren. Habe auch schon versucht, die Zeile von oben folgendermaßen zu formulieren: uint8_t ee_Endlage1_W EEMEM=500; Wenn ich wieder flashe und die Daten auslese kommt wieder nur murks raus. Das schreiben und lesen an sich funktioniert im Programm tadellos. Nur die Zuweisung der Standardwerte nicht. Was mache ich falsch?
eeprom_read_...() bzw. eeprom_write...() vergessen? (Du kannst auf die EEMEM Variablen nicht einfach so zugreifen). Und antworte jetzt nicht mit: "Natürlich nicht!!!1111elf" - du hast kaum sinnvolle Informationen zu deinem Programm gepostet. scnr, Jörg ps.: Vielleicht brauchst du auch nur mal nach der EESAVE-Fuse zu sehen
Ich schrieb: "Das schreiben und lesen an sich funktioniert im Programm tadellos." Also ja, ich habe die von Dir genannte lib Funktionen verwendet. Wenn ich Werte in den EEPROM schreibe (mittels UART Befehlen) und dann wieder auslese funktioniert alles bestens. Sobald ich aber meine Software neu kompiliere und flashe haut es die gespeicherten Werte durcheinander. Ich denke mittlerweile auch das bei den FuseBits oder dem MegaLoad was nicht hinhaut. Dem werde ich mal nachgehen. Danke trotzdem.
Beim flashen wird das Device gelöscht und somit auch der EEPROM. Somit u.a. bei AVR Studio dran gedacht das EEP File anzugeben und nach dem flashen auch noch den EEPROM zu beschreiben?
Hi
>Beim flashen wird das Device gelöscht und somit auch der EEPROM.
Nicht unbedingt. EESAVE-Fuse setzen und der EEPROM-Inhalt bleibt beim
Löschen erhalten.
MfG Spess
Es lag wohl am Megaload. Ich habe den Bootloader jetzt rausgehauen und flashe den µC über das STK500 und AVRStudio. Da gibt es keine Probleme. Gibt sogar noch zusätzliche Vereinfachungen, ich packe jetzt EEP, HEX und FuseBits in ein ELF-File und lade alle gleichzeitig hoch. Kannte ich noch gar nicht, ist recht hilfreich. Achso, Brown-Out habe ich noch gesetzt, aber ich denke mal das hat damit nicht so viel zu tun.
Ein Frage hätte ich allerdings noch. Die Standardwertzuweisung der EEPROM Werte funktioniert einwandfrei. Z.B.: uint8_t EEMEM ee_Endlage1_W=0; Das Ganze wird im EEP-File abgelegt und wenn ich es wie oben beschrieben flashe, habe ich "0" auch als Startwert. Habe ich allerdings ein Array, funktioniert das nicht: uint8_t EEMEM ee_Belegungsint_W[]="1,2,3,4,5,6,7,8,9,10,11,12"; Das sind die Werte sonstwas nur nicht die, die ich als Standard definiert habe. Hat da jemand eine Idee?
Myjestic schrieb: > Habe ich allerdings ein Array, funktioniert das nicht: > uint8_t EEMEM ee_Belegungsint_W[]="1,2,3,4,5,6,7,8,9,10,11,12"; > > Das sind die Werte sonstwas nur nicht die, die ich als Standard > definiert habe. Lass mich raten, die "sonstwas-Werte" sind 49, 44, 50, 44, 51, 44, ... Wenn du eigentlich die Werte 1, 2, 3, ... erwartet hast, musst du die Anführungszeichen durch geschweifte Klammern ersetzen.
uint8_t ee_Belegungsint_W[] EEMEM ={1,2,3,4,5,6,7,8,9,10,11,12}; so sollte es gehen.....eventuell noch explizit in de eckigen Klammer die Größe angeben...kann gerade nicht testen.. egberto
Ups! Shame on me! Muss heißen: uint8_t EEMEM ee_Belegungsint_W[]={1,2,3,4,5,6,7,8,9,10,11,12}; Bestens, jetzt geht alles.
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.