mikrocontroller.net

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


Autor: Sven S. (schwerminator)
Datum:

Bewertung
0 lesenswert
nicht 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:
menu_t sub1_menu = {
   .top_entry = 0,
   .current_entry = 0,
   .entry =  {
      {.flags = 0,
       .select = my_select,
       .name = "s2",
       .value = 0,
      },
      {.flags = 0,
       .select = my_select,
       .name = "s3",
       .value = 0,
      },
      {.flags = 0,
       .select = my_select,
       .name = "s4",
       .value = 0,
      },
   },
   .num_entries = 3,
   .previous = NULL,
};

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

Autor: Sebastian B. (mircobolle)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sven S. (schwerminator)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.