问题描述
我正在编程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 (将#修改为@)