每次写完EEPROM后串口中断就无法进入

[复制链接]
 楼主| liliang9554 发表于 2022-2-4 22:29 | 显示全部楼层 |阅读模式
PIC18F25K80写EEPROM  写之前关闭全局中断  写好后开启全局中断   每次写完EEPROM后串口中断就无法进入  有没有大神可以指点一下
wyjie 发表于 2022-2-4 22:31 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| liliang9554 发表于 2022-2-4 22:34 | 显示全部楼层
void W_EEPROM(void)
{
unsigned char i = 0;


//INTCONbits.GIEH = 0;           //关闭全局中断
      
   
EECON1bits.WREN = 1;
ui_EEPROM_Addr = 0;
for(i=0;i<110;i++)
{
ui_EEPROM_Addr = EEPROM_Start_Addr + i;   
EEADRH = ui_EEPROM_Addr>>8;
EEADR = ui_EEPROM_Addr;
EEDATA = EEPROM_Data[i];
EECON2 = 0x55;
EECON2 = 0x0AA;
EECON1bits.WR = 1;
while(EECON1bits.WRERR);
}
EECON1bits.WREN = 0;
        
//INTCONbits.GIEH = 1;           //使能全局中断  

}
xxrs 发表于 2022-2-4 22:36 | 显示全部楼层
使用编译器自带写函数试试,Write_b_eep之类
jiajs 发表于 2022-2-4 22:38 | 显示全部楼层
"每次写完EEPROM后串口中断就无法进入"
这个是指发送中断? 还是接收中断??
yszong 发表于 2022-2-4 22:40 | 显示全部楼层
这个芯片,尤其是QFN28的封装,用的人很少!     我司可以代工烧录该芯片,价格便宜15817618003
heweibig 发表于 2022-2-4 22:42 | 显示全部楼层
while(EECON1bits.WRERR);   这一行不正确吧?
chuxh 发表于 2022-2-4 22:46 | 显示全部楼层
要等待写完成,应该是等待EECON1bits.WR清0,EECON1bits.WR位是软置1  硬清0的。
supernan 发表于 2022-2-4 22:49 | 显示全部楼层
如果不放心,可以在EECON1bits.WR清0后,再来查看EECON1bits.WRERR是否为1。
huangchui 发表于 2022-2-4 22:52 | 显示全部楼层
还有更严重的,CFGS和EEPGD,这两个也要设置为EEPROM操作。且必须设置,因为这两位是复位后不确定状态。
 楼主| liliang9554 发表于 2022-2-4 22:56 | 显示全部楼层
接收中断
 楼主| liliang9554 发表于 2022-2-4 22:59 | 显示全部楼层
我试试看
jiahy 发表于 2022-2-4 23:01 | 显示全部楼层
如果不禁止中断直接写会有什么问题吗
 楼主| liliang9554 发表于 2022-2-4 23:05 | 显示全部楼层
EECON1bits.WRERR写入完成后会清零啊 这样就可以继续写入了啊
 楼主| liliang9554 发表于 2022-2-4 23:07 | 显示全部楼层
CFGS和EEPGD初始化已经配置为0了
 楼主| liliang9554 发表于 2022-2-4 23:10 | 显示全部楼层
可以在EECON1bits.WR清0后,再来查看EECON1bits.WRERR是否为1   这个和中断出现异常有影响吗  这个也可以判断写操作是否完成   两个都判断会更好一些
 楼主| liliang9554 发表于 2022-2-4 23:13 | 显示全部楼层
我再好好缕一缕吧,有了好消息及时通知大家
skyred 发表于 2022-2-10 17:46 | 显示全部楼层
跟标志位有关么
caigang13 发表于 2022-2-10 18:57 来自手机 | 显示全部楼层
开中断后清楚中断标志位
weifeng90 发表于 2022-2-11 08:37 来自手机 | 显示全部楼层
理论上了关了中断就不会再产生中断,相关标志位也不生效快。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

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