yangjichun 发表于 2011-6-8 15:06

485通讯问题

最近帮朋友调试一个485通讯电路,发现一个奇怪现象。
1 485采用ADM2587E芯片,A B两端差模电压1.3V左右
2 两个单片机,芯片ATMEGA128A
3 两个板子485通讯结构完全一样,波特率9600,字符延时超过10ms,则判断帧结束
4 其中一个板子接收数据时,感觉接收总是有点问题,有时几十帧没问题,有时有几帧都出错,用串口侦测时,发送都没问题
5 接收有时感觉好像中断多触发了几次,在几十次上百次接收之内

请大家指教

yangjichun 发表于 2011-6-8 21:26

修改了下程序,问题变成几百次通讯正常,中间有十几次不正常,不正常状态是连续的,过了一段时间,又不正常,太奇怪了,几块板子都是这种情况

yangjichun 发表于 2011-6-8 21:29

两个板子单向发送时,发送数据正常,另一台基本能接收,还有一个接收就是有些不定时,可能自己出现中断跳数情况

yangjichun 发表于 2011-6-8 22:20

为什么会连续无法接收或者接收出错呢,协议采用MODBUS协议,单片机通讯线很短,几十厘米,终端电阻两个都有都是100欧,串口监听,发现传输数据正确

chunyang 发表于 2011-6-8 23:18

先看硬件是否有错,楼主贴出电路。

yangjichun 发表于 2011-6-8 23:39

485部分见附件

yangjichun 发表于 2011-6-8 23:39

那两个防拉死电阻10欧

yangjichun 发表于 2011-6-8 23:44

现在在程序开始做了下延迟,两个单片机都延迟几秒,倒是没出问题了。
不过还是担心,PCB板子因为485接收发射端口与下载线端口一样,要经过下载线插座,因此直接从485接收端口飞了根线到单片机端口,之前改接收端口,至少打了3个过孔,还经过下载口。
很困惑,感觉即使不飞线也不会影响到485通讯的。
注:之前测试做到了非常简单的测试程序,经常性接收通讯出错

yangjichun 发表于 2011-6-8 23:48

之前波特率用4800测试过,一样出问题,发送接收延迟9600用1ms可以,4800则要大于2ms

yangjichun 发表于 2011-6-8 23:53

两个改动,目前没出从机通讯接收不到情况:1 从机 飞线 2 单片机开机延迟 软件之前都有测试,基本一样
我想知道,到底问题出在哪了

yangjichun 发表于 2011-6-9 00:47

拿了块没飞线的板子,测试了,到现在也没问题,郁闷了

syxbdyhb 发表于 2011-6-9 15:11

HAO

yangjichun 发表于 2011-6-9 16:31

今天测试了一天,应该是程序的事情,定时中断以及判别结束条件,程序中设计到定时器多次使用,以及其它中断的问题。

yangjichun 发表于 2011-6-13 12:12

485通讯,每帧8个字节,主机发送帧没有出错过。
单片机接收到该帧,处理完之后发送返回帧,9个字节,大概1%的概率,无法发送返回帧。
通过超时判断,一旦超时,再一次发送帧给该单片机,目前100%能得到返回帧。
问题是,超时发送次数几次为好,我设置3次。
如果三次都未得到响应,主机该怎么处理。

mohanwei 发表于 2011-6-13 12:56

你根据欧姆定律大致算一下接收端能检测到的差分电压是多少(容性、上升沿、下降沿什么的都先不用考虑)……

yangjichun 发表于 2011-6-13 15:00

测量过,静态时是1.3V左右吧

xiaohuhu43 发表于 2011-6-13 18:06

发送和接受都是用同一中断??

yangjichun 发表于 2011-6-14 09:30

是啊,发送接收都用UART0中断

lzwcanter 发表于 2011-6-14 12:47

:)

pingzi217 发表于 2011-9-27 10:28

l来过:loveliness:
页: [1] 2
查看完整版本: 485通讯问题