dht22 okuma sorunu

Başlatan POWER, 07 Mayıs 2018, 00:41:28

ete

16F88 dahili osilatörü tek seçenekli değildir. (628A da tek seçenek 4Mhz vardır) .
Bu nedenle OSCCON registerine de değer vererek çalışma freansını belirlemek gerekir.
Zaten aynı kod birini çalıştırıyor diğerini çalıştırmıyor ise kesinlikle zamanlama hatası var demektir. Onun da yaratan OSCCON registerine değer verilmemesi olmalıdır.

OSCCON=%01101100  bu değer 4Mhz içindir.
Verip deneyin lütfen.

Ete

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

POWER

Hocam,
verdiğiniz değerleri uyguladım sorun çözüldü.Teşekkür ederim.
TB6BKG

mustafa_cmbz

benim de bir sorum olacak bu konu ile ilgili..

Benimde mesela herhangi bir seri ile DHT11 kullanırken 4mhz de çalıştırdığımda sorun yok ama farklı bir ihtiyaç için atıyorum 20mhz çalışmak istediğimde DHT11 ile haberleşemiyorum.

Anladığım kadarıyla haberleşme kısmı delayms ile yapıldığı için kristal değiştiğinde sorun yaratıyor.Bu durumu nasıl çözeriz ?

yani bekleme sürelerini kullanacağımız kristal e göre tekrar mı hesaplamak gerek yoksa ekstra bir ayar mı gerekiyor ?

Hattusa

ETE hocam;

şimdi delayms 100 dediğimizde, 4mhz ile 40 mhz arasında 100mS lerin farkı oluyormu? oluyorsa ben yanlış biliyorum demektir.
vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

ete

Normal şartlarda programlara eklediğiniz çalışma frekansını belirleyen komut satırları;
DEFINE OSC 4 veya DEFINE OSC 20 yada Xtal = 4 veya Xtal = 20 gibi komutlar işte bu işe yaramaktadır. Derleyici bu komuta göre delayms 100 denildiği zaman;
4 mhz de 100.000 komut çevrimi (bir komut çevrimi 1us dir)
20 mhz de ise 500.000 komut çevrimi (1 komut çevrimi 0,2us dir) kadar süre geçireceğini bilir.
Sonuçta programcının bir tedbir alması gerekmiyor. 4mhz de 100 ms lik gecikme komutu ile 20 Mhzde 100ms lik gecikme komutu aynı sürelerde bekleme yaptırır.
 DHT sensör ile çalışırken kodlara çok dikkat etmek gerekir. Bazı kodlar vardır örneğin 4 mhz de çalışırken oraya 10 adet NOP komutu eklerseniz bu 10us lik bir gecikme yaratır. Ama aynı komutlar 20 Mhz de 2 us lik bir gecikme yaratır. Sonuçta kodları inceleyip süreye etki eden komutları tespit etmek ona göre yeniden hesaplayıp yazmak gerekir. DHT kodları aklımda değil şu an kim etkiler bilmeden bunları yazıyorum. Kısaca 20Mhzde çalışmıyor ise sorunu süreye etki eden komutlarda aramak ve bazen de bir pinin hem giriş hem çıkış olarak kullanılırken dönüşüm için yeterli süre verilip verilmediğine bakmak gerekir. Malup DHT tek pin den haberleşen bir sensör. Bunun anlamı haberleşme pini bazen giriş bazen çıkış çalışır. O pini girişten çıkışa çevirmek az da olsa bir süre gerektirebilir. 4 Mhzde dikkate alınmayan bu süre 20 Mhz de alınması gereken bir tedbir olarak karşınıza çıkabilir.
Sonuçta sistem yüksek frekansta çalışmıyor ise bu tür farklara dikkat etmek gerekir.

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