From 6fd216e83d2c213ca53669c86d08316fb87b9385 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sun, 22 Jan 2023 17:46:16 +0100 Subject: [PATCH] avr: added routines to read/write EEPROM. --- avr/utils.asm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) 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<