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

Magistrala 1-wire Bascom

21 Kwi 2009 15:06 3147 6
  • Poziom 12  
    Witam,

    właśnie zabrałem się za budowę termostatu- ma być oparty na układzie DS18B20 i napisałem prosty program w Bascomie
    Code:

    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 z  zmiennej Single
    Loop : End


    niestety coś jest nie tak,wg mnie mikrokontroler w ogóle nie widzi układu i nie może się z nim dogadać- czy jest wpięty w układ czy nie to i tak jest wyświetlana jakaś dziwna temperatura 0,0625 C???
    Prosiłbym o pomoc co tutaj jest nie tak??Mikrokontroler to AtTiny 2313

    Pozdrawiam
  • Poziom 12  
    No zgadzam się że jest tego trochę w necie ale wg. mnie ten program powinien działać.Sprawdzałem kilka wersji i tak jak przypuszczałem mikrokontroler nie komunikuje się z DS - nie może odczytać jego adresu.Może mógłby ktoś u siebie odpalić ten program i zobaczyć co się dzieje- hmm. może mam coś uszkodzone.

    Pozdrawiam

    i z góry dzięki
  • Pomocny post
    Poziom 28  
    Mozliwe. Dodales rezystor? Jeszcze masz taka zmienna err w bascomie, poczytaj troche o niej.
  • Poziom 12  
    Tak rezystor jest zgodny z karta katalogową- no nic pomęczę to trochę przez noc. Może w końcu wyświetli się coś sensownego.

    pzdr
  • VIP Zasłużony dla elektroda
    A jak ustawiłeś zegar?
  • Poziom 12  
    Dobra zamykam temat:)Tiny był walnięty - w końcu wziołem innego Tinego z pourywanymi nóżkami i mu je dolutowałem i zaczęło działać- dzięki wader za podjęci tematu.

    pozdrawiam