Guten morgen zusammen,
ich habe ein kleines Problem mit dem eeprom und der schreib und lese
Funktion und zwar spuckt der compiler warnungen aus wenn ich zum
beispiel
adresse = eeprom_read_byte(0); schreiben möchte.
Ich habe auch schon herausgefunden woran es liegt und zwar erwartet er
beim aufruf der funktionen einen bestimmtenzahlen wert der "gecastet"
werden muss.
aber was dieses casten machen soll habe ich noch nicht ganz verstanden
und weiß deshalb nicht ob das für mein Vorhaben überhaupt in so von
Nöten ist.
Zur erläuterung ich habe im EEPROM auf der Stelle '0' die Speicher
adresse steht wo die Variable 'indexer_position ' abgespeichert werden
soll. In meinem Fall steht dort eine '10'.
Das heisst EEPROM Adresse '0' steht eine 10 und auf EEPROM Adresse '10'
steht die aktuelle 'indexer_position'.
in meinem Programmteil hier Lese ich von der Adresse '0' den wert und
schreibe dann die Indexer Position an die Adressnummer die ich von '0'
gelesen hab.
Dann Lese ich den Krempel zurück und vergleiche ob der schreibversuch
geklappt hat, denn wenn er nicht geklappt hat soll er auf der adresse
'0' den wert erhöhen und dann erneut speichern. Das soll dazu dienen
einer defekten speicherzelle aus dem weg zu gehen.
Oder könnte man das alles irgenwie eleganter machen ? weil momentan ja
nur einmal geprüft wird ob die zelle kaputt ist.
aber ich mache nur ca 10 Speicherungen am Tag.
1 | indexer_position = 0;
|
2 |
|
3 | adresse = eeprom_read_byte(0);
|
4 | eeprom_write_byte(adresse, indexer_position); // schreiben
|
5 |
|
6 | eeByte_read = eeprom_read_byte(adresse);
|
7 |
|
8 | if(indexer_position != eeByte_read){
|
9 | adresse = eeprom_read_byte(0);
|
10 | adresse++;
|
11 | eeprom_write_byte(0, adresse); // schreiben
|
12 |
|
13 | adresse = eeprom_read_byte(0);
|
14 | eeprom_write_byte(adresse, indexer_position); // schreiben
|
15 | }
|
Vieleicht mag sich das ja mal jemand angucken :)