uint8_tmenu_nextOnDown;// nächster Menüpunkt bei nach links BUTTON2
5
uint8_tmenu_nextOnUp;// nächster Menüpunkt bei nach rechts BUTTON3
6
uint8_tmenu_nextOnReturn;// nächster Menüpunkt bei return BUTTON1
7
uint8_tmenu_nextOnBack;// nächster Menüpunkt bei home BUTTON4
8
uint8_tmenu_varMin;// minimaler Wert
9
uint8_tmenu_varMax;// maximaler Wert
10
uint8_t*menu_varPtr;// zugehörige Variable
11
void(*execute)(void);// Funktion die ausgeführt werden soll
12
}menu_rom_data[33]PROGMEM={
13
{0,0,0,0,1,0,0,0,0,0},
14
{1,1,11,1,2,0,0,0,0,0},
15
16
[...]
17
18
{31,1,31,29,32,0,0,0,0,0},
19
{32,3,0,0,31,31,0,0,0,loadBasicsysSetup}
20
};
Ich frage mich nun wie ich ein einzelnes Feld effektiv auslese. Mit
pgm_read_byte kann ich ja einzelne Bytes auslesen. Aber kann ich auch
innerhalb des stucts die Felder adressieren? Etwa so:
1
pgm_read_byte(&menu_rom_data[5].menu_type);
Ich würde es ja testen aber mein Board macht seit cih PROGMEM benutze
gar nichts mehr. :D
Danke schon mal für die Hilfe
Gruß Manuel
Hi,
meinste nicht, dass das Ganze irgendwann unuebersichtlich wird, wenn die
Menuestruktur groesser wird und mehr Verschachtelungen vorhanden sind?
Gruesse
Dusty
danke mit memcpy_p lässt sich arbeiten. bin dadurch auch auf eine ganz
nette referenz gestossen.
Ich weiß das menü ist nicht ganz optimal, aber ich habe es jetz schon so
implementiert. An ROM fehlt es mir ja nicht. Alles nochmal überarbeiten
würde den Rahmen meiner, dieses Semester viel zu kurzen, Semesterferien
sprengen. Trotzdem danke für eure Tips.
Gruß Manuel
EDIT: Für die, die per Suche hierauf gestossen sind noch der Link:
http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html#ga53ee9e2dec1d5f685d78aa8dc444dccb