в даташит есть такие примеры:
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); }
перед записью всегда запрещаются прерывания: cli(); фуз EESAVE=1, тактовая - 8 МГц, внутренний RC. В AVR Studio 4.13 все симулируется правильно, запись происходит. Программатором EEPROM пишется исправно.
Нет записи в EEPROM в ходе выполнения программы, не пойму почему. Прошу помочь разобраться. Заранее благодарен.
Сообщение отредактировал smk - Jan 30 2008, 14:53
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|