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

ATMEGA8 - Niepoprawne CRC dla danych ze scratchpadu DS18B20, kod CRC w C

mateuszaaa 21 Mar 2014 20:19 1452 1
REKLAMA
  • #1 13429024
    mateuszaaa
    Poziom 9  
    Witam staram sie uruchomic weryfikacje odczytanych danych z czujnika DS18B20
    o ile w przypadku weryfikacji CRC dla odczytu nr identyfikacyjnego czujnika dziala poprawnie to dla weryfikacji danych odczytanych ze scrathpad`u juz nie. Zalaczam kod do wyliczania CRC

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Odczyt i weryfikacja CRC numeru identyfikacyjnego czujnika


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    porowywanie crc z odczytanym z czujnika z crc policzonym

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Ta czesc oprogramowania dziala poprawnie, problem pojawia sie przy weryfikacji danych odczytanych ze scratchpada. Sama temperatura jest odczytywana w sposob porawny. Problemem jest jedynie wartosc wyliczonego CRC ktore rozni sie od CRC odebranym w 9 bicie transmisji .


    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 13430258
    Bielak_solid
    Poziom 14  
    Witam,

    prawdopodobnie błąd tkwi w kolejności podawania odebranych bajtów do funkcji liczącej CRC:

    Cytat:

    crc = crc8_update(0x00,data[0],DS_CRC_SERIAL_GEN);
    crc = crc8_update(crc,data[1],DS_CRC_SERIAL_GEN);
    crc = crc8_update(crc,data[3],DS_CRC_SERIAL_GEN);
    crc = crc8_update(crc,data[2],DS_CRC_SERIAL_GEN);
    crc = crc8_update(crc,data[4],DS_CRC_SERIAL_GEN);
    crc = crc8_update(crc,data[5],DS_CRC_SERIAL_GEN);
    crc = crc8_update(crc,data[6],DS_CRC_SERIAL_GEN);
    crc = crc8_update(crc,data[7],DS_CRC_SERIAL_GEN);


    Podajesz tam bajt 0, 1, 3, 2, 4, 5, 6, 7

    Niestety nie bardzo mam czas na analizę Twojego kodu więc jeśli nadal będziesz miał problemy z liczeniem sumy załączam swój sprawdzony kod:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam[/code]
REKLAMA