Forum: Mikrocontroller und Digitale Elektronik progmem problem


von Gernot F. (gernotfrisch)


Lesenswert?

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?

von Karl heinz B. (kbucheg)


Lesenswert?

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 );

von Stefan (Gast)


Lesenswert?


von Gernot F. (gernotfrisch)


Lesenswert?

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
Noch kein Account? Hier anmelden.