diff --git a/avr/utils.asm b/avr/utils.asm index 24c4ea1..61db65a 100644 --- a/avr/utils.asm +++ b/avr/utils.asm @@ -93,4 +93,54 @@ Utils_IncrementCounter32: +; *************************************************************************** +; Utils_ReadEeprom +; +; 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 +; MODIFIED REGISTERS: R16 + +Utils_ReadEeprom: + sbic EECR, EEPE ; wait for previous write to complete (if any) + rjmp Utils_ReadEeprom + 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 + ret + + + +; *************************************************************************** +; Utils_WriteEeprom +; +; Write a byte to EEPROM (see example in ATtiny24/44/84 manual p.18). +; +; IN: +; - R16: byte to write +; - X: EEPROM Address to read from +; OUT: +; - nothing +; MODIFIED REGISTERS: R17 + +Utils_WriteEeprom: + sbic EECR, EEPE ; wait for previous write to complete (if any) + rjmp Utils_WriteEeprom + ldi r17, (0<