老生常谈的pic18Feeprom问题

[复制链接]
 楼主| taijing33 发表于 2015-7-20 14:28 | 显示全部楼层 |阅读模式
我用66k22单片机,只用内部4个字节0-3存放数据。然后把6地址用作标志。
具体应用是,eeprom出厂是0xff。我判断4地址不等于0x55的话,然后进入把初始数据写入0-3.然后写入6地址0x55.这样断电后在运行,读出的6地址,就是0x55了,不会在对0-3地址进行初始化,

我上电延时了接近1秒为的是让电压稳定后再对eeprom操作。
下面是程序,问题是程序每次上电都能进入if,读出来的a的值是00.我仿真检测6地址已经写入成功了。
我现在很纳闷,到底是因为上电延时不够还是别的原因造成一开机读eeprom不对,。


a = RDE2ROM(6);  //为什么重新上电后  。读出来的是00.
if(a!=0x55)   
{   
         delay1ms();
         WTE2ROM(6, 0x55);
         a = RDE2ROM(6);   //这个地方能写对。
         WTE2ROM(0, 0);
         WTE2ROM(1, 100);
         WTE2ROM(2, 0);
         WTE2ROM(3, 40);
         
}
set_temp_max = RDE2ROM(0);
set_temp_max = (set_temp_max<<8)+RDE2ROM(1);
set_temp_min = RDE2ROM(2);
set_temp_min = (set_temp_min<<8)+RDE2ROM(3);
 楼主| taijing33 发表于 2015-7-20 14:31 | 显示全部楼层
忘记说了,对eeprom的读写在程序运行过程中是没有问题的。问题出在重新上电的时候。
wuhanrf 发表于 2015-7-20 15:57 | 显示全部楼层
重新上电时,已经写入的数改变了是吗?
 楼主| taijing33 发表于 2015-7-20 16:56 | 显示全部楼层
wuhanrf 发表于 2015-7-20 15:57
重新上电时,已经写入的数改变了是吗?

是的
wuhanrf 发表于 2015-7-21 10:42 | 显示全部楼层

是不是每次都这样?


 楼主| taijing33 发表于 2015-7-25 15:13 | 显示全部楼层
写进去是正确的,。读出来的不正确,。  而且读出来的数据中包含 每隔2个地址 包含 最后写进的数据,

我一郁闷了。
 楼主| taijing33 发表于 2015-7-25 15:14 | 显示全部楼层
比如 写进去 0x11,0x22,0x33.读出来就是 0x33,0x10,0x33,
yklstudent 发表于 2015-7-25 19:08 | 显示全部楼层
好好看看自己的代码是否有问题
黑洞不黑 发表于 2016-11-16 10:50 | 显示全部楼层
本帖最后由 黑洞不黑 于 2016-11-16 10:52 编辑

unsigned char EEPROM_read(unsigned char addr)
{
    unsigned char temp;
    EEADR=addr;//写入地址
    EEPGD=0;//bit6=0,访问数据存储器
    CFGS=0;//bit7=0,访问存储器
    EECON1bits.RD=1;//启动读操作
    GIE=0;//禁止总中断
    //while(RD);//等待读取完成
    temp=EEDATA;//读取数据
    GIE=1;//打开总中断
    return temp;
}
void EEPROM_write(unsigned char addr,unsigned char data)
{
    EEADR=addr;//写入地址
    EEDATA=data;//写入数据
    EEPGD=0;//bit6=0,访问数据存储器
    CFGS=0;//bit7=0,访问存储器
    GIE=0;//关闭总中断
    WREN=1;//使能写操作
    EECON2=0x55;//必要时序
    NOP();
    EECON2=0xAA;//必要时序
    NOP();
    EECON1bits.WR=1;//启动写操作
    while(EECON1bits.WR==1);//等待写操作完成
    GIE=1;//打开总中断
    WREN=0;//禁止写操作
    EEDATA=0;
}
看看这段代码有问题吗?读出来的数一直是出厂默认值,写不进去
PIGYONG801 发表于 2016-11-16 16:22 | 显示全部楼层
明显是软件没有做好,与上电延时无关,完成一次写的时候一定要好有延时,让内部的EEPORM部分完成写的过程
您需要登录后才可以回帖 登录 | 注册

本版积分规则

162

主题

364

帖子

3

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

162

主题

364

帖子

3

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