Witam, moze ktos przesledzic ten kawaleczke kodu (BASCOM) i powiedziec co jest nie tak ? Problem tkwi w tym ze odczytywane temperatury sa ok (wystarcz mi dokladnosc do 1 st C) jednak jak odlacze ktoregokolwiek DS'a to Tin = Tout zamiast wpisac wartosc 99 (w taki sposob wykrywam ze uszkodznieu ulegla ktorys czujnik)
Program to kawalek kodu ktory ktos tutja na elektrodzie wrzucil z pozmienianymi pewnymi rzeczami (np odczytuje tylko 2 bajty a nie calego scratchpada)
Oto podprogram:
Gdzie jest blad ze program mimo braku DS wpisuje do zmiennych albo Tin albo Tout (w zaleznosci ktorej czujki brak) zawartosci z tego DS'a ktory jest podlaczony ?
Program to kawalek kodu ktory ktos tutja na elektrodzie wrzucil z pozmienianymi pewnymi rzeczami (np odczytuje tylko 2 bajty a nie calego scratchpada)
Oto podprogram:
'Odczyt Temperatur IN i OUT z DS18B20
Sub Odczytds1820
Ds1(1) = 1wsearchfirst()
Do
Ds2(1) = 1wsearchnext()
Loop Until Err = 1
Mbt = 0 : Sbt = 0
1wreset
1wwrite &HCC
1wwrite &H44
Waitus 200
'#####################czujnik 1##
1wverify Ds1(1) 'Czy jest na magistrali urządzenie o adresie z Ds2(1) ???
If Err = 1 Then 'Nie ma :(((
Tin = 99
Elseif Err = 0 Then ' Oooo jeeeest :)
1wreset 'Resecik
1wwrite &H55 'Będzie odpowiadało tylko urządzenie , którego numer zaraz podam !
1wwrite Ds1(1) , 8 'Podaję numer urządzenia , które zapytam ,a reszta milczy aż pojawi się reset.
1wwrite &HBE 'Poproszę zawartość scratchpad'a
Mbt = 1wread(1)
Sbt = 1wread(1)
1wreset
Tin = Makeint(mbt , Sbt)
Tin = Tin / 16
End If
'#####################czujnik 2##
Mbt = 0 : Sbt = 0
1wreset
1wwrite &HCC
1wwrite &H44
Waitus 200
1wverify Ds2(1) 'Czy jest na magistrali urządzenie o adresie z Ds1(1) ???
If Err = 1 Then 'Nie ma :(((
Tout = 99
Elseif Err = 0 Then 'jeeeest :)
1wreset 'Resecik
1wwrite &H55 'Będzie odpowiadało tylko urządzenie , którego numer zaraz podam !
1wwrite Ds2(1) , 8 'Podaję numer urządzenia , które zapytam ,a reszta milczy aż pojawi się reset.
1wwrite &HBE 'Poproszę zawartość scratchpad'a
Mbt = 1wread(1)
Sbt = 1wread(1)
1wreset
Tout = Makeint(mbt , Sbt)
Tout = Tout / 16
End If
End Sub
Gdzie jest blad ze program mimo braku DS wpisuje do zmiennych albo Tin albo Tout (w zaleznosci ktorej czujki brak) zawartosci z tego DS'a ktory jest podlaczony ?