Init
This commit is contained in:
34
eeprom.c
Normal file
34
eeprom.c
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
#include <avr/io.h>
|
||||
|
||||
#include <eeprom.h>
|
||||
#include <tool.h>
|
||||
|
||||
void eeprom_write_byte(uint16_t address, uint8_t byte) {
|
||||
while (EECR & BIT(EEPE));
|
||||
EEAR = address;
|
||||
EEDR = byte;
|
||||
REG_SETUP_BIT(EECR, EEMPE);
|
||||
REG_SETUP_BIT(EECR, EEPE);
|
||||
}
|
||||
|
||||
uint8_t eeprom_read_byte(uint16_t address) {
|
||||
while (EECR & BIT(EEPE));
|
||||
EEAR = address;
|
||||
REG_SETUP_BIT(EECR, EERE);
|
||||
return EEDR;
|
||||
}
|
||||
|
||||
void eeprom_write_bytes(uint16_t address, uint8_t* data, uint16_t size) {
|
||||
for (uint16_t i = 0; i < size; i++) {
|
||||
eeprom_write_byte(address + i, data[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void eeprom_read_bytes(uint16_t address, uint8_t* data, uint16_t size) {
|
||||
for (uint16_t i = 0; i < size; i++) {
|
||||
data[i] = eeprom_read_byte(address + i);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user