Wygrałem w końcu batalię z Atmegiem i LCD i mam następny problem...
Działać miał cyfrowy termometr oparty na 1wire i DS1820... Miał ale nie działa. DS podłączony poprawnie (zasilanie i szyna pod PD.5). Kożystam z programu pana P.Góreckiego (przykład napisany na potrzeby książki "Mikrokontrolery dla początkujących" na AT90S2313 z kwarcem 4 MHz). W ATmegu kożystam z wewnetrznego oscylatora ustawionego fusebitami na 4 MHz. Nawet pinu 1wire zmieniac nie trzebabyło.
I cały czas wyświetla 0stopni... Nie wiem już całkiem co z tym fantem zrobić. Częstotliwość kwarca taka sama jaka była używana przez pana Góreckiego (wprawdzie wewnętrzny oscylator jest mniej dokładny ale czy ma to az takie znaczenie w tym wypadku? wszak to nie zegar...), nawet port do kótrego podłączony jest DS jest ten sam...
Zna ktoś jakies w miare logiczne wyjaśnienie tej sytuacji?
Działać miał cyfrowy termometr oparty na 1wire i DS1820... Miał ale nie działa. DS podłączony poprawnie (zasilanie i szyna pod PD.5). Kożystam z programu pana P.Góreckiego (przykład napisany na potrzeby książki "Mikrokontrolery dla początkujących" na AT90S2313 z kwarcem 4 MHz). W ATmegu kożystam z wewnetrznego oscylatora ustawionego fusebitami na 4 MHz. Nawet pinu 1wire zmieniac nie trzebabyło.
Quote:
' C032c Najprostsze wykorzystanie DS18x20
Config 1wire = Portd.5 ' + 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
I cały czas wyświetla 0stopni... Nie wiem już całkiem co z tym fantem zrobić. Częstotliwość kwarca taka sama jaka była używana przez pana Góreckiego (wprawdzie wewnętrzny oscylator jest mniej dokładny ale czy ma to az takie znaczenie w tym wypadku? wszak to nie zegar...), nawet port do kótrego podłączony jest DS jest ten sam...
Zna ktoś jakies w miare logiczne wyjaśnienie tej sytuacji?