From fb0bec9071d83f6b0ad2a5094391e779c64c29ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= <fandabohacek@gmail.com> Date: Wed, 21 Dec 2022 08:25:18 +0100 Subject: [PATCH] feat: use eeprom from avr-hal --- src/eeprom.rs | 61 ----------------------------------------------- src/entrypoint.rs | 3 +-- 2 files changed, 1 insertion(+), 63 deletions(-) delete mode 100644 src/eeprom.rs diff --git a/src/eeprom.rs b/src/eeprom.rs deleted file mode 100644 index 9dfa1ef..0000000 --- a/src/eeprom.rs +++ /dev/null @@ -1,61 +0,0 @@ -pub struct Eeprom { - eeprom: avr_device::atmega8::EEPROM, -} - -impl Eeprom { - pub fn new(ep: avr_device::atmega8::EEPROM) -> Eeprom { - Eeprom { - eeprom: ep - } - } - - fn wait_until_write(&self) { - while self.eeprom.eecr.read().eewe().bit_is_set() {} - } - - pub fn read(&self, address: u16, data: &mut [u8]) { - let mut address = address; - for i in 0..data.len() { - let byte = self.read_byte(address); - data[i] = byte; - address += 1; - } - } - - pub fn write(&self, address: u16, data: &[u8]) { - let mut address = address; - for byte in data.iter() { - self.write_byte(address, *byte); - address += 1; - } - } - - pub fn read_byte(&self, address: u16) -> u8 { - self.wait_until_write(); - - self.eeprom.eear.write(|w| unsafe { - w.bits(address) - }); - - self.eeprom.eecr.write(|w| w.eere().set_bit()); - self.eeprom.eedr.read().bits() - } - - pub fn write_byte(&self, address: u16, data: u8) { - self.wait_until_write(); - - self.eeprom.eear.write(|w| unsafe { - w.bits(address) - }); - self.eeprom.eedr.write(|w| unsafe { - w.bits(data) - }); - - self.eeprom.eecr.write(|w| - w - .eemwe().set_bit() - .eewe().clear_bit()); - - self.eeprom.eecr.write(|w| w.eewe().set_bit()); - } -} diff --git a/src/entrypoint.rs b/src/entrypoint.rs index c4f0520..967caa0 100644 --- a/src/entrypoint.rs +++ b/src/entrypoint.rs @@ -6,7 +6,6 @@ extern crate avr_device; -mod eeprom; mod animation; mod button; mod filled_seven_segment; @@ -86,7 +85,7 @@ fn main() -> ! { // load seeds from eeprom - let ep = eeprom::Eeprom::new(dp.EEPROM); + let mut ep = atmega_hal::Eeprom::new(dp.EEPROM); let mut seeds = [0u8; 3]; ep.read(0, &mut seeds); if seeds[0] == 0 && seeds[1] == 0 && seeds[2] == 0 { -- 2.48.1