Hallo,
ich habe heute mal versucht einen seriellen EEPROM über I²C/TWI
anzusteuern. Das ist ein 16kbit Typ und sollte somit 2048 Bytes
speichern können.
Jetzt würde ich gerne mal durch einen kleinen Test überprüfen ob auch
alle Speicherstellen richtig angesprochen werden. Dazu habe ich
folgenden Code verwendet, doch der hat Lücken. :-(
(Prinzipiell sollte es funktionieren, das was ich reinschreibe kann ich
auch wieder auslesen.)
Spätestens nach 256 Bytes sind die Werte im Speicherplatz x+256, x+512,
x+768, x+1024... usw. immer gleich.
Wenn ich nun schon an der falschen Adresse schreibe und dann auch an der
falschen wieder Lese ist meine Routine murx...
SET_LED_X und CLR_LED_X = Signalisierung über eine LED
1 | SET_LED_INF;
|
2 | CLR_LED_STA;
|
3 | for (intTMP1=0; intTMP1<2048;intTMP1++) {
|
4 | write_twi_eep(TWI_ADR_EEP, intTMP1, intTMP1 & 0xFF);
|
5 | if (read_twi_eep(TWI_ADR_EEP, intTMP1) != (intTMP1& 0xFF)) SET_LED_STA;
|
6 | }
|
7 | CLR_LED_INF;
|
Wie kann man sicher gehen das wirklich immer ein anderer Wert in der
Zelle landet?
Danke AVRli...