Forum: Compiler & IDEs Probleme mit Progmem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von LtData (Gast)


Lesenswert?

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

von Christian Schifferle (Gast)


Lesenswert?

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

von LtData (Gast)


Lesenswert?

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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.