请教:通信协议检测函数能放在接收中断里么?
用modbus通信,检测函数是用来检测 接收到的 地址、功能码以及数据,成功则发送数据过去原来是放在大循环里的,可以现在其他子程序运行时间比较长,导致通信响应时间变长,所以想问问能不能直接放在中断中,或者还有什么其他方法 综合评估,必要时双核,呵呵 我想楼主首先要检测下除了通信协议检测函数之外,所需要执行的大概时间,而你通信所需要的时间要做出对比,如果通信协议的时间要求小于的其它代码的,则必须使用定时器发生中断来实现,当然你也要考虑到你其他函数所要做的事情紧急性。 只能综合来考虑。关于这个问题论坛以前有很长的帖子讨论过。
1. 看通信的紧急性,如果通信比较紧急,需要在接收到数据的XXms内处理并回传数据,可以中断中处理。
2. 如果通信不那么重要,可以全部接收下来,在主循环里解析。
就你目前的情况,那就在中断里做处理好了,注意,要优化,不要占用太长的中断时间,以免对其它任务产生影响。 不太喜欢那类协议,我一般自定义的协议都是按照几mS超时,超时认为一个报文结束,然后进行处理。很多ascii协议很麻烦,字符转换,校验和什么的,我现在都是二进制CRC校验。 NJ8888 发表于 2013-1-31 11:07 static/image/common/back.gif
综合评估,必要时双核,呵呵
你这么一说,双核确实是个好想法啊 qufuta 发表于 2013-1-31 11:19 static/image/common/back.gif
我想楼主首先要检测下除了通信协议检测函数之外,所需要执行的大概时间,而你通信所需要的时间要做出对比, ...
主要其中有用SPI通信获取数据,然后再485发送,这个时间我不会算。。。。 mcu_lover 发表于 2013-1-31 11:34 static/image/common/back.gif
只能综合来考虑。关于这个问题论坛以前有很长的帖子讨论过。
1. 看通信的紧急性,如果通信比较紧急,需要在 ...
放在中断中试过,没发现说没问题,但测试时间比较短,不知道会出什么问题,所以想看看有没有什么更好的方法 zhiwei 发表于 2013-1-31 11:44 static/image/common/back.gif
不太喜欢那类协议,我一般自定义的协议都是按照几mS超时,超时认为一个报文结束,然后进行处理。很多ascii ...
主要是与其他厂家的设备通信,需要一致的协议啊 xiaojiong886 发表于 2013-1-31 12:42 static/image/common/back.gif
主要其中有用SPI通信获取数据,然后再485发送,这个时间我不会算。。。。 ...
你可以这样,将他们都封装成函数模块,然后在每个函数模块第一句语句就是讲单片机的一个输出引脚取反,然后用示波器去看这个引脚的方波的频率就知道大概要执行多长时间了!!! qufuta 发表于 2013-1-31 13:48 static/image/common/back.gif
你可以这样,将他们都封装成函数模块,然后在每个函数模块第一句语句就是讲单片机的一个输出引脚取反,然 ...
这个方法不错,我试试看,谢谢{:lol:} 看来不用我出场了~谢谢大家。 Gorgon_Meducer 发表于 2013-1-31 18:26 static/image/common/back.gif
看来不用我出场了~谢谢大家。
{:smile:} 谢谢捧场 Gorgon_Meducer 发表于 2013-1-31 18:26 static/image/common/back.gif
看来不用我出场了~谢谢大家。
你由于能来“捧场”而被楼主感谢了。
{:lol:} eduhf_123 发表于 2013-2-1 14:49 static/image/common/back.gif
你由于能来“捧场”而被楼主感谢了。
我看出来了,你借由吐槽来帮楼主顶起的。 eduhf_123 发表于 2013-2-1 14:49 static/image/common/back.gif
你由于能来“捧场”而被楼主感谢了。
{:tongue:} 同谢 Gorgon_Meducer 发表于 2013-2-1 15:08 static/image/common/back.gif
我看出来了,你借由吐槽来帮楼主顶起的。
天大的望枉啊!
我跟LZ不认识的。 xiaojiong886 发表于 2013-2-1 15:58 static/image/common/back.gif
同谢
吐槽的时候顺便帮你顶了下帖,不用谢。
{:lol:}
页:
[1]