Forum: Mikrocontroller und Digitale Elektronik Frage zur Funktion "eeprom_write_block"


von Andi H (Gast)


Lesenswert?

Folgendes funktioniert:
1
char PASSWORT[5] 
2
char EEMEM eepromPASSWORT[5];
3
4
----------------------------------------------------
5
eeprom_write_block("ABCDE", &eepromPASSWORT, 5 );
6
eeprom_read_block(&PASSWORT, &eepromPASSWORT, 5);
7
lcd_puts(font5x8,PASSWORT);
Im String "Passwort" steht dann "ABCDE" und ist auch nach Reset noch 
vorhanden (also im EEPROM).



Nur funktioniert folgendes nicht:
1
eeprom_write_block("ABCDE", &eepromPASSWORT, 5 );
2
eeprom_read_block(&PASSWORT, &eepromPASSWORT, 5);
3
PASSWORT[5]="12345";
4
eeprom_write_block(&PASSWORT, &eepromPASSWORT, 5 );
5
eeprom_read_block(&PASSWORT, &eepromPASSWORT, 5);
6
lcd_puts(font5x8,PASSWORT);
Dann müsste doch jetzt "1234" auch nach einem Reset angezeigt werden, 
doch leider funktioniert eeprom_write_block(&PASSWORT, &eepromPASSWORT, 
5 ); nicht :(


Hat jemand ne Idee?

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Andi H schrieb:

> Im String "Passwort" steht dann "ABCDE"

das glaube ich nicht.
Denn in einem Array der Länge 5 kannst du maximal einen String mit einer 
strlen von 4 speichern. Das abschliessende obligatorische \0 Byte, 
welches das Ende der Zeichenkette markiert, muss ja auch irgendwo hin.
Und das du hier einen Adressoperator benutzen musst um die Arrays zu 
übergeben macht mich auch stutzig.

> und ist auch nach Reset noch
> vorhanden (also im EEPROM).

die 5 Zeichen stehen im EEPROM: Sie sind aber kein String, sondern 5 
Zeichen.


> PASSWORT[5]="12345";

Was soll das sein?
Arrays kann man nicht zuweisen.

> Hat jemand ne Idee?

Ja.
Lies im C-Buch deiner Wahl darüber nach, wie Stringverarbeitung in C 
wirklich funktioniert. Dann bügelst du auch nicht unabsichtlich Speicher 
über den Haufen, der dir nicht gehört.

: Bearbeitet durch User
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.