Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[atmega8][bascom] DS18B20

13 Paź 2008 18:14 3674 5
  • Poziom 10  
    Code:
    Deflcdchar 1 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32        ' definicja znaki stopnia
    


    Config 1wire = Portd.5                                      ' konfiguracja portu PD.5 jako wejœcia magistrali 1-wire

    Dim Odczyt(2) As Byte , A As Byte , Licznik As Byte , T As Integer , T1 As Single , Napis As String * 5
    'Deklaracja wszystkich zmiennych potrzebnych do pracy programu

    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

      T1 = T * 0.0625                                               'wyraŸ w stopniach Celsjusza, wynik wpisz do zmiennej Single

    Napis = Fusing(t1 , "#.#")
      Cls : Cursor Off : Lcd "* Temperatura *"
      Lowerline
      Lcd "Wynik: " ; Napis ; " " ; Chr(1) ; "C"                'wyœwietl wynik ze zmiennej Single
    Loop : End

    'Powodzenia


    taki oto programik testowy... i wynik -0,1*C

    inne programy tez albo 0,0 albo -1

    DB podłączony do zasilania masy i przez rezystor do portd5...

    testuje drugi układ db i ciagale to samo... 2gi uszkodziłem? bo termokurczliwą koszukle naciągałem zapalniczką? jak sprawdzic czy sprawny?
  • Poziom 28  
    Czy to jest cały program ?
    Gdzie $Crystal ? czy napewno jest to DS18B20 ?
  • Poziom 10  
    $crystal = 4000000

    nie działa

    $crystal = 16000000

    tez
    w fusebitach ustawione na 100100 8mhz
    tak napewno 18B20

    Dodano po 5 [minuty]:

    dodam ze to program testowy do samego czujnika..


    atemega podłaczona bez kwarca zewnętrznego..

    Dodano po 11 [minuty]:

    działa fusebity na 4 mhz i crystal 4 mhz ;>

    aha mam jeszcze glosniczek podlaczany i korzystam z polecenia sound i działało mi tylko w fusebitach na 8mhz wszystko teraz dzielic przez 2 czy da sie pogodzic ;>?
  • Poziom 28  
    Więc jezeli jest to nowa Atmega to fabrycznie jest ustawiona na 1000000 MHz i w programie też musi być ta czastota. Ja mam wgrany ten program do Attiny2313 i działa bardzo dobrze.
  • Poziom 38  
    Kontrolnie
    "przez rezystor do portdx" znaczy, że masz podciąganie zew. rezystorem, a nie szeregowo go?
  • Poziom 10  
    prawidłowe połaczenie dodaje ze juz działa
    [atmega8][bascom] DS18B20

    temp z chipsetu na plycie glownej