发新帖我要提问
12
返回列表
打印

急寻会485通讯及51单片机的朋友

[复制链接]
楼主: anazel
手机看帖
扫描二维码
随时随地手机跟帖
21
刘前辈| | 2012-6-21 11:26 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 刘前辈 于 2012-6-21 11:41 编辑
故障现象:
可以正常运行2,3天,然后通讯中断,仪表并没有死机,波特率2400,普通双绞线,距离不到300米


很简单的问题分析:一个可以“连续”正常运行2,3天的系统,应该是软硬件设计都可以用的;运行2,3天以后通信中断,那是由于电源**不了2,3天,不正常工作了;此时系统复位也无作用。——除非关机,冷却半小时,重新开机,一切又正常,然后再正常工作2、3天……。

应该不是程序飞了的原因,重启都不管用。


    另外,重启不管用?什么管用?如若关机即刻开机重来管用,那是你复位电路设计问题(或者电源问题)。
还有,通信系统的重启是指:
1、主节点关机;
2、接收从节点先开机(或者复位),然后主节点最后开机(或复位)。
——主/从节点不共用电源或者主从节点复位电路常数设计不一样才行的。
——比系统开机复杂多了的步骤。——所以,电源正常情况下,一定要设计自恢复功能。


、、

使用特权

评论回复
22
刘前辈| | 2012-6-21 11:50 | 只看该作者
本帖最后由 刘前辈 于 2012-6-21 11:59 编辑

死机脆弱程序:
/************************************************************************
接收数据子函数
*************************************************************************/
unsigned char rxdata()
{
uchar dat;
DE_RE = 0;    //接收数据有效
while ( !RI ) ;  //等待数据接收完。// 这里一定条件下造成死循环。
dat = SBUF;             //接收数据
RI = 0;                 //清中断标志
SM2 = 0;
return(dat);
}



、、

使用特权

评论回复
23
zq1987731| | 2012-6-22 16:28 | 只看该作者
N年前曾经做过一个小制作...51单片机上支持多个主机同时处于发送状态,即总线冲突检测与避免,只要短路总线或强干扰状态不是无限持续,那么撤掉干扰的瞬间总线立刻恢复正常,没有崩溃的可能。贴一个.c文件好了,重点基本都在里面了,其他代码不准备贴了,仅供参考。
UartDriver.rar (3.14 KB)

使用特权

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

本版积分规则