hallo,
ich möchte mich mit dem Kapitel eeprom beschäftigen.
Nachdem ich das Tutorial gelesen habe, versuche ich einige Variable in
Eeprom zu schreiben/lesen.Ich habe einige Beispiele gewählt.
Das Lesen/Schreiben ein Byte und read_block(für int)funktioniert.Für die
andere Fälle bekomme ich komische Werte. Weiß jemanden,wo ich Fehler
mache.
Anbei meine Code.
hier sind die Werte, die ich mit der Funktion sprintf bekomme.
:eeeeprom lesen: 123
:eeprom schreiben: 99
:eeprom scheiben: 0
:eeprom lesen: 30
:eeprom schreiben: Ú
:eeprom lesen:
Auf alle Hilfe bin ich sehr dankbar
Hallo,
hm ... ich empfehle dir nochmal ein C-Buch in die Hand zu nehmen. Der
Code ist leider sehr unübersichtlich und ich glaube du solltest dir
nochmal genau Stringverarbeitung und Behandlung ansehen und außerdem die
unterschiedlichen Typen an Variablen (int, char, ...).
Aus dem angefügten Code entnehme ich das du eigentlich im letzten Teil
den String ins EEProm kopieren willst und wieder einlesen willst, oder
liege ich da falsch ?
CA Dirk
Hier mal ein Beispiel, habe jetzt gerade keine möglichkeit zu testen.
Aber vom Prinzip sollte es richtig sein. Werde ich aber testen wenn ich
wieder zu hause bin. Hab auch der Einfachhalber mal die Headerdateien
weglassen.
1
charEEpromString[30]EEMEM;/* String in EEprom*/
2
charStringOrginal[30]="Teststring";/* String im Ram*/
Als erstes wird der String (StringOrginal) ins EEprom (EEpromString)
geschrieben mit anschliessender Ausgabe des Strings. Danach wird der
String aus dem EEprom (EEpromString) wieder ins RAM (StringKopie)
kopiert und wieder ausgegeben.
Beide Ausgaben sollten identisch sein wenn alles geklappt hat.
Hallo Dirk,
eine kleine Frage warum nicht nimmst Du die strlen(StringOrginal) in der
Funktion:eeprom_read_block( &StringKopie, &EEpromString, strlen(
StringOrginal). ich denke man muss strlen( StringKopie).
Danke
Ja, das Problem ist das die Kopie des Strings den man einlesen will noch
gar nicht existiert, und somit auch deren länge nicht ermittelt werden
kann. Aber da ich weiss das der String die länge des orginals haben
sollte, kann ich ja auch deren länge nehmen :-).
>Ja, das Problem ist das die Kopie des Strings den man einlesen will noch>gar nicht existiert,
Aber die Länge der Variablen ist mit sizeof bestimmbar.
Und ich denke, das sollte dahin, weil dann das eeprom-read-block weiß,
wie groß der puffer maximal ist. sonst könnten nachfolgende variablen
überschrieben werden..
Matthias Lipinsky wrote:
>>Ja, das Problem ist das die Kopie des Strings den man einlesen will noch>>gar nicht existiert,> Aber die Länge der Variablen ist mit sizeof bestimmbar.>> Und ich denke, das sollte dahin, weil dann das eeprom-read-block weiß,> wie groß der puffer maximal ist. sonst könnten nachfolgende variablen> überschrieben werden..>
Stimmt. Aber da muss der Programmierer sich schon darum kümmern wenn er
den kompletten String wieder haben will. Deshalb meine Anmerkung zu
Stringverarbeitung. Aber das ist eine eigenes Thema für sich :-)
CA Dirk