DS1302 ve DS18B20 de okuma sıklığını nasıl ayarlayabilirim?

Başlatan dyonizos, 14 Mayıs 2012, 13:59:33

dyonizos

selam arkadaşlar yazmayı denediğim kodda DS1302 ve DS18b20 kullandım klasik saat ve termometre kodu.
Ancak sistemin yavaşlamasına sebep oluyorlar ve mesela ben saniye kullanmıyacağım için saati dakikada bir okusam yeterli. DS1302 ve DS18b20 için okuma sıklıgını ayarlayabildiğimiz bir değişken varmı?

camby

Sistem yavaşlaması diye bir şey olmaz ancak hatalı algoritma yada kod olabilir.

DS1302 için , 1sn clock çıkışı olması lazımdı bunu kesme girişine girip her saniye dataları yenileyebilirsin.

DS18b20 için istediğin zaman sensöre "sıcaklık ölçümü yap" , " sıcaklık gönder " diyebilirsin , Bunu da istediğin periyotta bir kesme ile yaptırabilirsin.

dyonizos

OWrite DS18b20, 1, [$CC, $44] 
       'While ORead DS18b20, 4 = 0 : Wend 
       OWrite DS18b20, 1, [$CC, $BE]
       ORead DS18b20, 0, [Temperature.LowByte, Temperature.HighByte, DumTh,DumTl,reg,Dum,Dum,Dum,Dum ]
       TempRd = 0.0625 * Temperature


While ORead DS18b20, 4 = 0 : Wend
satırını disable ettiğimde gecikme ortadan kalktı. Gecikme DS18b20 den kaynaklıymış. Bu satırı gözardı edersek gecikme olmadan çalışıyor.

buntger

Bu yardımcı olabilir eğer var:

Declare I2C_Slow_Bus On          'Devre XT 4MHz üstün olduğu I2C otobüs yavaşlıyor
Declare Slow_Bus On            '8MHz için Küçük Osilatör için

Saygılar.