Zusatzinformationen im EEPROM ablegen


#1

Sehe ich das Richtig das nur ein byte im Arduino beschrieben wird mit dem Hörspielfortschritt Mode5 und
8byte auf der Karte mit

struct nfcTagObject {
  uint32_t cookie;
  uint8_t version;
  uint8_t folder;
  uint8_t mode;
  uint8_t special;
};

#2

Master File EEPROM? Wat? Bitte wähle einen aussagekräftigen Titel. Danke.

Aber die Frage würde ich erstmal mit ja beantworten. Worauf zielst du ab?


#3

Dachte der Titel trifft es, da es doch eine DEV und eine Master version bei git gibt! Sorry wenn das nicht so ist.

Ich habe angefangen zusatzdaten zu speichern, und schreibe ab 16 rein. es läuft alles aber ich wollte nur Problemen vorbeugen und was Speicher verwaltung an geht stehe ich ein wenig auf dem Schlauch.
Ich speicher 8 Lieblingslieder die über Tasten immer direkt angewählt werden können.
Während ein Lied spielt kann es einfach einem knopf zugewiesen werden.

uint16_t Lovesong[8]={0,0,0,0,0,0,0,0};

void writeSettingsToFlash() {

int eeAddress = sizeof(Lovesong);
Serial.println(F("=== writeSettingsToFlash()"));
Serial.println(eeAddress);
for (int i=0;i<=7;i++)
{
EEPROM.put(eeAddress, Lovesong[i]);
eeAddress += sizeof(uint16_t);
}
}


#4

Jetzt verstehe ich was du meinst. Erstmal kann ich dir nicht empfehlen, master als Basis zu nehmen. Es is ja absehbar, daß DEV irgendwann gemerged wird.

In DEV sind die ersten 100byte für den Fortschritt vom Hörbuchmodus. Dann kommen die Settings (kein Plan gerade wieviel Byte das sind). Ich schlage vor, dass du die Settings um deine Settings erweiterst. Dann solltest du keine Probleme haben und brauchst auch nicht jedes Byte da einzeln schreiben.


#5

Wie immer Danke!

Leider ist jetzt schon alles auf der Master Version aufgebaut. Wenn das Ergebnis Spaß bereitet, werde ich vielleicht bei Zeiten alles noch mal neu schreiben auf Basis der DEV Version und mich mal mit Git und der Speicherverwaltung beschäftigen.


#6

Da es in master keine Settings gibt, sehr wohl aber die Fortschrittsspeicherung, kannst du dort ab Adresse 100 deine Sachen im EEPROM speichern. Warum du ab 16 schreibst kann ich mir nicht so recht herleiten. Das solltest du ändern.

Das speichern selber würde ich so machen (ungetestet):

struct LoveSongObject {
  uint16_t slot[8];
} LoveSongs;

LoveSongs.slot[] = {0,0,0,0,0,0,0,0};

EEPROM.put(100, LoveSongs);
EEPROM.get(100, LoveSongs);

#7

Vielen Dank werde es Testen und weiter lesen um zu verstehen was da genau passiert.
Ich denke das sind absolute Basics die ich noch nicht drauf habe.