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
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.
Genaugenommen steht alles hier:
1 | #ifndef EEMEM
|
2 | // alle Textstellen EEMEM im Quellcode durch _attribute_ ... ersetzen
|
3 | #define EEMEM _attribute_ ((section (".eeprom")))
|
4 | #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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.