Witam!
Mam problem z kodem w bascom do obsługi DS1820 oraz wysłaniem wyniku przez uart. Problem wygląda następująco - gdy działa obsługa DS1820 uart nie nadaje sygnału. Gdy wyłączę obsługę 1-wire uart działa.
W takiej wersji programu jak powyżej działa pomiar temperatury, ale nie działa transmisja uart. Jak wyrzucam waitms 750 z obsługi DS-a - działa uart ale nie działa odczyt z DS-a. Co można w takim wypadku zrobić. Proszę o pomoc, bo brakuje już mi pomysłów.
Mam problem z kodem w bascom do obsługi DS1820 oraz wysłaniem wyniku przez uart. Problem wygląda następująco - gdy działa obsługa DS1820 uart nie nadaje sygnału. Gdy wyłączę obsługę 1-wire uart działa.
Code:
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.3 , Db6 = Portd.2 , Db7 = Portb.0 , E = Portd.5 , Rs = Portd.6 'plyta
'Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , E = Portd.3 , Rs = Portd.2
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40
Config Serialout = Buffered , Size = 100
Enable Interrupts
Config 1wire = Portb.5
'Config 1wire = Portc.0
Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32
Cursor Off
Cls
Lcd "Inicjalizacja..."
Wait 5
Cls
Dim T1 As Byte
Dim T1_w As String * 2
Dim T2 As Byte
Dim T2_w As String * 2
Dim Wyslij As String * 5
Dim Znak As String * 1
Declare Sub Odczyt
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
'-----------------------------------
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
Do
Call Odczyt
T1 = T1 / 2
T2 = T2 / 2
'T1 = 44
'T2 = 40
Znak = "$"
T1_w = Str(t1)
T2_w = Str(t2)
Mid(wyslij , 1 , 1) = Znak
Mid(wyslij , 2 , 2) = T1_w
Mid(wyslij , 4 , 2) = T2_w
Print Wyslij ; Chr(13);
Locate 1 , 1
Lcd "Piec: " ; T1 ; Chr(0) ; " "
Locate 2 , 1
'Lcd "Bojler: " ; T2 ; Chr(0) ; " "
Lcd T2 ; " " ; Wyslij
Loop
End
Odczyt:
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &H44 'start pomiaru temperatury
Waitms 750 'opóźnienie na czas pomiaru
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &HBE 'komenda odczytu zmierzonej
'temperatury
T1 = 1wread(2) 'odczyt zmierzonej temperatury
'do tablicy Temperatura
1wreset 'reset magistrali 1-Wire
Return
W takiej wersji programu jak powyżej działa pomiar temperatury, ale nie działa transmisja uart. Jak wyrzucam waitms 750 z obsługi DS-a - działa uart ale nie działa odczyt z DS-a. Co można w takim wypadku zrobić. Proszę o pomoc, bo brakuje już mi pomysłów.