Witam
Pisze program na AT2313 obsługujący jeden czujnik temp DS18B20 /identyfiakcja oraz suma kontrolna nie są potrzebne/, a następnie wysyłający wynik pomiaru na RS.
Problem tkwi w magistrali One Wire, nie mogę skomunikować się z czujnikiem. Robiłem już próby z rezystorem podciągającym 0d 3.3k do 4.7k. nie pomogło. Każda komenda/1wreset, 1wwrite/ wysłana do DS18B20 kończy się Err.
Nie wiem co robię żle
------------------------------------------------------------------------------------
TO JEST FRAGMENT KODU, całośc można podejrzeć w załączniku
-----------------------------------------------------------------------------------
Pomiar_temp:
Do
Call Odczyt 'wywołanie odzczytu temp
If Temp(2) = 0 Then 'jesli temp jest dodatnia
S = 1 'to bit s=1
Print " + " ; Temp(1) ; " C" 'wyslanie na rs
Else
S = 0 'jesli temp ujemna
Print "- " ; Temp(1) ; " C" 'bit s=0
End If
Waitms 250 'odczekanie 250 ms
Loop
End
Return
Sub Odczyt
'procedura odczytu temperatury z czujnika
1wreset 'reset linii DQ
1wwrite &HCC 'rozpocznij konwersje tempeatury
Waitms 750 'odczekaj 750 ms /czas na konwersje/
1wwrite &HCC 'pomin ID
1wwrite &HBE
1wreset 'odczyt wynku konwersji
Temp(1) = 1wread(2) 'zapis warosci do tablicy
1wreset 'reset magistrali
If Err = 1 Then ''jesli err=1 to brak ukladu
Print " brak czujnika"
Do
Loop
End If
If Temp(2) > 0 Then 'jesli temperatura jest -
Temp(1) = 256 - Temp(1) 'to odejmujemy wartośc od 256
End If
Temp(1) = Temp(1) / 2 'i dzielimy przez 2
End Sub
Pisze program na AT2313 obsługujący jeden czujnik temp DS18B20 /identyfiakcja oraz suma kontrolna nie są potrzebne/, a następnie wysyłający wynik pomiaru na RS.
Problem tkwi w magistrali One Wire, nie mogę skomunikować się z czujnikiem. Robiłem już próby z rezystorem podciągającym 0d 3.3k do 4.7k. nie pomogło. Każda komenda/1wreset, 1wwrite/ wysłana do DS18B20 kończy się Err.
Nie wiem co robię żle
------------------------------------------------------------------------------------
TO JEST FRAGMENT KODU, całośc można podejrzeć w załączniku
-----------------------------------------------------------------------------------
Pomiar_temp:
Do
Call Odczyt 'wywołanie odzczytu temp
If Temp(2) = 0 Then 'jesli temp jest dodatnia
S = 1 'to bit s=1
Print " + " ; Temp(1) ; " C" 'wyslanie na rs
Else
S = 0 'jesli temp ujemna
Print "- " ; Temp(1) ; " C" 'bit s=0
End If
Waitms 250 'odczekanie 250 ms
Loop
End
Return
Sub Odczyt
'procedura odczytu temperatury z czujnika
1wreset 'reset linii DQ
1wwrite &HCC 'rozpocznij konwersje tempeatury
Waitms 750 'odczekaj 750 ms /czas na konwersje/
1wwrite &HCC 'pomin ID
1wwrite &HBE
1wreset 'odczyt wynku konwersji
Temp(1) = 1wread(2) 'zapis warosci do tablicy
1wreset 'reset magistrali
If Err = 1 Then ''jesli err=1 to brak ukladu
Print " brak czujnika"
Do
Loop
End If
If Temp(2) > 0 Then 'jesli temperatura jest -
Temp(1) = 256 - Temp(1) 'to odejmujemy wartośc od 256
End If
Temp(1) = Temp(1) / 2 'i dzielimy przez 2
End Sub