找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8837|回复: 2
打印 上一主题 下一主题
收起左侧

PIC单片机的串口 OERR错误

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-23 22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
根据883的规格书的介绍,FIFO接收缓冲只有2个字节的存储空间,因此,如果接受时的接收中断执行时间过长,而上位机的数据发送一次超过2个字节,超过FIFO的存储空间,就会造成单片机的FIFO溢出。如果没有对RCREG进行定期在主程序中读取,则错误标志无法清零,单片机的串口通信就会锁死,出现无法正常通信的情况。

下图是883在上位机一次连续发送4个字节,在中断中读取RCREG,由于中断执行一次时间超过了发送3个字节的总时间,FIFO的接收缓冲器不能实时被RCREG转取走,造成FIFO溢出。单片机进入接收中断,取走第一次接收到的0x55,但是取走后中断要执行其他程序,不能马上退出中断再进入接收中断,因此后面的3个字节需要存储在FIFO中,造成FIFO的溢出。

C1:上位机发送0x55 4个字节的数据,接单片机RX引脚

C2:单片机执行中断程序,相应接收后的执行返回接收到得上位机数据,由于中断有一个长时间的延时,使单片机在退出第一个接收字节的中断时,已经错过了上位机发送的后3个字节。但是当时仍有2个字节存储在FIFO接收缓冲器中,由于还有3个字节要存储,而FIFO只有2个,造成第二个字节丢失,单片机OERR置位。接收中断响应了后2个存储成功的数据,执行完成后推出接收中断响应,FERR不会自动清零,单片机以后将无法执行接收中断,好比单片机已经进入通信锁死状态。

C3:单片机执行进入中断和退出中断的标志位,为了来查看中断的运行与单片机通信时序的关系。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:71900 发表于 2015-1-9 10:40 | 只看该作者
顶一个
回复

使用道具 举报

板凳
ID:168869 发表于 2017-3-7 16:40 | 只看该作者
tune中断和退出中断的标志位
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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