Witam!
Wiem że problem był wałkowany setki razy,ale jakoś nie mogę sobie z nim poradzić. Posiadam zestaw uruchomieniowy zvl11 na którym to prowadzę kurs oślej łączki. Wrzuciłem wsad podany niżej do uP i odczyt z ds18b20 jaki otrzymuje to "Temp= -0.0625oC" i pod wpływem ogrzewania nic się nie zminia. W zwiazku z tym mam kilka pytań. Mianowicie czy w ustawieniach bascomu options>progarammer>compiler>1wire musi być ustawiony port komunikacji ten sam który definiujemy w programie? Czy mogą być one różne? W książce niema żadnej wzmianki o tym. Czujnik mam podłączony, przez 3 końcówki to jest ,gnd, Vcc oraz data, i z daty do Vcc przez rezystor 3.3K. JAkaś komunikacja z układem jest ponieważ gdy wypnę date z pinb.0 to LCD pokazuje "Temp=0.0oC" Czy czujnik jest walnięty czy poprostu przed 1 użyciem trzeba go jakoś skonfigurować? A może błąd w kodzie programu?
Pozdrawiam i z góry dziękuje za odpowiedź!
![[bascom][attiny2313][ds18b20] [bascom][attiny2313][ds18b20]](https://obrazki.elektroda.pl/48_1225057017_thumb.jpg)
Wiem że problem był wałkowany setki razy,ale jakoś nie mogę sobie z nim poradzić. Posiadam zestaw uruchomieniowy zvl11 na którym to prowadzę kurs oślej łączki. Wrzuciłem wsad podany niżej do uP i odczyt z ds18b20 jaki otrzymuje to "Temp= -0.0625oC" i pod wpływem ogrzewania nic się nie zminia. W zwiazku z tym mam kilka pytań. Mianowicie czy w ustawieniach bascomu options>progarammer>compiler>1wire musi być ustawiony port komunikacji ten sam który definiujemy w programie? Czy mogą być one różne? W książce niema żadnej wzmianki o tym. Czujnik mam podłączony, przez 3 końcówki to jest ,gnd, Vcc oraz data, i z daty do Vcc przez rezystor 3.3K. JAkaś komunikacja z układem jest ponieważ gdy wypnę date z pinb.0 to LCD pokazuje "Temp=0.0oC" Czy czujnik jest walnięty czy poprostu przed 1 użyciem trzeba go jakoś skonfigurować? A może błąd w kodzie programu?
Pozdrawiam i z góry dziękuje za odpowiedź!
' C032c Najprostsze wykorzystanie DS18x20
Config 1wire = Portb.0 ' + jumper J2 B-C
Dim Odczyt(2) As Byte , A As Byte , Licznik As Byte , T As Integer , T1 As Single
Do
1wreset 'reset
1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM
1wwrite &H44 'dokonaj konwersji
Waitms 750 'przeczekaj czas konwersji
1wreset 'reset
1wwrite &HCC 'rozkaz adresowy SKIP ROM
1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu DS18x20
Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty
T = Odczyt(2) 'przepisz starszy bajt do zmiennej typu Integer
Shift T , Left , 8 'przesuń ten bajt w lewo na wyższe pozycje
T = T + Odczyt(1) 'przepisz - dodaj młodszy bajt
'teraz w zmiennej T typu Integer jest dziwna "ułamkowa" wartość temperatury
T1 = T / 16 'wyraź w stopniach Celsjusza, wynik wpisz do zmiennej Single
'T1 = T / 2 'dla układów DS18S20 i DS1820
Cls : Lcd "Temp=" ; T1 ; "oC" 'wyświetl wynik ze zmiennej Single
Loop : End
Oto poprawny kodu dołu. Mam pytanie jeszcze odnośnie czekania przy odczytywaniu temperatury nie da sie tego jakoś obejść?