Ich verstehe den Abschnitt zum EEPROM im Tutorial nicht ganz: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM
1 | uint8_t eeFooByte EEMEM = 123; |
Steht der Wert 123 jetzt im RAM oder im EEPROM oder beides?
|
Forum: Compiler & IDEs Frage zu AVR EEPROMIch verstehe den Abschnitt zum EEPROM im Tutorial nicht ganz: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM
Steht der Wert 123 jetzt im RAM oder im EEPROM oder beides? kalle wrote:
> Steht der Wert 123 jetzt im RAM oder im EEPROM oder beides?
Im EEPROM. Und nur da. (Vorausgesetzt, Du schickst beim Programmieren
die .eep-Datei mit)
Danke und aha, also ist eeFooByte nur die vom Compiler vergebene Adresse im EEPROM. Aber was mache ich, wenn ich einmal einen Anfangswert im EEPROM ablegen will, der aber anschließend nur vom Programm geändert werden soll und durch ein neu-flashen nicht wieder mit 123 überschrieben werden soll? Einmal Flashen und dann die Fuses so setzen, dass die Initialisierung nicht übertragen wird? kalle wrote: > Danke und aha, also ist eeFooByte nur die vom Compiler vergebene Adresse > im EEPROM. Nicht ganz. Erstens ist eeFooByte keine Adresse, sondern ein Variablenname, weshalb bei Zugriffen auf die Variable mit den entsprechenden Funktionen auch der Adressoperator "&" verwendet werden muss, um an die Adresse heranzukommen. Außerdem vergibt der Compiler keine Adressen, das macht der Linker. > Aber was mache ich, wenn ich einmal einen Anfangswert im EEPROM ablegen > will, der aber anschließend nur vom Programm geändert werden soll und > durch ein neu-flashen nicht wieder mit 123 überschrieben werden soll? Dann darfst Du das EEPROM beim Programmieren eben nicht jedes Mal neu schreiben. Du könntest nach dem ersten Programmieren die EESAVE-Fuse setzen, um die Inhalte zu behalten. 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
Noch kein Account? Hier anmelden.
|
|