Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 27 kwi 2024, o 20:09


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 3 gru 2017, o 08:19 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Witam,
Piszę tutaj bo mam problem z obliczeniem sumy CRC.
W programie mam utworzoną tablice która składa się z czterech cyfr, np: uint8_t tablica[]={2, 5, 3, 9};
Cyfry te wpisuję za pomocą pętli for do tej tablicy z klawiatury matrycowej.
I teraz chciałbym z tego obliczyć crc.
Może mi ktoś powiedzieć jak to obliczyć w programie? Kod piszę oczywiście w c avr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2017, o 11:09 
Offline
Użytkownik

Dołączył(a): 27 lis 2012
Posty: 289
Pomógł: 6

http://jaktodziala.eu/



Ostatnio edytowano 9 gru 2018, o 12:21 przez mg101, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2017, o 12:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

A jakie CRC chcesz liczyć? CRC8, CRC16, CRC32? I jaki polinominal musisz / chcesz używać?

Na AVRach nie liczy się CRC bezpośrednio z wzorów matematycznych, tylko wykorzystuje się stablicowane wyniki.
Przykład CRC16 masz w Atmel Appnote AVR067.

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 2 minutach ]

DS18B20 używa CRC8, więc na pewno Mirek w poradnikach pokazuje jak się liczy. Ja nie chcesz szukać w którym, to masz przykład w https://www.maximintegrated.com/en/app- ... .mvp/id/27



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2017, o 15:26 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Avr-libc udostępnia funkcje do obliczania CRC - plik nagłówkowy <util/crc16.h> - nie tylko do obliczania CRC16, jakby na to wskazywała nazwa. Na podanej stronie jest przykład użycia jednej z tych funkcji do obliczenia CRC8 numeru seryjnego pastylki iButton Dallasa, jednak jak kolega rskup napisał wcześniej, musisz najpierw wiedzieć, jakie konkretnie CRC chcesz obliczyć.

Funkcje nie są zapewne zbyt szybkie, ponieważ nie bazują na gotowych wartościach z "look-up table", jednak przy takich ilościach danych wejściowych, z jakich chcesz obliczyć swoje CRC nie będzie to miało raczej większego znaczenia, chyba że docelowo tych danych będzie dużo więcej lub będziesz wykonywał te obliczenia bardzo często. Oczywiście im więcej-bitowe CRC, tym czas obliczeń będzie dłuższy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2017, o 20:24 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

ok, dzięki za pomoc. Skorzystam z tego pliku z libc i zobacze co z tego bedzie wychodziło.
I jeszcze jedno pytanie. Czy korzystając z crc16 muszę podawać 16 danych wejściowych( cyfr do obliczenia), czy mogę mniej?
Może trochę głupie pytanie, ale pierwszy raz mam styczność z crc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2017, o 21:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Możesz dać nawet zero bajtów :). CRC16 oznacza że masz 16-bitową wartość CRC. Obliczasz CRC podając kolejne bajty.

Pewnie nie wiesz, a to jest bardzo fajna właściwość, i to chyba dla wszystkich wersji CRC. Jak liczysz CRC z pakietu i na koniec do wyliczania dajesz poprawną wartość CRC, to wynik masz zero :).
Co w praktyce używasz się jak odbiera dane zakończone wartością CRC, to z całości danych + CRC masz mieć wyliczone CRC o wartości zero.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO