PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Werte im eeprom vor "überbrennen" schützen.



PCMan
31.03.2011, 12:02
Hallo,

im EEPROM lege ich zwei Wörter ab, die lediglich Kalibrationsdaten sein sollen:


uint16_t eeWord EEMEM = 0;

//Beschreiben in main():
uint16_t CalibData = 12345;
eeprom_write_word(&eeWord, CalibData);

//auslesen aus main():
CalibDate = eeprom_read_word(&eeWord);


Zur Frage: wenn ich jetzt das Programm laufen lasse und 12345 reinschreibe, bleibt der Wert ja erhalten wenn ich das Gerät aus und wieder anschalte. Aber wie ist es, wenn ich den µC neu flashe? Dann schreibt er doch wieder "0" in's EEPROM, richtig? Kann man das irgendwie einstellen, dass nur aus dem Programm heraus Werte in's EEPROM gelangen können und nicht durch das Flashen?

Besten Dank,
Simon

BMS
31.03.2011, 13:11
Hallo,
das müsste schon möglich sein. Du überträgst wahrscheinlich mit avrdude, dann kannst du das über die Kommandozeile festlegen. Es gibt aber so viele Optionen bei avrdude, das kann man sich gar nicht alles merken. Welchen Parameter du genau brauchst, musst du hier raussuchen: http://www.nongnu.org/avrdude/user-manual/avrdude_4.html ;)
Beim flashen wird der EEPROM-Speicher mit Einsen gefüllt (Hex FF, Dec 255, Bin 11111111).
Notfalls irgendein "workaround" machen - erst EEPROM-Daten auslesen, dann flashen und EEPROM-Daten wieder draufspielen, die Aufrufe von avrdude ließen sich in einer .bat -Datei unterbringen.

Grüße, Bernhard

PCMan
31.03.2011, 13:57
Hi,
danke fuer den Hinweis. Muesste dann so laufen...



avrdude ... -U eeprom:r:ee:i
avrdude ... flashen
avrdude ... -U eeprom:w:ee:i



Werd's heute Abend mal probieren,
merci,
Simon

sternst
31.03.2011, 15:49
Das einfachste ist es, im Controller die EESAVE-Fuse zu setzen.

BMS
31.03.2011, 16:28
Sternst hat recht, Fuses anders zu setzen ist deutlich einfacher!
Dann muss man wirklich nichts weiter an avrdude ändern.

Richard
31.03.2011, 18:40
Sternst hat recht, Fuses anders zu setzen ist deutlich einfacher!
Dann muss man wirklich nichts weiter an avrdude ändern.

Sicher? Vom Programm aus soll das Eprom ja beschreibbar bleiben, ist es das bei gesetzten Schreibschutz? Könnte man vom Programm aus den Schreibschutz löschen > Schreiben >setzen?

Gruß Richard

PCMan
01.04.2011, 13:30
Hi,

also, ich habe EESAVE gesetzt und kann vom Programm aus lesen/schreiben, avrdude lässt beim Programmieren das EEPROM in Ruhe. Genau das, was ich wollte. Besten Dank,
Simon

Richard
01.04.2011, 14:56
Hi,

also, ich habe EESAVE gesetzt und kann vom Programm aus lesen/schreiben, avrdude lässt beim Programmieren das EEPROM in Ruhe. Genau das, was ich wollte. Besten Dank,
Simon

Auch besten Dank für die Info das es vom Programm aus geht. Wieder etwas dazu gelernt. :-)

Gruß Richard