Geht nicht:
char* PROGMEM all = " >&#}=P[<{xxx";
LCD_putc_p(pgm_read_byte(all + index));
Geht schon:
char* all = " >&#}=P[<{xxx";
LCD_putc_p(all[(int)index]);
Wo hab' ich mich vertippt?
Was macht LCD_putc_p()?
Schau mal dort in die Implementierung hinein. Das '_p'
am Ende des Funktionsnamens ist normalerweise eine
Konvention, dass diese Funktion übergebene Adressen
automatisch als Adressen vom Flash ansieht.
Ohne die Funktion jetzt zu kennen, tippe ich mal
auf:
char* PROGMEM all = " >&#}=P[<{xxx";
LCD_putc_p( all + index );
Gast
#349613
Beachte auch, was unter "Aber Vorsicht:..." hier steht: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Vereinfachung_f.C3.BCr_Zeichenketten_.28Strings.29_im_Flash
Ah. Kapiert! Danke. char all[] PROGMEM = "xyz"; statt char* all PROGMEM = "xyz".
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.