mikrocontroller.net

Forum: Compiler & IDEs Frage zu AVR EEPROM


Autor: kalle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe den Abschnitt zum EEPROM im Tutorial nicht ganz:

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
uint8_t eeFooByte EEMEM = 123;

Steht der Wert 123 jetzt im RAM oder im EEPROM oder beides?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: kalle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: kalle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Hilfe!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.