const char in Eeprom

Gast #1731179
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 ?!
Persönliche Seite #1731225
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
Gast #1731237
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));

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