Asi jsem nezmínil, že pracuji v assembleru. Datasheet jsem pročetl několikrát a stejně mi není jasné to nastavení EEARL/H.
.INCLUDE "m32Adef.inc"
.org 0
.def EEPROM = r16
ldi r18,2
ldi r20,4
main:
cpi r30,1
breq EEPROM_WRITE
cpi r30,2
breq EEPROM_WRITE2
cpi r30,3
breq EEPROM_READ
cpi r30,4
breq EEPROM_READ2
rjmp main
EEPROM_WRITE:
SBIC EECR, EEWE
RJMP EEPROM_WRITE
LDI EEPROM,0x00
OUT EEARH,EEPROM
LDI EEPROM,0x17
OUT EEARL,EEPROM
OUT EEDR, r18
SBI EECR, EEMWE
SBI EECR, EEWE
rjmp main
EEPROM_WRITE2:
SBIC EECR, EEWE
RJMP EEPROM_WRITE2
LDI EEPROM,0x18
OUT EEARL,EEPROM
OUT EEDR, r20
SBI EECR, EEMWE
SBI EECR, EEWE
rjmp main
EEPROM_READ:
SBIC EECR, EERE
RJMP EEPROM_READ
CLR EEPROM
OUT EEARH, EEPROM
LDI EEPROM, 0x17
OUT EEARL, EEPROM
SBI EECR,EERE
IN r19, EEDR
rjmp main
EEPROM_READ2:
SBIC EECR, EERE
RJMP EEPROM_READ2
LDI EEPROM, 0x18
OUT EEARL, EEPROM
SBI EECR,EERE
IN r21, EEDR
rjmp main