Hallo,
ich versuche seit geraumer Zeit, die Adresse eines String-Arrays und
einen Index an eine Funktion zu übergeben und in dieser Funktion einen
String aus dem Array auf einem LCD auszugeben. Die Strings und das Array
befinden sich komplett im Flash. Zur Ausgabe des Strings verwende ich
die Bibliothek von Peter Fleury.
Das habe ich bis jetzt:
1 | const char eins[] PROGMEM = "Eins";
|
2 | const char zwei[] PROGMEM = "Zwei";
|
3 | const char drei[] PROGMEM = "Drei";
|
4 |
|
5 | PGM_P str_array[] PROGMEM =
|
6 | {
|
7 | eins,
|
8 | zwei,
|
9 | drei
|
10 | };
|
11 |
|
12 | void show_text_p(uint8_t x, uint8_t y, uint8_t index, PGM_P texte)
|
13 | {
|
14 | lcd_gotoxy(x, y);
|
15 | lcd_puts_p(PGM_P)pgm_read_word(&(texte[index])));
|
16 | }
|
Und der Aufruf dazu:
1 | show_text_p(posx, posy, index, (const prog_char*) (&str_array));
|
Das läßt sich fehlerfrei kompilieren, liefert aber merkwürdige
Ergebnisse, z.B. werden nicht alle Strings korrekt angezeigt. Wie
übergibt man die Adresse eines sich im Flash befindlichen Arrays an eine
Funktion und wie muß der Aufruf dazu aussehen?
Vielen Dank im Voraus.
Krause