新手提问:一对多通讯时,主机和从机1通信,从机2怎么不受干扰?
时间:10-02
整理:3721RD
点击:
在采用一帧1个起始位,8位数据位,一个停止位的方式下,一对多通信时,怎么样使得主机#00与从机#01通信,从机#02不从串口接受数据或者不接收数据?
![](../imgqa/ele/mcu/mcu-3721rd.com-35135ydg5r45axex.png)
我觉得对地址判断后,后续的数据包还是会引发#02的串口中断,假如数据包特别长,#02又在做比较重要的事,这时候#01的通讯使得#02一直在串口中断中,岂不是耽误了#02的正常工作?
所以有解决的方法没?
跪求大神回答
![](../imgqa/ele/mcu/mcu-3721rd.com-35135ydg5r45axex.png)
我觉得对地址判断后,后续的数据包还是会引发#02的串口中断,假如数据包特别长,#02又在做比较重要的事,这时候#01的通讯使得#02一直在串口中断中,岂不是耽误了#02的正常工作?
所以有解决的方法没?
跪求大神回答
#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又会在与它无关的数据上耗时,对于一个对时间要求较高的场合,明显是有缺陷的