Ich möchte mehrere Vektoren im EEPROM (m)eines Controllers - mega.. - ablegen, Bytes und Words. Ich möchte die auf ganz bestimmten Stellen ablegen, damit ich nach einem Flashen das EEPROM nicht neu beschreiben muss bzw. damit ich nach dem Flashen auf die "alten" EEPROM-Werte auch wieder zugreifen kann, da es sich um Einstell- und Justagedaten dreht.
Anmerkung: habe den alten Thread wegen des genau passenden Titels wieder aufgewärmt.
Variable kann ich im EEPROM an einer bestimmten Stelle ablegen und auch wieder auslesen, auch nach dem neu Programmieren, das läuft problemlos. Ein Array der Art
/* Byte-Array */
uint8_t eeFooByteArray1[] EEMEM = { 18, 3, 70 };
uint8_t eeFooByteArray2[] EEMEM = { 30, 7, 79 };
kommt dann aber möglicherweise an einen Speicherplatz, der variieren kann. So gehts mir jedenfalls bei einem früheren, winzigen Projekt. Von diesem Projekt habe ich etwa diesen Stand:
Textfeld, das ins EEPROM beim Flashvorgang geschrieben wird.
unsigned char TestTimedOut[] EEMEM = "Timeout!";
Definition einer (EINER!) Bytevariablen auf die Adresse 0x004
#define EE_VALUE2 0x004 // Bytevariable
Wert dieser Variablen
[EE_VALUE2] = 0xFF
und so eine Schreibroutine
Code:
// ============================================================================== =
void DEEsch (int8_t data, uint8_t EEPadd) // Datum wegschreiben auf Adresse
{ //
// Evtl Parameter : (unsigned short address, unsigned char data)
// - - - - - - - - - - - - - - -// cli ();
while (EECR & (1<<EEPE)); // Schreiben möglich ? vorheriger Zugriff zu Ende?
EEAR = EEPadd; // Setze Adresse
EEDR = data; // Schreib Datum ins EEPROM-Data register
EECR |= (1<<EEMPE); //
EECR |= (1<<EEPE); // Starte Schreibzugriff
sei (); //
// - - - - - - - - - - - - - - -//
} //
// === Ende DEEsch (uint8_t dat, uint8_t EEPadd)
// ============================================================================== =
Bitte jetzt um Hilfe/Erläuterung zu diesen Fragen, der Vollständigkeit halber auch ein paar Anfängerfragen. Danke schon jetzt für die Antworten.
Wie definiere ich den GENAUEN Ort eines Datenfeldes im EEPROM?
Was bedeutet dieses ..foo.., ..Foo.. das ich bei EEPROM-Themen immer wieder lese?
Was bedeutet in den Zeilen
// schreiben
eeprom_write_word (&eeFooWord, 2222);
dieses &eeFooWord? Word verstehe ich (vermute ich), aber & und Foo ? ?
Lesezeichen