Satic vector, new epprom routines, new wireless relay storage method

This commit is contained in:
IMback
2018-10-08 19:01:59 +02:00
parent 389d0c6829
commit 445b60985f
5 changed files with 128 additions and 22 deletions

View File

@ -1,40 +1,51 @@
void EEPROM_write_char(uint16_t address, unsigned char data)
{
/* Wait for completion of previous write */
//Wait for completion of previous write
while(EECR & (1<<EEPE));
/* Set up address and Data Registers */
//Set up address and Data Registers
EEAR = address;
EEDR = data;
/* Write logical one to EEMPE */
//Write logical one to EEMPE
EECR |= (1<<EEMPE);
/* Start eeprom write by setting EEPE */
//Start eeprom write by setting EEPE
EECR |= (1<<EEPE);
}
unsigned char EEPROM_read_char(uint16_t uiAddress)
{
/* Wait for completion of previous write */
// Wait for completion of previous write
while(EECR & (1<<EEPE));
/* Set up address register */
//Set up address register
EEAR = uiAddress;
/* Start eeprom read by writing EERE */
//Start eeprom read by writing EERE
EECR |= (1<<EERE);
/* Return data from Data Register */
//Return data from Data Register
return EEDR;
}
void EEPROM_write_string(uint16_t address, char* buffer, uint16_t length)
{
for(uint16_t i = 0; i < length; i++)
{
EEPROM_write_char( address+i, buffer[i] );
}
for(uint16_t i = 0; i < length; i++) EEPROM_write_char( address+i, buffer[i] );
}
void EEPROM_read_string(uint16_t address, char* buffer, uint16_t length)
{
for(uint16_t i = 0; i < length; i++)
{
buffer[i] = EEPROM_read_char( address+i);
}
for(uint16_t i = 0; i < length; i++) buffer[i] = EEPROM_read_char( address+i);
}
template <class T> void EEPROM_write_class(uint16_t address, const T& in)
{
EEPROM_write_string( address, reinterpret_cast<char*> &in, sizeof(in));
}
template <class T> T EEPROM_read_class(uint16_t address)
{
char data[sizeof(T)];
EEPROM_read_string( address, data, sizeof(T) );
return *reinterpret_cast<T*>(data);
}
template <class T> T EEPROM_read_class(uint16_t address, T* in)
{
EEPROM_read_string( address, reinterpret_cast<char*> &in, sizeof(T) );
}