Hallo,
Ich habe eine vielleicht blöde Frage:
Ihr kennt doch die Funktionen "eeprom_write_byte()" und
eeprom_read_byte". Ich habe eine neue Funktion gebaut, die so aussieht:
1 | void _eeprom_write_byte(uint8_t *ptr_EE,uint8_t value)
|
2 | {
|
3 |
|
4 | for(uint8_t i=0;i<EEPROM_NUMBER_OF_COPIES;i++)
|
5 | {
|
6 | eeprom_write_byte(ptr_EE + (EEPROM_TOTAL_AMOUNT_OF_DATA*i),value);
|
7 | while((NVM.STATUS&0x02) != 0x02);
|
8 | }
|
9 | eepromDoCrc();
|
10 | }
|
Mit dieser Funktion erstelle ich automatisch eine (oder mehrere)
Sicherheitskopien im EEPROM (mit CRC-Code verifiziert) um im Fehlerfall
noch richtige Daten zu haben. Die Anzahl der Daten im EEPROM und die
Anzahl der zu erstellenden Kopien stelle ich mit
EEPROM_TOTAL_AMOUNT_OF_DATA bzw. mit EEPROM_NUMBER_OF_COPIES ein.
Ein Aufruf sieht z.B. folgendermaßen aus:
1 | _eeprom_write_byte(&test,0xFF);
|
Nun zu meinem Problem: Was ist, wenn ich auf einen Bereich über der
EEPROM-Adresse 0xFF schreiben will. Ich übergebe hier doch einen Pointer
(uint8_t *ptr_EE) und in der Funktion gebe ich die zu beschreibende
EEPROM-Adresse explizit an. Wenn ich viele Daten habe, muss ich dort
definitiv Werte über 255 angeben. Muss ich dann uint16_t *ptr_EE
schreiben? Wie muss ich da vorgehen, bin da ein bisschen ein Anfänger!
:)
Vielen Dank für eure Hilfe!
mfg
Andy