www.mikrocontroller.net

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


Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe ein String alla
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
char buf[43]; 
strcpy_P (buf, zeile1); uart_puts(buf);
 probiert, aber dass will nich so recht...

Danke! Matze

Autor: Markus Müller (mmvisual)
Datum:

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

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?
:-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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
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.

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Erich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.