單線掛多個DS18B20的一個誤區(qū)
單線掛多個DS18B20為什么就不對?
原理不懂?快把數(shù)據(jù)手冊背下來了...
時序?很好,掛示波器看看,沒問題啊。
延時,很精確,不錯。復(fù)位?
有應(yīng)答啊,數(shù)據(jù)手冊上就是這么寫滴哇,怪了。
什么?等等,應(yīng)答了2次?我的乖乖,屏蔽之,ok,問題解決。
總結(jié)一下,看數(shù)據(jù)手冊固然重要,問題是要具體情況具體分析,手冊上復(fù)位章節(jié)講的是單設(shè)備復(fù)位的情況,多個設(shè)備復(fù)位順序有先后,導(dǎo)致前一次的應(yīng)答信號干擾了后面的設(shè)備(反應(yīng)慢,沒辦法),使其誤以為是上升沿到來,結(jié)果主機(jī)開始發(fā)下一條指令時候這家伙開始應(yīng)答,你說指令能不出錯嗎?正確的做法:不要迷信網(wǎng)上流傳的程序,自己看懂時序,根據(jù)實際情況修改下復(fù)位程序,包括延時和控制信號,本人的做法是在主機(jī)復(fù)位周期內(nèi)發(fā)出上升沿的15us內(nèi)把總線拉低480us,這樣可以有效防止各探頭的復(fù)位信號延遲的先后對后面指令的干擾。(有幾個探頭確實反應(yīng)慢,不能和其他探頭放一起,其他用網(wǎng)上程序是可以的)。





