logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATMEGA][Bascom] ds18b20 CRC - 2 liczby 8 bit w 1 16bit

loodvis 03 Lip 2008 00:27 4108 2
REKLAMA
  • #1 5307071
    loodvis
    Poziom 14  
    Odczytuje z 1wire kolejno 9 bajtów danych do tablicy.

    Temperatura to liczba 16bitowa, pierwsze 8 bitów zapisanych jest w 1 elemencie tablicy 8 kolejnych w 2gim.

    Jakim poleceniem mogę połączyć te te dwie liczby aby otrzymać jedną 16bitową?

    Czy może ktoś ma jakiś inny sposób aby odczytać temperaturę i sumę kontrolną (1,2 bajt - temperatura, 9ty -CRC)

    Czy w ten sposób by to działało?


     1wreset
       1wwrite &HCC
       1wwrite &HBE
    
       Teperatura = 1wread(2)
       bleble = 1wread(6)
       Crc=1wread(1)



    Edit
    wiem że już tak nie będzie działać bo przecież nie wylicze sumy kontrolnej poleceniem crc8

    Proszę o jakąś podpowiedź bo w szukajce o bascomie i CRC dużo nie ma, mimo że ds18b20 to taki popularny temat jak już zdążył ktoś zaraportować ;)
  • REKLAMA
  • Pomocny post
    #2 5307207
    Andy74
    Poziom 25  
    Dim Sc(9) As Byte                 'w tej tablicy beda dane odczytane z czujnika
    Dim Temperatura As Integer        'tu obliczona temperatura
    Dim Blad_crc As Bit               'a ten bit bedzie ustawiany w razie bledu CRC odczytu
    
    '... program ...
    
    1wreset 
    1wwrite &HCC 
    1wwrite &HBE
    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
             Reset Blad_crc                        'wiec zerujemy flage bledu CRC
    
          Else                                     'jesli byl blad CRC
    
             Set Blad_crc                          'ustawiamy flage bledu CRC
    
          End If
    
    '... dalszy ciag programu ...
  • #3 5307910
    loodvis
    Poziom 14  
    dokładnie o to "makeint" mi chodziło
    dzięki bardzo :)

    zamykam
REKLAMA