485主站设计问题

xuefeng_baggio 2013-07-02 03:11:39
各位专家,请教下一般485主站中,如何设计定时器中断和通讯模块程序?我现在创建500us定时器,主要完成逻辑控制等工作。但是我的IO状态是通过485通讯模块由从站获取。这样就有一个问题,在进入定时器中断时我要处理IO,想请教下可不可以直接在定时器中断调用通讯程序。通讯程序主要完成数据发送,等待串口中断接收,数据分析处理等工作。请各位指点下?
...全文
253 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
腹黑大胖兔 2013-07-04
  • 打赏
  • 举报
回复
楼主,还有一种方法, 请计算轮询周期,将定时器时间设定约大于轮询周期的时间,其他代码位置不变,实时性和之前一样
腹黑大胖兔 2013-07-03
  • 打赏
  • 举报
回复
可以在定时器中断中,调用通讯模块。 但是RS485模块很难在500us中完成一个循环,很可能定时器中断服务子程序未完成被自己打断。 建议: 通讯模块在定时器中断服务子程序外进行,定时器中断只做简单逻辑操作。
zhxianbin 2013-07-03
  • 打赏
  • 举报
回复
没看明白什么意思
zhxianbin 2013-07-03
  • 打赏
  • 举报
回复
引用 6 楼 xuefeng_baggio 的回复:
关键我现在但是在一个定时器中断中即处理串口发送,接收等动作,还要处理实时逻辑控制(机床控制)会不会有问题。因为串口发送都是轮询发送等待硬件标志位的方式,我怕串口出现异常问题,导致我定时器中断被自身打断。或者其他没有考虑到的问题。就麻烦了。还请各位高手帮我一起分析下。谢谢了!
发送是否可以不用中断方式
xuefeng_baggio 2013-07-03
  • 打赏
  • 举报
回复
关键我现在但是在一个定时器中断中即处理串口发送,接收等动作,还要处理实时逻辑控制(机床控制)会不会有问题。因为串口发送都是轮询发送等待硬件标志位的方式,我怕串口出现异常问题,导致我定时器中断被自身打断。或者其他没有考虑到的问题。就麻烦了。还请各位高手帮我一起分析下。谢谢了!
curious_cat 2013-07-03
  • 打赏
  • 举报
回复
在主站的内存里暂存远端模块的I/O状态;RS485模块通讯完成的话就更新本地保存的状态,没有完成就保持原来的状态; 你的逻辑处理模块只是处理本地保存的I/O值;
腹黑大胖兔 2013-07-03
  • 打赏
  • 举报
回复
定时器500us不停更新通讯模块传上来的数据,500us可以算是实时了。 所以IO状态的实时性主要取决于通讯模块轮询一周的时间,可以让从站在发现IO口状态改变后主动将数据发送给主站。
xuefeng_baggio 2013-07-03
  • 打赏
  • 举报
回复
楼上的建议非常好,因为我们通讯模块中发送 数据是采用循环方式,所以我担心如果通讯模块出现异常,可能导致定时器中断被自己打断。 另:想请教下,如何实现实时刷新IO状态呢?

27,509

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧