因复位时I/O口都输出高电平。若是把I/O口直接与RS-485接口芯片的驱动器使能端DE端相连,会在CPU复位其间DE为高,从而使本节点处于发送状态。若是此时总线上其它节点在发送数据,则这次数据传输将被打断而失败,甚至引发整个总线因某个节点的故障而通讯阻塞,继而影响整个系统的正常运行。为了作到通讯避障,考虑系统工做稳定性,在每一个节点的设计中应将控制RS-485总线接口芯片的发送引脚设计成DE端的反逻辑,即控制引脚为逻辑“1”时,DE端为“0”;控制引脚为逻辑“0”时,DE端为“1”。应用中,将MCU的I/O引脚ControlDE(控制RS485总线接口芯片的发送引脚)反相和CPU复位引脚RESET反相相与驱动DE端,这样就可使控制引脚为高或者异常复位时使RS-485接口始终处于接收状态,从而从硬件上有效避免节点因异常状况而对整个系统形成的影响设计
在RS-485总线构筑的半双工通讯系统中,通常采用主从通讯模式,即整个系统中只有一个为主节点,总线上全部其它节点都是从节点,通讯方式通常是主节点循环轮询各个从节点。这有不少弊端,首先,此时主节点的通讯工做其CPU通讯负担较重,必定意义上讲,会对其完成其它系统工做形成必定影响;整个系统“危险”集中主节点,主节点的工做可靠性和稳定性是整个系统稳定、可靠工做的前提和保证;一旦主节点发生故障,将致使整个系统的崩溃。其次,系统通讯效率低,由于不管某一个节点是否须要发送数据或须要使用总线,都要等到主节点轮询到自身,从而使得系统的通讯效率较低,总线利用效率低。系统实时性差。因其通讯的效率较低使得从节点有实时性要求帧信息得不到及时发送从而使得系统的实时性差。因此,多主发送有其现实意义。接口
多主发送在硬件上只要在MAX485R的R引脚上经过反相器接在MCU的IRQ上,当一节点须要用总线时,为了实现总线的通讯避障须要侦听,当总线上有数据正在传输数据时,RS-485接口芯片的数据接收端表现高低电平,利用其产生的CPU上升沿中断,能够得知此时总线是否忙,即总线是有节点正在通讯效率
设置侦听时间IRQ中断标志—在1ms内有无IRQ中断—(无)发数据—(有)继续侦听循环