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.

CRC w DS18b20 - Bascom

gremlin2001 23 Maj 2015 13:52 564 0
  • #1
    gremlin2001
    Poziom 11  
    Witam,

    Mam pytanie do osób obeznanych z CRC w DS18b20.

    Pobrałem z netu procedurę pobierającą temperaturę z czujnika ze sprawdzeniem CRC:

    "
    Config 1wire = Portd.2 ' termometr

    Dim Sc(9) As Byte 'w tej tablicy beda dane odczytane z czujnika
    Dim Temperatura As Integer 'tu obliczona temperatura
    ---
    tu konfiguracja lcd 2*16 typowy
    ---

    Do

    1wreset Pind , 2
    If Err = 1 Then
    cls
    lcd "BLAD"
    End If
    1wwrite &HCC , 1 , Pind , 2 'komenda skip ROM
    1wwrite &H44 , 1 , Pind , 2 'komenda convert T

    '--------------------------------------------------------
    Wait 1


    1wreset Pind , 2
    1wwrite &HCC , 1 , Pind , 2 'komenda skip ROM
    1wwrite &HBE , 1 , Pind , 2


    Sc(1) = 1wread(9) 'odczytujemy wszystkie bajty z czujnika

    If Sc(9) = Crc8(sc(1) , 8) Then 'obliczamy CRC i porownujemy z przyslanym przez czujnik

    Temperatura = Makeint(sc(1) , Sc(2)) 'tu laczymy dwa bajty zawierajace temperature
    Temperatura = Temperatura * 10 'obliczamy temperature
    Temperatura = Temperatura / 16 'nie bylo bledu CRC
    cls
    lcd temperatura
    Else 'jesli byl blad CRC

    set LED ' zapal na stale diode LED

    End If

    loop
    end"

    I ogólnie program działa, wyświetla zmienną "temperatura". DS18b20 jest podłączony (kabel jakieś 6-7 metrów) poprzez 3 przewody: masa, +5V i sygnał (podciągnięty rezystorem do +5V). Jeśli odłączę przewód sygnałowy albo masę to "Err" przyjmuje wartość 1 czyli wyświetla się błąd na LCD.

    Ale jeśli odłącze tylko zasilanie czujnika to zwraca temperaturę +85C co jest typowe z tego co doczytałem na forum. Niemniej czy wtedy CRC nie powinno przyjąć "1" (błąd) i zapalić mi LEDa ?

    Jak można zakłócić pomiar z tego czujnika tak żeby sprawdzić czy procedura prawidłowo sprawdza CRC (by uzyskać zapalenie leda) ?


    Pozdrawiam
    Sławek