www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik const char in Eeprom


Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuche gerade eine const char z.B. "Hallo" ins Eeprom zu speichern 
wieder abzurufen und auszugeben .
Klappt nur leider nicht .
Wobei ich auch sagen muss das ich keinen wirklichen Ansatz habe auch 
nach suchen nicht .
Habe also einfach versucht meine Eeprom Anweisung für Zahlen zu 
verwenden :

//eeprom_busy_wait();
//eeprom_write_block(&"Hallo",(uint8_t*)200, sizeof(standby_text_Z1));
//eeprom_busy_wait();
//eeprom_read_block(&standby_text_Z1,(uint8_t*)200, 
sizeof(standby_text_Z1));

Kann doch nicht wirklich sein das ich einen String bzw char in seine 
Einzelteile zerlegen muss und dann Buchstabe für Buchstabe speichern 
muss oder ?!

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Funktionen um die es geht sind bei deinem "Code" auskommentiert. 
Das kann so nicht funktionieren!

Die Verwendung der Funktionsparameter ist auch ungewöhnlich (&"Hallo", 
&standby_text_Z1). Hier wäre es sinnvoll die Definition der Variablen 
mit anzugeben (char standby_text_Z1[42];) bzw. ein C-Buch zu lesen 
(&"Hallo").

Hat dein µC die Eepromadressen 200 bis 200+sizeof(standby_text_Z1)?

> Kann doch nicht wirklich sein das ich einen String bzw char in seine
> Einzelteile zerlegen muss und dann Buchstabe für Buchstabe speichern
> muss oder ?!

Natürlich nicht. Dafür gibt es die Blockfunktionen.
http://www.nongnu.org/avr-libc/user-manual/group__...

Autor: ff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und sizeof bringt nur die größe des datentyps ...
bei strings nutzt man strlen um die menge der bytes im string auszulesen

const char text[] PROGMEM = {"Hallo Welt"}; 

char* p_text = pgm_read_word(&text) ;

eeprom_write_block( p_text, 200 , strlen(p_text));



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.