Forum: Mikrocontroller und Digitale Elektronik const char in Eeprom


von Andre (Gast)


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 ?!

von Stefan B. (stefan) Benutzerseite


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__avr__eeprom.html

von ff (Gast)


Lesenswert?

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

1
const char text[] PROGMEM = {"Hallo Welt"}; 
2
3
char* p_text = pgm_read_word(&text) ;
4
5
eeprom_write_block( p_text, 200 , strlen(p_text));

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.