我正在使用atmega8A的内部EEPROM,使用的是avr的EEPROM库。我的代码如下所示
#define EEPROM_ADDR 0x0A
int main(void)
{
_delay_ms(2000);
LED_Initialize();
vBlink_Led(100, 2);
//eeprom_write_byte((uint8_t*)EEPROM_ADDR, 8);
val = eeprom_read_byte((uint8_t*)EEPROM_ADDR);
while (1);
}当我取消注释eeprom_write_byte((uint8_t*)EEPROM_ADDR, 8);行,然后使用val = eeprom_read_byte((uint8_t*)EEPROM_ADDR);读取时,读取了正确的值8。但是,当我对该行进行注释,然后重新刷新代码时,值更改为255。
有什么建议吗?
注意-我已取消选中avrdudes中用于擦除闪存和eeprom的复选框
发布于 2019-11-20 19:19:49
通常,当执行“芯片擦除”操作时,EEPROM也会被清除。
为防止出现这种情况,您必须对EESAVE熔丝位进行编程(即设置为零),这是高熔丝字节中的第3个位(请参阅the datasheet第29.2章熔丝位)
https://stackoverflow.com/questions/58920212
复制相似问题