Witam
Zaczynam trenować mikrokontrolery i programowanie. Próbowałem w asm ale jakoś ciężko - próbuje teraz w bascomie - i też ciężko niestety
znalazłem jakiś przykład programu w bascom ale coś mi nie hula.
Mam płytkę uniwersalną. na jakimiś orginalnym programie wszystko jest ok -więc znaczy, że elementy są sprawne.
Ale mój powyższy program daje dość dziwne efekty. Coś wyświetla - ale temperatura jest bardzo zawyżona. Zresztą zmienia się w dziwnym zakresie. Po włączeniu pokazało 60 st. Teraz pokazuje 6 st. Wygląda, że albo mi źle tą temperaturę przelicza, albo odczytuję za dokładnie (setne zamiast pełnych stopni?).Po przytrzymaniu kilka sekund w palcach ukłądu pokazuje 106,108,112, potem spada. Obecnie pokazuje 72.
Co ja mam tam nie tak?
Czy mógłby ktoś wyprostować mój program?
a przy okazji..
Szukam w necie (po naszemu) jakiegoś mądrego wyjaśnienia działania 1wire w bascom i nie mogę się doszukać czegoś sensownego.
Ma ktoś może jakieś linki?
pawełJ
Zaczynam trenować mikrokontrolery i programowanie. Próbowałem w asm ale jakoś ciężko - próbuje teraz w bascomie - i też ciężko niestety
znalazłem jakiś przykład programu w bascom ale coś mi nie hula.
$crystal = 16000000
'$regfile = "m16.dat"
Config Portc = Output
Config 1wire = Porta.1
Dim Odczyt(2) As Byte
Declare Sub Odcz_temp
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Config Lcd = 16 * 2
Cursor Off
Cls
Locate 1 , 1
Lcd "test"
Wait 1
Do
Call Odcz_temp
Cls
Lcd "temp= " ; Odczyt(1) ; "C"
Loop
End
Sub Odcz_temp
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
Waitms 750
Odczyt(1) = 1wread(2)
1wreset
If Err = 1 Then
Cls
Lcd "brak ukladu"
Waitms 750
End If
Odczyt(1) = Odczyt(1) / 2 'obliczanie temperatury
End Sub
Mam płytkę uniwersalną. na jakimiś orginalnym programie wszystko jest ok -więc znaczy, że elementy są sprawne.
Ale mój powyższy program daje dość dziwne efekty. Coś wyświetla - ale temperatura jest bardzo zawyżona. Zresztą zmienia się w dziwnym zakresie. Po włączeniu pokazało 60 st. Teraz pokazuje 6 st. Wygląda, że albo mi źle tą temperaturę przelicza, albo odczytuję za dokładnie (setne zamiast pełnych stopni?).Po przytrzymaniu kilka sekund w palcach ukłądu pokazuje 106,108,112, potem spada. Obecnie pokazuje 72.
Co ja mam tam nie tak?
Czy mógłby ktoś wyprostować mój program?
a przy okazji..
Szukam w necie (po naszemu) jakiegoś mądrego wyjaśnienia działania 1wire w bascom i nie mogę się doszukać czegoś sensownego.
Ma ktoś może jakieś linki?
pawełJ