[AVR单片机] AVR内部Eeprom断电保存有问题

[复制链接]
3710|6
 楼主| 大碗拉面 发表于 2009-11-18 12:34 | 显示全部楼层 |阅读模式
我现在使用的是MEGA32
在使用内部eeprom时遇到了如下问题
上电操作eeprom时没有问题,读写正常
可一断电,读出来的书就不正常了
不知为什么
请大家指教
 楼主| 大碗拉面 发表于 2009-11-18 12:54 | 显示全部楼层
更正一下
应该是断电之后数据就没有保存
再次上电后读出来的数都是0XFF
 楼主| 大碗拉面 发表于 2009-11-18 13:21 | 显示全部楼层
eeprom地址为0或1时有此现象
当我将地址改为9项0时就好了
不知为什么
weiweiliou 发表于 2009-11-18 13:23 | 显示全部楼层
1,你程序可能有问题,
2,你的MCU读写次数过多,EEPROM已经损坏了
 楼主| 大碗拉面 发表于 2009-11-18 13:59 | 显示全部楼层
谢谢楼上的朋友
1.那我把程序贴上来
void Write_MegaEeprom(unsigned int address,unsigned char data)
{

unsigned char i = 0;
while( (EECR & (1 << EEWE)) && (i < MAX_COUNT) )                
{
i++;
}
if( i < MAX_COUNT )
{
EEAR = address;
EEDR = data;
EECR |= (1<<EEMWE);
EECR |= (1<<EEWE);
}
}

unsigned char Read_MegaEeprom(unsigned int address)
{
unsigned char i = 0;
while( (EECR & (1 << EEWE)) && (i < MAX_COUNT) )
{
i++;
}                
if( i < MAX_COUNT )
{
EEAR = address;
EECR |= ( 1 << EERE );
return EEDR;
}
return 0;
}
2.我换了一块32也出现这个问题
chen3bing 发表于 2009-11-18 15:37 | 显示全部楼层
void Write_MegaEeprom(unsigned int address,unsigned char data)
{

while(EECR & (1 << EEWE)) ;              

EEAR = address;
EEDR = data;
EECR |= (1<<EEMWE);
EECR |= (1<<EEWE);
}
用这个程序试试。
laslison 发表于 2009-11-18 22:48 | 显示全部楼层
看看:P
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

427

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部