485通讯问题
最近帮朋友调试一个485通讯电路,发现一个奇怪现象。1 485采用ADM2587E芯片,A B两端差模电压1.3V左右
2 两个单片机,芯片ATMEGA128A
3 两个板子485通讯结构完全一样,波特率9600,字符延时超过10ms,则判断帧结束
4 其中一个板子接收数据时,感觉接收总是有点问题,有时几十帧没问题,有时有几帧都出错,用串口侦测时,发送都没问题
5 接收有时感觉好像中断多触发了几次,在几十次上百次接收之内
请大家指教 修改了下程序,问题变成几百次通讯正常,中间有十几次不正常,不正常状态是连续的,过了一段时间,又不正常,太奇怪了,几块板子都是这种情况 两个板子单向发送时,发送数据正常,另一台基本能接收,还有一个接收就是有些不定时,可能自己出现中断跳数情况 为什么会连续无法接收或者接收出错呢,协议采用MODBUS协议,单片机通讯线很短,几十厘米,终端电阻两个都有都是100欧,串口监听,发现传输数据正确 先看硬件是否有错,楼主贴出电路。 485部分见附件 那两个防拉死电阻10欧 现在在程序开始做了下延迟,两个单片机都延迟几秒,倒是没出问题了。
不过还是担心,PCB板子因为485接收发射端口与下载线端口一样,要经过下载线插座,因此直接从485接收端口飞了根线到单片机端口,之前改接收端口,至少打了3个过孔,还经过下载口。
很困惑,感觉即使不飞线也不会影响到485通讯的。
注:之前测试做到了非常简单的测试程序,经常性接收通讯出错 之前波特率用4800测试过,一样出问题,发送接收延迟9600用1ms可以,4800则要大于2ms 两个改动,目前没出从机通讯接收不到情况:1 从机 飞线 2 单片机开机延迟 软件之前都有测试,基本一样
我想知道,到底问题出在哪了 拿了块没飞线的板子,测试了,到现在也没问题,郁闷了 HAO 今天测试了一天,应该是程序的事情,定时中断以及判别结束条件,程序中设计到定时器多次使用,以及其它中断的问题。 485通讯,每帧8个字节,主机发送帧没有出错过。
单片机接收到该帧,处理完之后发送返回帧,9个字节,大概1%的概率,无法发送返回帧。
通过超时判断,一旦超时,再一次发送帧给该单片机,目前100%能得到返回帧。
问题是,超时发送次数几次为好,我设置3次。
如果三次都未得到响应,主机该怎么处理。 你根据欧姆定律大致算一下接收端能检测到的差分电压是多少(容性、上升沿、下降沿什么的都先不用考虑)…… 测量过,静态时是1.3V左右吧 发送和接受都是用同一中断?? 是啊,发送接收都用UART0中断 :) l来过:loveliness:
页:
[1]
2