mikrocontroller.net

Forum: Compiler & IDEs EEPROM Begriffe Erklärung


Autor: Marie Berger (marie93)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Friendzzz,

ich brauch wieder eure Hilfe.


>>>>>>>>>Kann mir jemand die folgenden Zeilen erklären. Was bedeutet EEMEM?

#ifndef EEMEM
// alle Textstellen EEMEM im Quellcode durch _attribute_ ... ersetzen
#define EEMEM  _attribute_ ((section (".eeprom")))
#endif

>>>>>>>>Das hier verstehe ich....

#define   EESIZE   512      // Maximale Größe des EEPROMS
#define   EE_DUMMY   0x000  // Dummyelement (Adresse 0 sollte nicht 
genutzt werden)
#define   EE_VALUE1  0x001  // Eine Bytevariable
#define   EE_WORD1L  0x002  // Eine Wordvariable (Lowbyte)
#define   EE_WORD1H  0x003  // Eine Wordvariable (Highbyte)
#define   EE_VALUE2  0x004  // Eine weitere Bytevariable

>>>>>>>Was bedeutet genau "ee_mem[EESIZE] EEMEM"?

unsigned char ee_mem[EESIZE] EEMEM =
{
   [EE_DUMMY]   = 0x66,
   [EE_VALUE1]  = 0x05,
   [EE_WORD1L]  = 0x01,
   [EE_WORD1H]  = 0x00,
   [EE_VALUE2]  = 0xFF
};


Ich hab schon im Tutorial gelesen. Leider versteh ich es nicht 
wirklich...

Mein folgendes Ziel ist es, ein Array vom wert integer in den EEPOR zu 
laden und auch wieder auslesen zu können. Falls ihr mir hier zu auch 
noch Tipps oder Code zeigen könnt, wäre super. Gerade will ich erst mal 
den EEPROm verstehen.

Eure Marie93

: Verschoben durch Admin
Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das steht doch schon fast alles da. Variablen denen das EEMEM vorgesetzt 
wird, werden in der Section .eeprom gespeichert.
Ich vermute in dem Linker Skript wird diese Sektion auf den Adressraum 
eines EEProms zeigen, sprich die Variablen sollten einen Reset 
überleben.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genaugenommen steht alles hier:
#ifndef EEMEM
// alle Textstellen EEMEM im Quellcode durch _attribute_ ... ersetzen
#define EEMEM  _attribute_ ((section (".eeprom")))
#endif

Hängt man "_attribute_ ((section (".eeprom")))" an eine Variable bei der 
Deklaration an, sagt das Compiler und dem Linker mit, daß die Variable 
in der Speichersektion ".eeprom" anzulegen ist. Die WinAVR-Linkerscripts 
sorgen dann dafür, daß die Variable dann im EEPROM landet.

Weil das aber so umständlich und lang ist, gibt es halt ein define mit 
dem Namen EEMEM. Das lässt sich halt schneller tippen.

Funktion und Bedeutung von "#define" und den zugehörigen 
Preprozessoranweiseungen finden sich in jedem anständigen C-Buch.

Oliver

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.