在Atmega64上写入EEPROM时是否可能出现无限循环

问题描述

我正在编程Atmega64M1。数据表中描述了对EEPROM的访问,我对其进行写入或读取均没有问题。 在数据表中,据说在读取或写入eeprom之前要等待先前的写入完成:

{
/* Wait for completion of prevIoUs write */
while(EECR & (1<<EEPE))
;
/* Set up address and Data Registers */
EEAR = uiAddress;
EEDR = ucData;
/* Write logical one to EEMPE */
EECR |= (1<<EEMPE);
/* Start eeprom write by setting EEPE */
EECR |= (1<<EEPE);
} 

我的问题是:while循环不会停止吗? EEPE位应该由硬件清除,但是添加软件验证以确保我们最终退出循环是否是一个好习惯? 像这样:

int i = 0;
/* Wait for completion of prevIoUs write */
while((EECR & (1<<EEPE)) && (i < 100))
{
 i++;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)