PROGMEM Problem

Gast #432710
Lesenswert?
• ▲
▼
Hallo Leute,
ich definiere eine char Konstante im Flash:

char StringImFlash[] PROGMEM = "Waehlen Sie bitte einen Modus aus";

diese Konstante will ich dann zum richtigen Zeitpunkt im Hauptprogramm 
mit der Funktion sende_string per Terminal ausgeben:

sende_string(StringImFlash);

Die Funktion sende_string befindet sich im Anhang.
Wie kann ich die Konstante aus dem Flash ansprechen?
MFG
Angehängte Dateien:
Gast #432724
Lesenswert?
• ▲
▼
Ist doch ganz einfach: Du kannst nicht auf Daten, die im Flash stehen 
wie auf Daten zugreifen, die im RAM stehen.
Für den Flash-Zugriff brauchst du "pgm_read_byte(...)".

>Ich habe das AVR GCC Tutorial durchgesen und verstehe nur Bahnhof!
Dann übernimm einfach Rufus Lösung!
Gast #432729
Lesenswert?
• ▲
▼
Die Lösung von Rufus funktioniert nicht. Terminalprogramm gibt kommische 
Zeichen aus.
@inoffizieller WM-Rahul : mit dem Befehl "pgm_read_byte(...)" wird doch 
nur ein Byte gelesen. Ich will aber char text ausgeben.
MFG
Gast #432742
Lesenswert?
• ▲
▼
>Ich will aber char text ausgeben.
Das ist auch nichts anderes als eine Ansammlung von Bytes...

>Hat denn das Senden von Zeichen überhaupt schon mal funktioniert?
Das würde mich auch interessieren.
Gast #432746
Lesenswert?
• ▲
▼
@Rufus: Vielen Dank es funktioniert!
Die komischen Zeichen entstehen dadurch da ich die anderen 
Char-Variablen aus dem RAM geladen habe! Super! Vielen Dank! Jetzt 
verstehe ich auch wie die sende_string-funktion funktioniert!
Oft ist es so dass man Sätze liest und diese nicht gleich versteht. Da 
kann man noch tausend Mal lesen! Da bringen Beispiele viel mehr!
Da ich nicht der einzige bin!
Habt ihr Euch schon mal überlegt dieses Thema im AVRGCC Tutorium 
ausweiten und mit viel mehr Beispielen beschreiben?
#432751
Lesenswert?
• ▲
▼
Na ja.
Das Tutorial geht schon davon aus, dass man einen gewissen
C-Grundstock hat. Das Tutorial konzentriert sich hauptsächlich
auf die Unterschiede und spezifischen Erweiterungen, die man
zur Programmierung eines AVR braucht. C sollte man da schon
halbwegs können um mit dem Tuorial was anfangen zu können.

Aber der Vorschlag an sich ist nicht so schlecht. Ich werde
mal eine UART-Sende Funktion in den entsprechenden Abschnitt
einfügen.
Gast #432803
Lesenswert?
• ▲
▼
>Habt ihr Euch schon mal überlegt dieses Thema im AVRGCC Tutorium
>ausweiten und mit viel mehr Beispielen beschreiben?

Da es ein Wiki ist, kannst du das auch machen...("wir" wissen ja meist 
wie es geht...)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren