恭喜,你发布的帖子
发布于 2017-08-13 12:09:43
11楼
强烈建议大家不要再用定时触发的形式去带动这个轮训。你永远没有上进空间。
十几毫秒一个读,20毫秒以内一个写,32位。8个任务200毫秒的事情弄个1秒出来。
引用<读一条连续6个寄存器的信息至少要60ms,实际我给它70-100ms就没问题了>
要是突然间有些什么干扰,你给了70毫秒,却干不完这些活,那么你的通讯可能瘫痪了。然而你怕再发生这样的事情,你不得不设定成90毫秒。结果,相当相当多的情况一条信息白白浪费了30多毫秒,10条信息轮训一次浪费300毫秒。
程序,有是有,但是要删掉很多多余的事情,只留通讯部分,这功夫有点勉强。所以不想上程序。曾经我上过的程序,我已经发到论坛里面去了。需要的话找找我的帖子吧。
通过这几天的不断测试,尤其是用了示波器对通讯端口的波形观察了以后,现在已经对这个通讯过程有了比较清晰的认识,也发现了很多可以改进的地方,包括硬件和软件方面的。
首先是硬件上的,之前看到有人说要加终端电阻,还有人说波特率低或者传输距离远的不用加,加了也是有利有弊,自己并不了解终端电阻实际的作用,后来自己做了测试,看了波形,才明白,这个终端电阻太重要了!不加电阻,那个波形惨不忍睹,我都感觉有点不可思议,这样糟糕的波形,竟然也能通讯,后来加了电阻,那个波形就漂亮了,然后也就知道怎样从软件上提高通讯效率。
我之前读取一组6个寄存器的指令至少要60ms,现在只要11ms就能完成了。那么之前讨论的浪费时间,此时已经不重要了,就好比省钱和挣钱,之前挣1000块钱要工作60小时,再怎么省,日子都过得紧巴巴的,现在挣同样的钱只要11小时,那么不需要很节省,也能余下不少钱。
这张图就是调整之后的波形,堪称完美,左边那组信号是主站发送帧,右边是从站响应帧。
请填写推广理由:
分享
只看
楼主