--- /dev/null
+#include <avr/io.h>
+#include "eeprom.h"
+
+#define BIT(n) (1<<(n))
+
+static void eeprom_wait(void)
+{
+ while(EECR&BIT(EEPE)) ;
+}
+
+void eeprom_write(uint16_t addr, uint8_t data)
+{
+ eeprom_wait();
+ EEARH = addr>>8;
+ EEARL = addr;
+ EEDR = data;
+ EECR = BIT(EEMPE);
+ EECR |= BIT(EEPE);
+ eeprom_wait();
+}
+
+uint8_t eeprom_read(uint16_t addr)
+{
+ eeprom_wait();
+ EEARH = addr>>8;
+ EEARL = addr;
+ EECR = BIT(EERE);
+ return EEDR;
+}