新手提问:一对多通讯时,主机和从机1通信,从机2怎么不受干扰?

2019-07-15 16:50发布

在采用一帧1个起始位,8位数据位,一个停止位的方式下,一对多通信时,怎么样使得主机#00与从机#01通信,从机#02不从串口接受数据或者不接收数据? T]YUO~8X[}RCB_$%@14J([S.png

我觉得对地址判断后,后续的数据包还是会引发#02的串口中断,假如数据包特别长,#02又在做比较重要的事,这时候#01的通讯使得#02一直在串口中断中,岂不是耽误了#02的正常工作?
所以有解决的方法没?
跪求大神回答

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
Jack315
1楼-- · 2019-07-15 18:29
#02 在收到一个字节才中断一下。如果不是发给自己的,则把收到的数据丢掉,立刻从中断中返回。

假设是 9600 N 8 1,接收一个字节耗时 1.042 ms;如果处理中断需 10 个机器周期,每个机器周期是 1 us,则处理中断耗时 10 us。占用 CPU 时间 0.96% —— 可以忽略不计的。 最佳答案
zdy123456
2楼-- · 2019-07-15 19:17
Jack315 发表于 2015-6-12 14:22
#02 在收到一个字节才中断一下。如果不是发给自己的,则把收到的数据丢掉,立刻从中断中返回。

假设是 9600 N 8 1,接收一个字节耗时 1.042 ms;如果处理中断需 10 个机器周期,每个机器周期是 1 us,则处理中断耗时 10 us。占用 CPU 时间 0.96% —— 可以忽略不计的。 ...

我不太清楚数据是怎么来的,毕竟每个人的串口接收程序都不一样,即便是处理中断耗时10us,假设传输的数据有80个字节,每个字节都会引发#2的中断,那么#2就在与它无关的数据上耗时800us,而且这只是主机和#01通讯一次的情况下,假如主机与#01通信完后又与#03通讯,#02又会在与它无关的数据上耗时,对于一个对时间要求较高的场合,明显是有缺陷的

一周热门 更多>