Pozdrav. Potrebna mi je pomoć. Program koji sam radio prije par godinami je radio sasvim uredno no sada isti kod na istom čipu ne šljaka. Radim s djecom jednostavan termometar sa LCD displejem i ds18b20. Senzor je sigurno ispravan jer mi mjeri na drugim projektima dok ovdje kada ga priključim pokazuje 255°C a kada ga izvadim sa ploče pokazuje 0°C.
Komšija, znam da je banalno, ali jesil' poll-upovao data pin senzora?.
Što se tiče koda za taj programski jezik sam potpuna neznalica i ne mogu ti pomoći.
Ali ako si to do sada radio logična sumnja ide na hardware.
Kod iskreno ne razumijem ni za koji je mikrić, ali ono što ne vidim kad pošalješ zahtjev prema DS treba stavit delay (250-500 mS) kada on vraca informaciju. Inace gluposti vraca
Na poslijetku sam primjetio kako program ne pokazuje ispravno negativne temperature, krade jedan stupanj, jer se prilikom konverzije izgubi carry bit, pa treba dodati prije prikaza na LCD-u:
Hvala Kuki. Ma problem je što je sve u redu a ne radi. Sada umjesto -0, pokazuje -1. Ovaj dio koda za čitanje i konverziju mi rade u drugim projektima (LED displej, termometar sa dvije LED i termostati...) A ovdje ni naopako. Znam da je nekada radio, sa istim projektom smo išli na takmičenje. Fuse bitovi su standardni kako si i napisao ali neće pa neće. https://drive.google.com/open?id=0B3Lok ... GFaMm5WSnM
Dim Temperatura As String * 6
Dim Bd(9) As Byte
Dim K As Integer , K1 As Integer , K2 As Integer ,Tmp as byte
Cursor Off
Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
'--------------------------------------------------
Do
1wwrite &HCC
1wwrite &H44
Waitms 250
1wreset
1wwrite &HCC
1wwrite &HBE
Bd(1) = 1wread(9)
1wreset
Tmp = Bd(1) And 1
If Tmp = 1 Then
Decr Bd(1)
End If
K = Makeint(bd(1) , Bd(2))
K = K * 50
K = K - 25
K1 = Bd(8) - Bd(7)
K1 = K1 * 100
K1 = K1 / Bd(8)
K = K + K1
K = K / 10
K1 = K
K = K / 10
K2 = K * 10
K1 = K1 - K2
K1 = Abs(k1)
Cls
Locate 1 , 1
Lcd "Temperatura= " ; K ; "." ; K1 ; Chr(0) ; "C"
Loop
Dim Temperatura As String * 6
Dim Bd(9) As Byte
Dim K As Integer , K1 As Integer ,Tmp as byte
Cursor Off
Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
'--------------------------------------------------
Do
1wwrite &HCC
1wwrite &H44
Waitms 250
1wreset
1wwrite &HCC
1wwrite &HBE
Bd(1) = 1wread(9)
1wreset
Tmp = Bd(1) And 1
If Tmp = 1 Then
Decr Bd(1)
End If
K = Makeint(bd(1) , Bd(2))
K = K * 50
K = K - 25
K1 = Bd(8) - Bd(7)
K1 = K1 * 100
K1 = K1 / Bd(8)
K = K + K1
K = K / 10
K1 = K
K = K / 10
Cls
Locate 1 , 1
Lcd "Temperatura= " ; K ; Chr(0) ; "C"
Loop
Našao sam par originalnih Dalasovih senzora koji su sa parazitnim napajanjem i oni rade na kodu koji sam naveo. Našao sam i jedan standardni ds18b20 (nije P) i on radi. Zašto ovi kinezi (a imam ih 10-ak) neće iako uredno rade na ostalim projektima u kojima je dio koda za čitanje temperature potpuno isti, sam Bog za.