#include <avr/pgmspace.h>#include "eeprom.h"#include "common.h"void EEPROM::Wait() {while(TESTBIT(EECR,(1<<EEPE)));}uint8_t EEPROM::GetByte(uint16_t aOfs) {// Wait for any pending writes to finishwhile(TESTBIT(EECR,(1<<EEPE)));EEARL = aOfs & 0x00ff;#ifdef EEARHEEARH = 0;#endifSETBIT(EECR,(1 << EERE));uint8_t RetVal = EEDR;return RetVal;}void EEPROM::SetByte(uint16_t aOfs,uint8_t aData) {// Wait for any pending writes to finishwhile(TESTBIT(EECR,(1<<EEPE)));EEARL = aOfs & 0x00ff;#ifdef EEARHEEARH = 0;#endifEEDR = aData;SETBIT(EECR,(1<<EEMPE));SETBIT(EECR,(1<<EEPE));}uint16_t EEPROM::GetWord(uint16_t aOfs) {uint16_t RetVal;((uint8_t *)(&RetVal))[0] = GetByte(aOfs+0);((uint8_t *)(&RetVal))[1] = GetByte(aOfs+1);return RetVal;}void EEPROM::SetWord(uint16_t aOfs,uint16_t aData) {SetByte(aOfs+0,((uint8_t *)(&aData))[0]);SetByte(aOfs+1,((uint8_t *)(&aData))[1]);}