搜索
bottom↓
回复: 17

请教:通信协议检测函数能放在接收中断里么?

[复制链接]

出0入0汤圆

发表于 2013-1-31 10:56:18 | 显示全部楼层 |阅读模式
用modbus通信,检测函数是用来检测 接收到的 地址、功能码以及数据,成功则发送数据过去
原来是放在大循环里的,可以现在其他子程序运行时间比较长,导致通信响应时间变长,所以想问问能不能直接放在中断中,或者还有什么其他方法

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-1-31 11:07:36 | 显示全部楼层
综合评估,必要时双核,呵呵

出0入0汤圆

发表于 2013-1-31 11:19:05 | 显示全部楼层
我想楼主首先要检测下除了通信协议检测函数之外,所需要执行的大概时间,而你通信所需要的时间要做出对比,如果通信协议的时间要求小于的其它代码的,则必须使用定时器发生中断来实现,当然你也要考虑到你其他函数所要做的事情紧急性。

出0入264汤圆

发表于 2013-1-31 11:34:06 | 显示全部楼层
只能综合来考虑。关于这个问题论坛以前有很长的帖子讨论过。
1. 看通信的紧急性,如果通信比较紧急,需要在接收到数据的XXms内处理并回传数据,可以中断中处理。
2. 如果通信不那么重要,可以全部接收下来,在主循环里解析。
就你目前的情况,那就在中断里做处理好了,注意,要优化,不要占用太长的中断时间,以免对其它任务产生影响。

出0入0汤圆

发表于 2013-1-31 11:44:48 | 显示全部楼层
不太喜欢那类协议,我一般自定义的协议都是按照几mS超时,超时认为一个报文结束,然后进行处理。很多ascii协议很麻烦,字符转换,校验和什么的,我现在都是二进制CRC校验。

出0入0汤圆

 楼主| 发表于 2013-1-31 12:40:55 | 显示全部楼层
NJ8888 发表于 2013-1-31 11:07
综合评估,必要时双核,呵呵

你这么一说,双核确实是个好想法啊

出0入0汤圆

 楼主| 发表于 2013-1-31 12:42:30 | 显示全部楼层
qufuta 发表于 2013-1-31 11:19
我想楼主首先要检测下除了通信协议检测函数之外,所需要执行的大概时间,而你通信所需要的时间要做出对比, ...

主要其中有用SPI通信获取数据,然后再485发送,这个时间我不会算。。。。

出0入0汤圆

 楼主| 发表于 2013-1-31 12:44:30 | 显示全部楼层
mcu_lover 发表于 2013-1-31 11:34
只能综合来考虑。关于这个问题论坛以前有很长的帖子讨论过。
1. 看通信的紧急性,如果通信比较紧急,需要在 ...

放在中断中试过,没发现说没问题,但测试时间比较短,不知道会出什么问题,所以想看看有没有什么更好的方法

出0入0汤圆

 楼主| 发表于 2013-1-31 12:45:13 | 显示全部楼层
zhiwei 发表于 2013-1-31 11:44
不太喜欢那类协议,我一般自定义的协议都是按照几mS超时,超时认为一个报文结束,然后进行处理。很多ascii ...

主要是与其他厂家的设备通信,需要一致的协议啊

出0入0汤圆

发表于 2013-1-31 13:48:22 | 显示全部楼层
xiaojiong886 发表于 2013-1-31 12:42
主要其中有用SPI通信获取数据,然后再485发送,这个时间我不会算。。。。 ...

你可以这样,将他们都封装成函数模块,然后在每个函数模块第一句语句就是讲单片机的一个输出引脚取反,然后用示波器去看这个引脚的方波的频率就知道大概要执行多长时间了!!!

出0入0汤圆

 楼主| 发表于 2013-1-31 14:26:51 | 显示全部楼层
qufuta 发表于 2013-1-31 13:48
你可以这样,将他们都封装成函数模块,然后在每个函数模块第一句语句就是讲单片机的一个输出引脚取反,然 ...

这个方法不错,我试试看,谢谢

出0入296汤圆

发表于 2013-1-31 18:26:31 | 显示全部楼层
看来不用我出场了~谢谢大家。

出0入0汤圆

 楼主| 发表于 2013-2-1 14:38:29 | 显示全部楼层
Gorgon_Meducer 发表于 2013-1-31 18:26
看来不用我出场了~谢谢大家。

谢谢捧场

出0入0汤圆

发表于 2013-2-1 14:49:26 | 显示全部楼层
Gorgon_Meducer 发表于 2013-1-31 18:26
看来不用我出场了~谢谢大家。


你由于能来“捧场”而被楼主感谢了。

出0入296汤圆

发表于 2013-2-1 15:08:35 | 显示全部楼层
eduhf_123 发表于 2013-2-1 14:49
你由于能来“捧场”而被楼主感谢了。

我看出来了,你借由吐槽来帮楼主顶起的。

出0入0汤圆

 楼主| 发表于 2013-2-1 15:58:40 | 显示全部楼层
eduhf_123 发表于 2013-2-1 14:49
你由于能来“捧场”而被楼主感谢了。

同谢

出0入0汤圆

发表于 2013-2-2 13:33:13 | 显示全部楼层
Gorgon_Meducer 发表于 2013-2-1 15:08
我看出来了,你借由吐槽来帮楼主顶起的。

天大的望枉啊!
我跟LZ不认识的。

出0入0汤圆

发表于 2013-2-2 13:33:57 | 显示全部楼层
xiaojiong886 发表于 2013-2-1 15:58
同谢

吐槽的时候顺便帮你顶了下帖,不用谢。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 14:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表