CRC25 - kuidas ? - Printerisõbralik versioon +- Elektroonikafoorum.com (https://elektroonikafoorum.com) +-- Foorum: Arutelud (https://elektroonikafoorum.com/forum-3.html) +--- Foorum: Programmeerimine (https://elektroonikafoorum.com/forum-5.html) +--- Teema: CRC25 - kuidas ? (/thread-592.html) |
CRC25 - kuidas ? - felch - 26-01-2015 Sellist CRC-d kasutab MAVlink (kopterite jms mudelite vaheline side). Sain protokollist lõpuks aru aga ma pean sõnumite saatmiseks oskama ise CRC-d arvutada. Ta on 2-baidine ja algväärtus on 0xFFFF. Edasi...ma ei mõista. Kes "tõlgiks" ? Kood: Kood: #ifdef __cplusplus RE: CRC25 - kuidas ? - A.R. - 27-01-2015 Kunagi (68.a) oli meil kasutusel CRC kus Järgmine 8 bitti (perfolindi rida) liideti sellele CRC-le otsa ja 8st ületäitumine läks +1. Aga siin on kasutusel sellised operaatorid http://www.thegeekstuff.com/2012/10/bitwise-operators/ | – Bitwise OR & – Bitwise AND ~ – One’s complement ^ – Bitwise XOR << – left shift >> – right shift see XOR on olemas ka TTL kivina ja loogika on 0^0=0 0^1=1 1^0=1 1^1=0 See ^ tuleb eesti klaviatuurilt AltGr ä alt aga näha on peale järgmise klahvi vajutust. << ja >> nihutavad muutujat kas vasakule või paremale N kohta. Sellised käsud on ka ASMis olemas. Vast oli abiks ja tõlkija leiad peeglist (Käisin öösel 2.30 arvutist vaatamas kas ^ oli ikka XOR ---> OLI!!!!) Kõik ei taha meeles püsida. Kirjutasin ka katseks selle proge aga vast ei hakka katsetama. RE: CRC25 - kuidas ? - felch - 27-01-2015 operandide tähendused leidsin ise ka aga ei funksi. Minu kood: Kood: ;=============================================================================== RE: CRC25 - kuidas ? - A.R. - 27-01-2015 http://srecord.sourceforge.net/crc16-ccitt.html Tegin sellest tekstist programmi, natuke kohendasin Aga pärast taipasin et see arvutab crc16 Pilt ekraanist Aga kuidas saata seda exe faili ma ei tea. exe ei sobi, rar ei sobi. Vähemalt siin. Kui pakub huvi, siis võib veel otsida. Kui kuskil on KORRALIK CRC25.C võib uuesti proovida. Mis seal vahet on? ___________________________ Otsisin on veel üks, suurem,mitmekülgsem. http://www.zorc.breitbandkatze.de/crc.html See eelmine tuleb välja kui on valitud CRC-CCITT ja nondirect Direct on siis paha tulp. Siin on kaasas ka C tekst ja see transleerus kenasti. Aga Valida on ka CRC-16 ja CRC-32. Tundub et koodid on kas 4x4=16 bitt või 8x4=32 bitt. Aga mis on siis CRC-25. 6x4+1=25 ???? RE: CRC25 - kuidas ? - A.R. - 28-01-2015 Aga mis on siis CRC-25. Katsetasin transleerida seda algselt pakutut C-d. Tuli välja, on olemas hex PIC18F4550-le (ja Picutajatele) ning ka disasm fail. Saab vaadata mis juhtub Debugi all. Kas on teada mõned sisendkoodid ja neile vastav CNC? See ÕIGE !!!!! Probleem on igatahes huvitav RE: CRC25 - kuidas ? - felch - 28-01-2015 (28-01-2015, 05:09 PM)A.R. Kirjutas: Aga mis on siis CRC-25. Ohoo ! Saada disasm mulle ka uurimiseks! Sisendinfo: 09 4E 01 01 00 00 00 00 00 02 03 51 04 03 32 -> CRC= 7F1C Samas on võimalik, et summa arvutust alustatakse hoopis siit: 00 00 00 00 02 03 51 04 03 32 -> CRC= 7F1C Kas arvutus käib otse või vastupidise baidijadaga,ma ei tea. Vist otsepidise. Tegu on MAVLink protokolli CRC-ga. Nende dokumentatsioon on vääga vilets. Ühes kohas õeldakse, et kogu payload'i ulatuses (alumine rida), teisal aga et kogu paketi ulatuses (ülemine rida) v.a. startbait (seda siia ei kirjutanudki). Lisaks tuleb enne viimast akumuleerimist lasta askut läbi veel "seed" mis antud paketi puhul on 0x32. Kas teda käsitletakse kuidagi teisiti? Vist jällegi mitte. Panin ta mõlemasse jadasse kirja aga võib proovida ka ilma. Minu asmi kood ei tooda mitte mingi nipiga etteantud CRC-d aga kopter näiteks saab just sellisest messist aru, muud saadab pikalt. Ka need CRC-d mis sinu viidatud ja ka muude online kalkulaatoritega rehkendatud. Kui see tähtis on, siis CRC polünoom 'peaks' olema 0xf0b8. Link näidisele ja jutule: http://eastbay-rc.blogspot.com/2013/04/mavlink-protocol-notes-packet-decoding.html RE: CRC25 - kuidas ? - felch - 28-01-2015 Igaks juhuks ka link java koodile https://github.com/arthurbenemann/droidplanner/blob/master/Mavlink/src/com/MAVLink/Messages/CRC.java RE: CRC25 - kuidas ? - A.R. - 29-01-2015 Kunagi tegin javas haiglatele veremajandust aga tunnen end C-s kodusemalt. Kell 6.00 tuli üks mõte Tark inime vaatab HELPi uint16_t on 16 bitti seega typedef unsigned short uint16_t; ja mitte typedef unsigned char uint16_t; Ei julge vannituppa minna - seal on peegel. Ei meeldi lolle vaadata. Nüüd on PC peal ok transleerimine Aga selle jada CNC tuleb mitte 0x7F1C vaid 0x5574 Tolle suure kalkulaatori peal sain õige kätte aga tuli togida parameetreid. Kas on ka mõni teine jada et veel testida? Ikkagi parem, otsime veel. RE: CRC25 - kuidas ? - felch - 29-01-2015 (29-01-2015, 08:03 AM)A.R. Kirjutas: Kunagi tegin javas haiglatele veremajandust agaTänud aja raiskamise ja vaeva nägemise eest ! Kas õige vastus tuli tolle "laia-riba-kassi" kalkulaatoriga? Andsid ette polünoomi F0B8 ja siis jada - mis kujul ikkagi? Mul ei õnnestunud ei selle ega ka mingi muu online kalkulaatoriga õiget tulemust saavutada. Tööl on vetsus ka peegel, peab vist nurga taha pissile minema... RE: CRC25 - kuidas ? - A.R. - 29-01-2015 Olen nüüd sealmaal et võtsin ette selle Kassi C teksti. (ELFAs võeti peale kassidest rääkimist ära sõnaõigus. Seal on nüüd üks mees steperiga hädas. Meenutaks noorust ja malemängu aga...) Kena, Sinu jadas on sees nullid const unsigned char string[] = { 0x09, 0x4E, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x51, 0x04, 0x00, 0x32}; Kas on selline massiiv? HEX arvud? strlen() annab vale pikkuse - esimese NULLINI Ütlesin et on 15 baiti. Saan nüüd mitmesuguseid CRCsid. See algoritm on vägev lubab CRC 1ja 32 vahel suvalist numbrit bitte. Üritan ikka veel 16 ga aga tekst on ju aastast 2003!!! kas siis CRC25 oli olemas? Keetsin kannu kohvi, vast läheb paremaks. ____________________________________________ Vaatasin seda JAVAt, saab nii ja peaaegu sama mis C. Aga seal pole seda kokkuvõtmise programmi. Tee kõigi elementidega ja liida kokku -umbes nii. Aga proovime. |