ARV писал(а):В WinAVR делается так:
eeprom_read_xxxx(uint8_t *adr) - считывает из EEPROM переменную, расположенную по адресу adr. вместо xxxx пишите byte, word или dword соответственно для чтения переменной размером в байт, 2 байта или 4 байта.
аналогично для записи имеются функции eeprom_write_xxxx(uint8_t *adr, ....) - вместо многоточия тип соответствующей переменной.
таким образом, получается примерно следующее:Код: Выделить всё
#include (avr/eeprom.h) // скобки, естественно, угловые - форум не дает вставить нормальные
EEMEM uint8_t ee_var; // переменная размером в байт в EEPROM
int main(void){
uint8_t my_var;
my_var = eeprom_read_byte(&ee_var); // считали значение из EEPROM
...
eeprom_write_byte(&ee_var, my_var); // сохранили значение в EEPROM
}
Доброе время. Дело вот в чём, все примеры опробовал всё работат, смущает одно,переменная
EEMEM uint8_t ee_var, при работе программы, даже когда EEPROM не участвует, изменяет своё значени от 0 до 255. Проследить что её меняет не удалось. Это косяк, или нет.