Hallo,
wenn ich Daten von meiner Gpsmaus, die im SRAM liegen, in den EEPROM
speichern will, muss ich ein delay direkt nach dem Schreiben einbauen,
weil es sonst vorkommt, dass er manche Bytes fehlerhaft ablegt.
Hier meine Schleife:
1 | EEPROM_write: out EEARL, xl ; und ins EEARL schreiben
|
2 | out EEARH, xh ; und ins EEARH schreiben
|
3 |
|
4 |
|
5 | sbic EECR,EEWE ; Vorherigen Schreibvorgang abwarten
|
6 | rjmp EEPROM_write
|
7 |
|
8 | out EEDR,temp1 ; Daten ins EEPROM-Datenregister
|
9 |
|
10 | sbi EECR,EEMWE ; Schreiben vorbereiten
|
11 | sbi EECR,EEWE ; Und los !
|
12 |
|
13 | inc xl ; low-Teil des Zeigers um 1 weiter
|
14 | tst xl ; Überlauf(255+1=0) ?
|
15 | brne no_overflow ; wenn nicht dann normal weiter
|
16 | inc xh ; andernfalls high-Teil um 1 erhöhen
|
17 | ; (overflow des high-Teils wird oben gecheckt...)
|
18 |
|
19 | no_overflow: ; Sprungemarke für keinen Überlauf
|
20 | rcall delay100ms
|
21 |
|
22 | ret
|
Mit Delay funktioniert es Problemlos!!NUR WARUM ?
Habe auch beim Lesen vom EEPROM ähnliche Probleme...
mfg