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 );
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".
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.