Hi,
bin mal wieder am Verzweifeln. ![]()
Ich möchte meine EEPROM-Routinen zum lesen und schreiben von verstellbaren Variablen überarbeiten da diese viel Platz benötigen.
Bisher war das ungefähr so:
Mode=EEPROMRead();
State=EEPROMRead();
Effect=EEPROMRead();
strip.updateLength(EEPROMReadWord());
strip.PixelLeft=EEPROMReadWord();
....
Und das dann insgesamt 40 mal, ebenfalls so in WriteData.
Jetzt dachte ich mir ich könnte die Adressen aller zu speichernden Variablen in eine Tabelle im Flash packen
uint8_t const PROGMEM &Vars[] = {
Mode,
State,
Effect,
strip.numLEDs+1,
strip.numLEDs,
strip.PixelLeft+1,
strip.PixelLeft,
...
};
um das ganze in Read- und WriteData dann so abzuarbeiten:
for(uintB n=0;n<38;n++){
uint8_t* ptr=pgm_read_word(Vars+n);
*ptr=EEPROMRead();
}
Habe schon viele Varianten mit Pointer setzen durch bzw. der Groschen in Sachen Pointer in C++ ist noch nicht wirklich gefallen.
Mault der Compiler mal nicht sind die Daten falsch eingelesen, editier ich das um kommen Convertierungsfehler bzw. ein exit status declaration of 'Vars' as array of references.
Was mach ich falsch bzw. geht das überhaupt mit der Arduino-IDE?
MfG
Andi