Forum: Mikrocontroller und Digitale Elektronik String aus FLASH in den ROM


von Matze N. (hupe123)


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

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Mein Glaskugel sagt mir es handelt sich um einen M16C Prozessor.
Oder ist meine Glaskugel Kaputt?

von Floh (Gast)


Lesenswert?

Matze Niemand schrieb:
> Den will ich jetzt in dem ROM holen um ihn per UART
> auszugeben.

meinst du RAM?
In einen ROM (Read Only Memory) lässt sichs sehr schlecht schreiben?
:-)

von Karl H. (kbuchegg)


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.

von Matze N. (hupe123)


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.

von Karl H. (kbuchegg)


Lesenswert?

Matze Niemand schrieb:

> nicht aus dem compiler hier her kopiert - entschuldigung dafür).

schwerer Fehler!

> aber geht dennoch nicht. hat nochjemand nen tipp.

Ja: poste deinen richtigen Code

von Erich (Gast)


Lesenswert?

Wenn der im ROM (Flash) stehende String unverändert am UART ausgegeben 
werden soll, ist es völlig unnötig ihn erst ins RAM kopieren zu wollen.

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.