String aus FLASH in den ROM

OP #1893781
Lesenswert?

Hi,

ich habe ein String alla
1
static char zeile1[4] PROGMEM =  "huhu";
 im FLASH. Den will ich jetzt in dem ROM holen um ihn per UART 
auszugeben.
Kann mir da mal jemand einen Tpp geben?! I
Ich habs mit
1
char buf[43]; 
2
strcpy_P (buf, zeile1); uart_puts(buf);
 probiert, aber dass will nich so recht...

Danke! Matze
#1893827
Lesenswert?

Matze Niemand schrieb:

> Kann mir da mal jemand einen Tpp geben?! I

Ja.
Lass um Himmels Willen den Compiler arbeiten.
Der weiß nämlich das der String "huhu" aus 5 Zeichen besteht und nicht 
aus 4!

Der Compiler kann das wunderbar selber, du musst ihn nur lassen
1
static char zeile1[] PROGMEM =  "huhu";

Jetzt zählt der Compiler für dich die Zeichen und legt das Array groß 
genug an.

Und wenn du wissen willst, warum deine Version nicht funktioniert, dann 
musst du in dein C-Buch schauen. Unter Stringinitialisierung und was 
passiert, wenn du so wie du das Array um 1 Zeichen zu klein machst und 
warum der Compiler dann nicht schreit bzw. was dann passiert.
OP #1893904
Lesenswert?

achja,.... die Hardware is ein ATmega8. Der Compiler der GCC.
Das der string aus 5 zeichen bestehen muss, is mir auch klar - die '\0' 
wird ja angehängt (ich habe den quellcode kurz selber geschrieben und 
nicht aus dem compiler hier her kopiert - entschuldigung dafür).
Und natürlich meine ich den RAM... (read access memory - macht das 
beschreiben schöner :)

aber geht dennoch nicht. hat nochjemand nen tipp.

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