Forum: Compiler & IDEs Daten aus EEPROM für Menu verwenden


von Sven S. (schwerminator)


Lesenswert?

Hallo ich bin zur Zeit an einem Projekt beschäftigt, wobei ich 
Datensätze aus einem I²C-EEPROM in einem LCD-Menu auflisten muss. Ich 
verwende dabei einen ATmega644 mit dem Menusystem tinymenu. Ein 
(Sub-)Menu wird z.B. folgendermaßen deklariert:
1
menu_t sub1_menu = {
2
   .top_entry = 0,
3
   .current_entry = 0,
4
   .entry =  {
5
      {.flags = 0,
6
       .select = my_select,
7
       .name = "s2",
8
       .value = 0,
9
      },
10
      {.flags = 0,
11
       .select = my_select,
12
       .name = "s3",
13
       .value = 0,
14
      },
15
      {.flags = 0,
16
       .select = my_select,
17
       .name = "s4",
18
       .value = 0,
19
      },
20
   },
21
   .num_entries = 3,
22
   .previous = NULL,
23
};

Nun könnte ich natürlich beim Einsteigen in jedes Submenu, das struct 
schreiben. Aber dann ist ein Großteil des RAMs vollgeschrieben, oder 
womöglich passt gar nicht alles rein. Hat also jemand einen Tipp, wie 
ich am besten die Daten aus dem EEPROM aufs LCD bekomme? Normalerweise 
würde man ja LCD-Texte im PROGMEM speichern, aber da ich die Datensätze 
im EEPROM ständig verändere, fällt die Möglichkeit wohl aus... Hab ich 
das Problem verständlich beschrieben?

Vielen Dank im Vorraus, Sven

von Sebastian B. (mircobolle)


Lesenswert?

was genau liest du aus dem EEPROM? Die Menü-Texte? Oder die Parameter?

Ich verstehe das Problem nicht ganz.
Die Menü-Struktur würde ich als konstant deklarieren.
Und die EEPROM Werte würde ich bei Bedarf aus dem EEPROM ins RAM laden 
und dann darstellen.

Warum möchtest du denn alle(?) EEPROM Werte im RAM puffern? Sie dienen 
doch nur zur Darstellung, oder?

von Sven S. (schwerminator)


Lesenswert?

Also das Ganze ist eine Art Fernbedienung, sie enthält eben auch ein 
LCD. Im EEPROM stehen in einem 18-Byte-langen Datensatz 1 Statusbyte, 2 
Datenbytes und 15 Textbytes. Ich muss nun also die 15 Textbytes aufs LCD 
packen und die anderen Bytes in einer Funktion verarbeiten... Ist das 
jetzt klarer geworden?

mfG, Sven

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
Noch kein Account? Hier anmelden.