因復位時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中斷—(無)發數據—(有)繼續偵聽