18b20 program hakkında yardım

Başlatan emrah, 21 Aralık 2010, 23:17:56

emrah

slm arkadaşlar,

pic 18f452' de 18b20 ısı ölçme ve saat gösteme uygulaması yapıyorum, bu siteden aldıgım sıcaklık ölçme programında, program biraz takılı kalıyor, yani  benım ana sayfamda sadece saat okuma ısı okuma ve ekrana yazma programlarım bulunuyor.

bu programdan  for döngü komutunu cıkardıgım zamanda, ekranda yaklaşık her 3 saniyede bi saniye gösterimi gecikiyor, nedenide ısı programından kaynaklanıyor, bu programın daha sade hali varmı yada programdan çıkarabilecem kısımlar varmı ( for döngüsünden ve 5ms gecikmelerden başka) ??????????????


SENSOROKU:


'For OKU=0 To 10
'DelayMS 5
OWrite DQ, 1, [$CC, $44]   
Repeat
'DelayMS 5     
ORead DQ, 4, [CA]     
Until CA <> 0   
OWrite DQ, 1, [$CC, $BE] 
ORead DQ, 2,[Temp.LowByte,Temp.HighByte, CA, CA, CA, CA, CA, CPerD]

HESAPLA:

If Temp=0 Then ISARET = SIF
If Temp>0 Then ISARET = AR
If Temp>500 Then
Temp=65536-Temp
ISARET = EK
EndIf
'Next OKU

RETURN

Maxim

yanılmıyorsam sensorden sıcaklık okuma süresi 750ms
ne yaparsan yap daha hızlı okuyamazsın (sıcaklık okuma çözünürlüğünü düşürmek dışında)

o yüzden ya sıcaklık yada saat rutinlerini interrupt ile yapman gerekiyor diye düşünüyorum

emrah

okuma süreside çokmuş yaa. pic basıc de bir cok saat yaptım ana döngüde bi okadarda dallnama flan vardı hiç böle şeye rastlamadım.

program hazır oldugundan komutların tam ne anlama geldıgıni bilmiyorum, ısı ölçme çözünürlünün yüksek olması virgülden sonrasınıda görmek ise bana virgül sonrası lazım degil, çözünürlügü nasıl düşürebilirim?  interruptta yapacaktım fakat orayı seri iletişim için kullanacam.

Maxim

datasheette 9 bit çözünürlük için 93.75ms bekleme süresi yazılmış.
9 bitte 0.5 derece hassasiyetinde sanırım

kahraman10

Her saniye sıcaklık okuman şartmı ? ara sıra oku yada saniye göstergesini kesme içinde filan yap.