Ich weiß, dass der Code nicht gerade optimal ist, aber das hat sich
durch das kürzen so ergeben.
Korrekterweise müsste nun der Controller jede Sekunde die Zahlenfolge 1
- 12 in den Speicher schreiben und wenn man irgendwann ein "r" über UART
sendet, den gesamten Speicher ausgeben. Merkwürdigerweise sieht aber die
erste Folge, die er ausgibt, stets so aus:
5, 6, 7, 8, 9, 10, 11, 12, 9, 10, 11, 12
Daraufhin folgt 4 mal die richtige Zahlenfolge 1 - 12 und dann einmal
1, 2, 3, 4, 9, 10, 11, 12, 255, 255, 255, 255
Dann wieder von vorne.
Ich habe den Verdacht, dass ich irgendwo einen kleinen Denkfehler
eingebaut habe, auf den ich aber nicht komme und würde mich über eure
Hilfe freuen.
Matthias
rtfm! ;)
Besonders:
- ACK/NAK beim I²C (du sendest munter weiter, auch wenn das EEPROM gar
nicht reagiert)
- die Page-write-Time des EEPROM (ms!)
( ist hier aber noch nicht so wichtig:
- Pages beim EEPROM
- schreibzyklen des EEPROM )
hth. Jörg
Hallo,
die Status-Codes werte ich schon aus, hab ich hier aber rausgelassen.
Der EEProm gibt aber jedenfalls immer sein ACK zurück.
Den Abschnitte Write Cycle Timing muss ich wohl tatsächlich überlesen
haben ;-) Ich hab jetzt ein Delay mit _delay_ms(10); eingebaut (ist das
richtig so? ;-) ) und die Zahlen sind jetzt sogar alle theoretisch an
der richtigen Stelle, jedoch kommt viel öfter ein 255 zurück. Kleiner
Auszug:
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, 255, 255,
255, 255, 5, 6, 7, 8, 9, 10, 11, 12
Also mit dem Delay wäre ich vorsichtig. Das mag jetzt funktionieren.
Falls Du aber später in der Serie vielleicht einen anderen Typen
verwendest, der mehr Zeit benötigt, beginnt die Fehlersuche von neuem.
Ich nehme an, dass in der Doku zum EEPROM geschrieben steht, wie
kontinuierliche Schreibzugriffe ablaufen sollten.