Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Po raz któryś: ATmega8 i DS1820 :(

Villen 24 Apr 2007 22:00 1556 4
  • #1
    Villen
    Level 21  
    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.



    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?
  • #3
    Villen
    Level 21  
    Hmm... o co chodzi dokładnie z "podciąganiem" DS'a? rezystorem 4.7k podciągamy linie danych do Vcc, czy linię danych łączymy z portem I/O mikrokontolera przez ten rezystor? Troche lamerskie pytanie ale z innych postów jakos wydedukować nie mogę :D
  • #4
    zumek
    Level 39  
    Villen wrote:
    Hmm... o co chodzi dokładnie z "podciąganiem" DS'a? rezystorem 4.7k podciągamy linie danych do Vcc, czy linię danych łączymy z portem I/O mikrokontolera przez ten rezystor? Troche lamerskie pytanie ale z innych postów jakos wydedukować nie mogę :D

    A z dokumentacji , nie możesz wydedukowac :?:

    Piotrek
  • #5
    Villen
    Level 21  
    małe dysmózgowie... :P

    podciągnąłem szyne danych do Vcc przez ten rezystor i problem zniknął. Dzieki za fatyge :)