Daj dekrementację size za warunek pętli (np na jej końcu) i przekaż ilość elementów (6). Poprawny wynik to 140C (nie 0C14) (0C15 to CRC dla sytuacji bez ostatniego elementu przesłanej tablicy).
Patrz wyżej, zamieściłem kod, który daje poprawny wynik (z dokładnością do endianessu). Dodano po 6 Bład masz logiczny... 0x22 to jeden bajt a ty rozpisałeś to tak jakby były dwa bajty 0x2 czyli 0x0202. Badaną wartościa jest 0x22 i jest to jeden bajt.
Poszukuję gotowej wyliczonej tablicy wielomianu do liczenia crc16 wg CCITT. Nie mam RAMu na tablice dlatego zamiast wyliczania jej potrzebuję wstawić gotową tablicę do pamięci programu. Nie ma ktoś pod ręką?:D
Jezeli masz tablice: unsigned char data[] = { 0x02, 0x1c, 0xb8, 0x01, 0, 0, 0, 0xa2 }; to do funkcji mozesz przekazywac tylko jej elementy, np. data[0], data[1], ty natomiast probujesz przekazac wskaznik do tablicy.
Prawdopodobieństwo "trafienia" w taką jednoczesną zamianę bitów w sumie CRC i tablicy jest znikome. Poza tym CRC32 z samej siebie zabezpiecza wystarczająco. Nawet CRC16 jest dość silnym zabezpieczeniem (ale to zależy od ilości zabezpieczanych danych i ich ważności). Zabezpieczenie sumy CRC inną sumą nie ma za bardzo sensu (wykrycie błędu tak czy inaczej...
Witam, wszystkich, zaglądam tutaj często, ale dopiero teraz zdecydowałem się napisać pierwszy post. Potrzebuje pomocy - posiadam tablice LED z autobusu typu jak w temacie. Potrzebuję ją oprogramować, tak aby wyświetlała treści jakie potrzebuję. Posiadam też do niej sterownik, ale nie spełnia tego czego chciałbym uzyskać. W związku z tym mam pytanie,...
Tablice Pixel mają interfejs RS485 ale to chyba już zauważyłeś.Transmisja 4800 9-bit (dziewiąty bit jest bitem parzystości) Jeśli temat jeszcze Cię interesuje napisz na forum. W tym momencie nie mam przy sobie notatek więc nie chce pisac bzdur. Jest w protokole transmisji jeden problem , mianowicie sposób liczenia sumy kontrolnej.Prawdopodobnie jest...
Dlatego, że CRC ma taką właściwość, że jeśli podasz początkowe CRC takie samo jak CRC bloku z którego CRC liczysz, to w efekcie dostajesz 0 lub same Fy. W efekcie tak jest prościej. CRC można też umieścić w zabezpieczanym bloku, co w efekcie daje ten sam efekt. Co do algorytmu - sposobów na wyliczanie CRC jest kilkanaście. Także musiałbyś określić co...
No najoptymalniej chyba byłoby prebuforowanie tablicy deskryptorów, czyli deskryptory na początku (token+rozmiar+tablica+crc16) w wielokrotności sektora a dalej faktyczna binarka z fontem (token+rozmiar+tablica+crc32). Najprostszy parser wygądałby jak interpreter rozpoczynającego tokena z rozmiarem, przy "otwarciu" fonta check sum kontrolnych. Tego...
[syntax=vbnet][/syntax] Public Function crc16r(ByVal amount As Byte) As Long Dim i As Integer crc16r = 0 For i = 0 To amount crc16r = CLng((crc16r << 8) Xor CLng(crc_table((CInt((crc16r >> 8) Xor bufr(i)) And 255)))) crc16r = crc16r And &HFFFF Next i crc16r = Not crc16r crc16r = crc16r And &HFFFF End Function [syntax=text][/syntax]...
Widziałem kilka takich kalkulatorów, ale każdy ma kilka opcji dodatkowych. Ja nie wiem jaki typ CRC16 zastosowano w Modbusie poza tym opisem algorytmu. Opis ten jest dokładnie taki jak powyżej (skopiowany z .pdf). A jak wyglada funkcja tworzenia takiej sumy z tablic?
CRC wcale nie musi byc czasochlonne! Jezeli tak zalezy koledze na szybkosci dzialania to moze obliczyc CRC za pomoca tablicy i kilku odwolan do niej. Jest to rozwiazanie o wiele szybsze niz wyliczanie CRC "matematycznie" a jedyna wada jest taka, ze potrzeba zarezerwowac 512 bajtow na tablice w pamieci programu (CRC16). www.tkdami.net/~roman72/pdf/dtr/dtr_sum_...
jak bedzie wygladalo wywolanie tych fonkcji jesli zmienne mam w tablicy: unsigned char Mbuf[8]
(at)szczukot korzystałem z algorytmu CRC podanego w tym wątku, ale po przepisaniu na c++ nie działał mi poprawnie, tak samo żaden inny z neta. Ale minionej nocy wszystko się wyjaśniło i już działa. Trzeba przekazywać tablicę o typie zgodnym z tym, na którym pracuje algorytm, czyli potrzebna jest 16 a nie 8 bitowa tablica (uint16_t zamiast char). Problemem...
Witam . Mam do zrealizowania CRC16 i CRC32 w ST,FBD dwiema metodami wyciąganiem XOR oraz tablicami . O ile wiem jak zabrać się za to w ST tak w FBD nie mam zielonego pojęcia . W FBD muszę to zrobić w blokach użytkownika.
Funkcja, nie widzi tablicy deklarowanej w innym pliku. Co może być przyczyna ? Na co zwrócić uwagę. Poniżej wycinki z kodu. [syntax=c] /* ATmega 8 */ glowny.c //==================================== . #define REJESTR 50 int rejestr[REJESTR]; void main(void) . while(1) . wykonaj(&ramka,(ile_bajtow-1)); . .=======================================...
Witam OK, po ponad dwumiesięcznej, intensywnej eksploatacji mp-czwórki wyszły na jaw błędy w programie, które kończyły się wyjątkiem Data Abort i "zwisem". Jedną z przyczyn udało się dość łatwo namierzyć, mianowicie wyjątek ten powodowany był tylko podczas odtwarzania jednego, specyficznego pliku MP4. Okazało się, że w tym pliku atom "stsc" składał...
Problem rozwiązałem. Najpierw próbowałem innej biblioteki crc ale źle liczyła sumę dla modbus. W końcu znalazłem w Internecie funkcje w C, liczy ok. Ja kiedyś miałem dziwną sytuację - szereg funkcji, które zwracały "String" (z dużej litery). W kilku projektach działa to bez problemu, ale w jednym były dziwne restarty Też już miałem z tym kłopot. Gdzie...
Witam. Koledzy niby prosty układzik między innymi z czujnikiem temperatury DS18b20. Nijak nie mogę uruchomić tego czujnika. Sprawdziłem wszystko pod kątem połączeń zwarć i zimnych lutów. Ba nawet czujnik podmieniałem i nadal temperatura odczytana z czujnika to -0.1. Wiem że mam jakiegoś babola w programie którego nie widzę. Jak znam życie to jakiś banał...
a widzisz niby nie problem, ale ja pisałam ostatnio w delphi 4 lata temu i teraz muszę się uczyć krok po kroku, możesz mi jakiś przykład napisać? Dodano po 38 dobra z tablica jakoś sobie poradziłam teraz się męcze z CRC16 w instrukcji do czujników jest podany sposób obliczenia ale w c a nie w delphi czy ktoś mógłby pomóc mi to przetłumaczyć? voidCalcCRC16(unsignedchar*CRC_H,uns...
Witam, posiadam tablice elektromagnetyczną 21x12. Robię sterownik do sterowania nimi z komputera i ostatni element układanki który mi został to najprawdopodobniej (?) suma CRC. Przykładowe ramki wraz z wyświetlanym tekstem to: 22DDA 0 3 63 0FF0FF0C00C00FF07F00007E0FF0CB0CB0FB07A0... 018C 22DDA - numer tablicy 0 3 63 - za każdym razem...
Kolego... Jesteś jedwabisty:) piwko dla Ciebie:) Wielkie dzięki i pozdrawiam:) Dodano po 1 Sory kolego ze zawracam...:) ale czy dał byś rade jeszcze mi wytłumaczyć obliczanie crc16 ???:) np: wielomian: 10001000000100001 ($11021) dana $00=crc$0000 dana $01=crc$1021 dana $02=crc$2042 dana $03=crc$3063 i załóżmy że chcę ciąg danych $0103=crc$0352 jak to...
Potrzebuje emulator DS18B20 na atmega8 - mam na PC program do odczytu temp i chciałem w tym programie dodac inne parametry ( np wilgotnosc ) ale nie zmieniajac programu - w scrachpadzie bede wisyłał inne dane nie temperature. ( w bajtach temperatury lub bajtach uzytkownika wolnych 2szt) Aktualnie używam "lampomitari" , ale napisalem przeróbke programu...
chodzi o to że takie wywołanie: u16 Get_CRC16(nData,wLength) przy stałej tablicy nData powoduje obliczenie sumy kontrolnej całej tablicy no chyba że podam wLength krótsze to się obliczy suma ale zawsze to będzie od elementu pierwszego. A ja chciałbym podawać od którego elementu tej tablicy ma mi liczyć crc. W zmiennej "ar" mam numer indeksu tej tablicy...
Witam potrzebuję wykonać obliczenia CRC do modbasu w bascomie, ale chciałbym zrobić to za pomocą tablicy. znalazłem przykład na elektrodzie: http://www.elektroda.pl/rtvforum/topic99... ale niestety jest w języku C a ja go nie znam. Sięgnąłem po książke do C ale pomimo to nie jest dla mnie wszystko wiadome. czy mógłby mi kotoś pomóc w analizie kodu??...
Piszę program do czujnika zliczającego stan licznika gazu i wysyłającego dane na serwer w losowych odstępach czasu. Problemem jest fragment kodu: Każda procedura wysyłająca wywoływana jest 3 razy. Za pierwszym razem przesyłane są poprawne dane, a za dwoma kolejnymi śmieci (pogrubione linijki). Transmisja na pewno jest ok, bo sumy CRC16 się zgadzają....
Tak apropos.....jaki program napisać aby maxymalnie zmulić uC i sprawdzić jego prędkość przy obciążeiu ?? najlepiej, aby to był jakiś w miarę prosty alg. obliczeniowy, ale taki, który wykorzystuje "duże" tablice danych, ale oprócz tego na wyjściu produkuje jakiś wynik, który jest się w stanie zweryfikować alternatywną metodą (np. na PC). Wtedy ma się...
Przybliżać nie ma co... przestudiowałem całą dokumentację na temat kart sd i zacząłem robić płytkę - 4 piny z szny danych na 4 dolne bity portu, wyżej pin z szyny poleceń/odpowiedzi, sygnał segara i 2 sygnały z gniazda - karta włożona i karta zabezpieczona przed zapisem... 6 sygnałów połączone na dzielniku rezystorowym(4 przewody z danych jak i przewód...
Interpreter 1-wire sterowany przez rs232 Ponieważ posiadana płytka testowa z wyświetlaczem LCD 2x16 i 4 przyciskami nie zapewniała możliwości wygodnego testowania układów 1-wire powstał interpreter wykorzystujący standardowy komputer jako urządzenie wyj/wej i komunikujący się przez port RS232 przy pomocy kabla null modem. Hardware : Interpreter został...
https://obrazki.elektroda.pl/8343613300_... Postanowiłem podłączyć rekuperator Thessla Green do Home Assistanta. Rekuperator posiada dosyć dobrze udokumentowane wyjście ModbusRTU. Do połączenia postanowiłem użyć konwertera RS485 na Ethernet dosyć popularnej firmy Waveshare. HA posiada wsparcie dla Modbus-TCP, ale chcę zachować pewien...
To zrobiłem tak jak mówisz: [syntax=c] void USART1_IRQHandler(void) { /* Sprawdzamy czy jest cos w buforze RX */ if (USART_GetITStatus(USART1, USART_IT_RXNE)) { byte = USART_ReceiveData(USART1); //przypisanie wartoci z RX //sprawdzenie czy wystąpił pierwszy bajt tj. adres slave if (byte == ramka[0]) { bitstart = 1; bitstop = 0; licznik = 0; } //inkrementowanie...
Dziękuję za źródła :) Pod C wprowadziłem małe zmiany, mianowicie zmieniłem niektóre typy danych w funkcjach. Kod wygląda tak: [syntax=c]static const int crc_table[256] = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81,...
Tak myślałem. Do tej pory próbowałem sam napisać obsługę opartą na przerwaniach od UATR'u i liczniku, ale dojechałem do chyba martwego punktu - odpytywanie pojedyńczego modułu działa bez problemu, natomiast problem jest z kilkoma modułami, tzn. jak odpytuję kilka modułów odpowiada tylko jeden... Algorytm po krótce wyglądał tak, może ktoś zobaczy błąd...
Cześć. Pracuję nad takim małym systemem komunikacji pomiędzy kilkoma urządzeniami pomiarowymi a PC. Pomiędzy urządzeniami a PC jest coś w rodzaju hub'a, co sam zaprojektowałem i wykonałem - ogólny schemat jest taki: http://obrazki.elektroda.pl/5939738300_1... Wspomniane przeze mnie urządzenia pomiarowe nie są pierwszej nowości, więc...
Witam! Mam pewnien problem. Mianowicie muszę wysłać ramkę MODBUS RTU do sterownika w postaci mniej wiecej takiej: (pierwsze dwa pola to kolejno adres sleva i funkcja, drugie dwa to adres pamieci w sterowniku, kolejne dwa do ilośc adresów pamieći o które pytamy, no i ostatenie dwa to suma kontrolna-bez nawiasów oczywiście;). Niestety programista ze mnie...
(at)tmf - dziękuję za miłe słowa :) Właśnie takie było założenie co do grupy "docelowej". Myślę, że jeszcze długo ATmegi i ATtiny będą punktem startowym dla hobbystów ze względu na nawał informacji w Internecie i mocno zakorzeniony pogląd jakoby wszystko inne było drogie/trudne itd. W sumie chciałem, żeby w poradniku było trochę więcej nawiązań do...
http://obrazki.elektroda.net/8_122877286... Komunikacja miedzy dwoma mikroprocesorami AVR oparta na zmodyfikowanym protokole MODBUS RTU zrealizowana na interfejsie RS422 (full duplex). Witam wszystkich. To pierwsza publikacja jednego z moich samodzielnie zrealizowanych projektów (a kilka ich było). Układ (sterownik) docelowo ma służyć do kontroli...
Dodaje poprawnie listing programu. [syntax=basic4gl] 'OSTATNIE ZMIANY 08,10,2014 'Problem z blednie wysylanymi danymi 'Problem z wylaczaniem sie sterownika $regfile = "m32def.dat" $crystal = 7372800 $baud = 19200 $include "Config_MMC.bas" $include "CONFIG_AVR-DOS.Bas" $hwstack = 128 $swstack = 128 $framesize = 128 '**************KONFIGURACJA LCD*****************...
Witam. Jak zwykle kiedy nie mogę sobie z czymś poradzić muszę zaczerpnąć porady na forum. Tak jest i tym razem. Otóż zbudowałem sterownik co który między innymi steruje też zaworem c.w.u. Zaworem "kręci" silnik dc a za rozpoznawanie pozycji odpowiadają dwie krańcówki mechaniczne zwierające do masy. Silnik ma hamulec który po odłączeniu zasilania zwiera...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
Witam, probówałem różnych przykładów obliczania sumy kontrolnej i nadal nic. Mam zrobioną na sztywno tablice: 01 03 02 00 00 na końcu doklejam 2 słowa CRC wyliczone w funkcji i program symulujący modbus master mówi CRC error. Gdy nie wyliczam sumy kontrolnej tylko wpisuje do tablicy prawidłowe wartości sumy dla moich danych to program do symulacji modbusa...
Interpreter 1-wire sterowany przez rs232Ponieważ posiadana płytka testowa z wyświetlaczem LCD 2x16 i 4 przyciskami nie zapewniała możliwości wygodnego testowania układów 1-wire powstał interpreter wykorzystujący standardowy komputer jako urządzenie wyj/wej i komunikujący się przez port RS232 przy pomocy kabla null modem. Hardware : Interpreter został...
crc16 modbus tablica tablica stringi bascom zapis tablica tablica
bramy spawanie piła krajzegi schemat zasilania klimatyzacji
Złącze EIAJ 10-pin jack w sprzęcie audio-wideo Lokalizacja kabla antenowego w VW Golf 5