新闻  |   论坛  |   博客  |   在线研讨会
RS485调试经验小谈
jobs | 2012-06-29 22:25:49    阅读:1744   发布文章

RS485调试经验小谈
那年,我只是听说过rs485通讯;那年,我只是从代码上了解了RS485通讯;那年,我将rs485通讯从stc代码移植到了avr的atmega16上;那年,调试的时候花掉了我大部分时间……
Rs485通讯的关键代码如下:

1)        SETBIT(PORTD, RS485EN);

2)        delayXus(5);

3)        UartSendDataBuf( sUartData.SendDataBuff,sUartData.SendRtuFramLenth );

4)        delayXms(2);  

5)        CLEARBIT(PORTD, RS485EN);

 
只有短短的5行。可是这5行代码,让我喜欢,让我忧。终究其原因,还是我对rs485通讯理解不够深入,调试经验缺乏。现在写出来,也不怕献丑,只为网友能够少走一些弯路,多享受一分成功后的喜悦。
第一行语句是将rs485的芯片max485的使能发送引脚提高,使能发送;
第二行语句是等待芯片完成使能信号处理;
第三行语句只是简单的串口发送数据;
第四行语句就是超级重点了。是等待发送数据完成后,释放使能发送引脚。这个时间要是短了,就会造成发送的数据最后1位(几位)变成0.例如发送0x55,那么接收很可能为0x54。如果等待时间长了,那么就会造成严重的宕机事故。因为,此时发送引脚还未释放,另一端数据又开始发送了。
第五行语句只是释放引脚,完成一次发送任务。
关键的第四行等待时间语句,关键的位置。大家要调试rs485时一定要注意啊!这个延时要根据自己选用的串口波特率来计算得出,切不可盲目copy别人的源代码。
不早了,祝各位晚安,周末愉快!!

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客