查看: 1080|回复: 0
打印 上一主题 下一主题

解决了PIC16串口中断重入问题

[复制链接]
跳转到指定楼层
沙发
发表于 2015-10-15 08:29:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

很少用PIC的单片机,这个问题给我的教训很深刻,但我认为PIC本身也有做得不好的地方。
问题现象:MCU复位,应该属于看门狗复位,但程序启动时读STATUS显示为上电复位。若没打开看门狗,现象应该为MCU死机。
查找原因:过程相当艰苦,共花2天X20小时的时间,最后发现,串口中断发生后,一定要读RCREG,否则串口中断标志会一直产生,清了还会产生,造成反反复复进入中断。
造成原因:与写软件习惯有关。我的流程是,收到前一条串口命令,若还没处理完成,再来串口命令时,不处理(不读RCREG),只清串口中断标志。这也造成这现象偶然才会出现。
解决方法:有串口中断,不管三七二十一,退出串口中断前读一下RCREG,再清串口中断标志。

搜索一下百度,发现碰到我这个问题的人应该不少,但都没发现他们能找到原因和解决方法。看PIC的DATASHEET也没有强调RCREG必须读才能清串口中断标志。希望阿莫坛友不要再走弯路了。
转载

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表