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