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







Zitieren

Lesezeichen