Sana bu iş için en kolay örnek DS18B20 ısı sensörünün onewire haberleşmesi çok yardımcı olur.Örenk kod şöyledir.
Kod:ISI_OKU: OWOUT Comm_Pin, 1, [$CC, $44] ' ISI değerini oku Bekle: OWIN Comm_Pin, 4, [Busy] ' Busy değerini oku IF Busy = 0 THEN Bekle ' hala meşgulmü? , evet ise goto Bekle..! OWOUT Comm_Pin, 1, [$CC, $BE] ' scratchpad memory oku OWIN Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir. GOSUB Hesapla RETURN Hesapla: Sign = "+" IF SIGN_BITI = NEGAT_ISI THEN 'Sing bite bak Sign = "-" temp=($ffff-ham+1)*625 ISI = DIV32 10 GOTO GEC endif TEMP = 625 * (HAM+1) ' ISI = DIV32 10 ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz. GEC: ISI=ISI/1000 Onlar=ISI/10 Birler=ISI//10
Yukarıdaki haberleşmede OWOUT "Comm_Pin,1, [$CC, $44]" dediğin zaman verici cihaz bu datadan önce bir pals gönderiyor bu palsin yükselen kenarmı yoksa alçalan kenarmı olduğu (bu altı çizgili 1 belirliyor)onewire haberleşme ile ilgili bölümde yazıyor.
yani alıcı bu palsi alınca hemen cevap veriyor.
Bu olayı göz önünde bulundurarak denemelerini yap.


LinkBack URL
About LinkBacks
Alıntı ile Cevapla

