Hallo! ich möchte Text fürs LCD im Programmspeicher ablegen. Nur bekomme ich das mit progmem nicht hin. schreibe ich sowas wie char lcd[] _attribute_ ((progmem)) = "xxx"; bekomme ich vom Compiler: warning: `progmem' attribute ignored Und der Text findet sich anschliessend im RAM wieder. probiere ich: char *lcd = PSTR("xxx"); funktioniert das, blos ich kann anschliessend nicht mit char buchstabe = PRG_RDB(lcd+position); drauf zugreifen. Das liefert dann nämlich genau gar nix zurück und mein Display zeigt nix an. Wodran liegts? Ich habe übrigens die neueste AVR-GCC version von avrfreaks.net
Hallo LtData Ich habe gerade so was in der Art gemacht. Ablegen der Strings im ProgMem: char *s1=PSTR("Dies ist ein String"); Die Anweisung muss innerhalb einer Funktion stehen, sonst motzt der Compiler. Für die Weiterverearbeitung musst du dann den String aus dem ProgMem zurück kopieren. Dazu gibt es folgende Funktion: char szBuf[genügend gross für den grössten abgelegten String]; strcpy_P (szBuf, s1); Bei mir funktioniert das prima. Gruss Christian
ich habe es jetzt anders lösen können: uint16_t lcd = PSTR("test"); kann gelesen werden mit: char buchstabe = PRG_RDB(lcd+counter); mal sehen welche "Schreibweise" weniger Code erzeugt.
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.