По примеру из даташита я делал так (для Tiny24):
unsigned char EEPROM_read_8 (unsigned char Address) { while (EECR & (1<<EEPE)); EEARL= Address; EECR |= (1<<EERE); return EEDR; }
void EEPROM_write_8(unsigned char Address, unsigned char Data) { while (EECR & (1<<EEPE)); EECR = (0<<EEPM1) | (0>>EEPM0); EEARL= Address; EEDR = Data; EECR |= (1<<EEMPE); EECR |= (1<<EEPE); }
unsigned int EEPROM_read_16 (unsigned char AddressH, unsigned char AddressL ) { unsigned int Data_eep_16; Data_eep_16=EEPROM_read_8(AddressH); Data_eep_16=(Data_eep_16<<8); Data_eep_16=Data_eep_16+EEPROM_read_8(AddressL); return Data_eep_16; }
void EEPROM_write_16 (unsigned char AddressH, unsigned char AddressL, unsigned int Data) { unsigned int Data_eep_8; Data_eep_8=(Data>>8); EEPROM_write_8(AddressH, Data_eep_8); Data_eep_8=(char) Data; EEPROM_write_8(AddressL, Data_eep_8); }
Для других просто поменяйте имена регистра и битов: (EECR; EEPE; EEARL; EERE; EEDR; EEPE; EEPM1; EEPM0; EEMPE;)
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|