ONE-WİRE ( tek hatlı iletişim) hakkında

Başlatan Mucit23, 12 Ağustos 2010, 14:16:38

ete

DS18B20 default olarak zaten yüksek çözünürlükte (12 Bit) okuma yapacak şekilde ayarlanmıştır.
Vereceğiniz komutlarla bu okuma çözünürlüğünü 12 bit den 9 bite kadar düşürebiliyorsunuz.
Bunun için Configurasyon Registeri kullanılmaktadır.
bit7..bit6..bit5..bit4..bit3..bit2..bit1..bit0
..0....R1.....R0.....1......1.....1......1......1
R1 ve R0 bitlerinin değerlerine göre çözünürlük aşağıdaki şekilde ayarlanmaktadır.

R1..R0...Çözünürlük....Max_Okuma_Süresi
.0....0.........9-bit..........93.75 ms (tCONV/8)
.0....1........10-bit.........187.5 ms (tCONV/4)
.1....0........11-bi.......... 375 ms (tCONV/2)
.1....1........12-bit..........750 ms (tCONV)

Config registerine nasıl bilgi yazıldığını önceki mesajımda verdiğim SENSORYAZ isimli alt program modülünde ilk satırda yer alan komut ile göstermiştim.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Mucit23

Hocam Anladım demek istediğinizi.
Bir önceki mesajınızda configürasyon için aşağıdaki kodu vermiştiniz.
OWOUT   Comm_Pin, 1, [$CC,$4E, $FF, $FF, $1F]
Datashedin baktımda sadece kaç bit ölçüm yapılacağında hassasiyetin ne kadar olacağı yazılmış. Sizin verdiğiniz bilgilere göre en yüksek hassasiyet için data  01111111 olması gerekiyor. Hex karşılığı $7F oluyor. 0.5 derece hassasiyet için 00011111 olması gerekir. Bununda hex karşılığı $1F oluyor.
OWOUT   Comm_Pin, 1, [$CC,$4E, $FF, $FF, $1F]
En Sondaki data galiba hassaiyet için. Buradaki $1F yerine $7F Yazarsam Ayarlamış olurmuyum. Yanlışım varmı hocam

Mucit23

Hocam dediğim gibi yaptım oldu. Hassasiyeti 12bit'e çevirdim. Şimdi çok iyi çalışıyor. İşin ilginç tarafı Tireme birazdaha azaldı. Hatta hiç belli olmuyor. Multiplex olarak çalışıldığı kolay kolay anlaşılmaz. Programda ana döngü biraz yavaşladı. Çünkü ana programda for döngüsüyle yaptığım gecikmelerin süresi gözle görülebilir derecede uzadı. Hepsini düzelttim. Şimdi devre çok iyi çalışıyor. Yakında forumda paylaşırım.