so, habe mich nach einer längeren Pause erstmal wieder dran gesetzt und intensiv analysiert. Dabei ist mir aufgefallen, dass es einen Unterschied machte, wo ich dieses Inkrementieren durchgeführt habe und da fing ich dann genauer an zu suchen.
Es lag daran, dass ich direkt nach dem Schreiben den neuen Speicherort festlegen wollte und das ging nicht, weil dieses EEWE Bit noch auf 1 war. Habe also eine Abfrageschleife eingeführt und jetzt funktioniert es wie ich es mir vorgestellt habe. Bei jedem Durchlauf schreibt er den Wert des A/D Wandlers auf die nächste Speicherstelle. Genauso wollte ich es haben.
Aber danke für eure Bemühungen.
der korrekte Code sieht jetzt so aus (die Angabe des Speicherbeginns habe ich weggelassen)
Code:
EEPROM_write:
cli ;Interrupts vorsichtshalber ausschalten
sbic EECR,EEWE ; Vorherigen Schreibvorgang abwarten
rjmp EEPROM_write
out EEDR,adhigh ; Daten ins EEPROM-Datenregister
sbi EECR,EEMWE ; Schreiben vorbereiten
sbi EECR,EEWE ; muss innerhalb von 4 Zyklen geschrieben werden, deswegen Interrupts aus.
EEWEfrei:
sbic EECR,EEWE ; Vorherigen Schreibvorgang abwarten
rjmp EEWEfrei
inc r22
out EEARL,r22
sei ;Interrupts wieder einschalten
;--------------/...und in EEPROM schreiben----
rjmp loop
Lesezeichen