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

Atmega328/Bascom - Jak dodać sumę kontrolną do transmisji RFM12?

maximus22_kr 06 Paź 2013 21:31 1119 0
REKLAMA
  • #1 12816594
    maximus22_kr
    Poziom 18  
    Witam
    W związku z występowaniem od czasu do czasu błędów w wysyłanych danych chciałem wprowadzić wprowadzić sprawdzenie poprawności odebranych danych przez wysłanie ostatnim bajtem wartości, którą odbiornik by porównywał wartością, którą sam obliczy z odebranych danych.

    Nadajnik na Atmega328, w pętli głównej sumuje wszystkie wartości, które będą wysłane
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wykorzystałem polecenie Checksum i chyba problemu nie ma
    Przykładowo
    Suma: 2089 CRC: 187
    Suma: 2112 CRC: 226

    Gorzej z odbiorem - Atmega644P - w przerwaniu odbieram oraz wywołuje podprogram,który sumuje i robi Checksum dla odebranych wartości:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Więc tak.
    Wysłana wartość z nadajnika Suma: 2154 CRC: 252
    Odebrana i obliczona w odbiorniku Suma: 2154 CRC: 197

    Część z bajtów branych do sumy pominąłem - były to dane dotyczące czasu i daty.
    Zastanawiam się, czy nie lepiej wykorzystać MODULO, np.
    Suma_obliczona = Suma_kontrolna MODULO 256

    Czy ciąg, z którego jest liczony Checksum musi być typu String?
  • REKLAMA
REKLAMA