avr: moved COM and COMPROTO defs and routines into dedicated files.

This commit is contained in:
Martin Preuss
2023-04-16 23:23:06 +02:00
parent d53b061aed
commit 5f4260d605
15 changed files with 1332 additions and 1001 deletions

View File

@@ -174,6 +174,63 @@ wait: ; wait for possibly previous SPM to complete
ret
; ---------------------------------------------------------------------------
; flashReadEepromIncr
;
; Read a byte from EEPROM (see example in ATtiny24/44/84 manual p.19).
;
; IN:
; - X: EEPROM Address to read from
; OUT:
; - R16: byte read
; - X: EEPROM Address incremented
; MODIFIED REGISTERS: R16
flashReadEepromIncr:
sbic EECR, EEPE ; wait for previous write to complete (if any)
rjmp flashReadEepromIncr
out EEARH, xh ; set EEPROM address
out EEARL, xl
sbi EECR, EERE ; start EEPROM read by writing EERE
in r16, EEDR ; read data from data register
adiw xh:xl, 1
ret
; ---------------------------------------------------------------------------
; flashReadUid
;
; Read UID from EEPROM.
;
; IN:
; OUT:
; - R18:R19:R20:R21: UID
; REGS: R16, X
flashReadUid:
in r15, SREG
push r15
cli
ldi xl, LOW(EEPROM_OFFS_UUID)
ldi xh, HIGH(EEPROM_OFFS_UUID)
rcall flashReadEepromIncr ; (R16)
mov r18, r16
rcall flashReadEepromIncr ; (R16)
mov r19, r16
rcall flashReadEepromIncr ; (R16)
mov r20, r16
rcall flashReadEepromIncr ; (R16)
mov r21, r16
pop r15
out SREG, r15
ret
FLASH_END:
.equ MODULE_SIZE_FLASH = FLASH_END-FLASH_BEGIN