打印

PIC单片机232通信故障

[复制链接]
2258|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laibour|  楼主 | 2012-12-27 09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在做一主多从232轮询呼叫通信时,遇到这样一个问题:主机正常运行时,给主机配置参数用Reset指令复位后,偶尔会出现主机完全收不到从机发过来的数(十次操作大概会有两次会出现这样的情况)。从示波器看通信呼叫和回应都是正常的,对主机进行仿真时,主机没有进入232接收中断(主机能发送,但不能接收)。
然后,做了这样一个实验,就是在主机上电时先延时400ms,然后再进行其它初始化操作,重复做了二十几次Reset操作,没有再出现主机不能接收的情况。
用的主机芯片是PIC18F66J60,从机芯片是PIC18F26K20.
想问一个这种情况可能是由什么原因引起的,另外只有执行Reset时才出现这种错误,而重新上电没有出现过,不知道软件Reset 和硬件重新上电主要的区别是什么?
谢谢!
沙发
3939| | 2012-12-27 13:25 | 只看该作者
1.Reset与重新上电程序都是头新开始执行,但是从新上电上电到程序开始执行肯定有个时间,也许就是你这个400ms。
2. 示波器看发送接收都正常,但是主机没有进中断接收说明主机并没有收到数据。你因该找下这个原因
3. 延时400ms然后初始化就正常,可以考虑是不是复位需要给予一定的时间。

使用特权

评论回复
板凳
yewuyi| | 2012-12-27 13:54 | 只看该作者
我没有仔细看RESET指令,但根据通常理解,软件Reset 和硬件重新上电主要的区别一般就在于寄存器中的数值,如果硬件上电复位则会全部恢复到初始值,而软复位则保持不变。

使用特权

评论回复
地板
3939| | 2012-12-27 14:33 | 只看该作者
软件服务功能寄存器值还是要变的,不过这个问题应该不是寄存器的因素!

使用特权

评论回复
5
laibour|  楼主 | 2012-12-27 15:51 | 只看该作者
从张明峰大侠的书中得到一点灵感,在程序运行中执行Reset可能会出现溢出错误,导致错误标志OERR位置1。
经测试确实是这个问题,Reset后不能正常工作时,OERR位均为1,然后在初始化时清除OERR位,反复测试程序均能正常运行。
叶大侠说的硬件断电重启和软件Reset有寄存器变化的不同有一定道理。
还有不明白的地方:上电延时能清除OERR错误标志位吗?
烦请继续跟帖、灌水

使用特权

评论回复
6
兰天白云| | 2012-12-28 09:36 | 只看该作者
LZ也没有注意RESET时如果从机还在向主机发数据,而且发送时间较长(如300ms),主机复位后会怎么样?

使用特权

评论回复
7
yewuyi| | 2012-12-28 11:08 | 只看该作者
如果没有发生硬件复位,软件上电延时不能清除OERR错误标志位

使用特权

评论回复
8
laibour|  楼主 | 2012-12-28 21:54 | 只看该作者
兰天白云 发表于 2012-12-28 09:36
LZ也没有注意RESET时如果从机还在向主机发数据,而且发送时间较长(如300ms),主机复位后会怎么样? ...

通过之前测试,我觉得应该是你说的Reset时,主机已经呼叫过从机,从机正在向主机发送数据,然后复位后出现溢出错误。
我现在的处理方式在232中断服务程序中加入了溢出错误判断,若出现溢出错误,则重置串口接收模块。
唯一有点想不明白的是,测试时,即使在Reset后没有错误处理,也没有清楚OERR错误标志,只要延时一小段时间,主机就能正常工作(反复测试了几十次均没问题)。这一小段延时能起到什么作用呢~

使用特权

评论回复
9
wxsjy| | 2012-12-30 22:30 | 只看该作者
如果是 24f  系列芯片,问题是很明显的,就是“软件 Reset  以后,UARTx 的错误中断标志位会自动变为 1 ,并且产生中断。当UARTx 的错误中断标志位为1 以后,UARTx  的通信停止,直到再用软件把它清0为止”。估计你的问题也在这里。所以,还是要处理此中断标志位的。还是要仔细看手册啊。

使用特权

评论回复
10
laibour|  楼主 | 2012-12-31 22:14 | 只看该作者
有时间自己再去研究测试一下,谢谢大家,结帖

使用特权

评论回复
11
ocon| | 2013-1-1 17:00 | 只看该作者
帧错误和接收缓冲区溢出错误的处理,是一个合格的通讯软件必须具备的基本功能,与复位无关。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

81

帖子

0

粉丝