<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=13289&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-10-19T17:46:51+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13289&amp;mode</id>
<entry>
<author><name><![CDATA[vaffanculo]]></name></author>
<updated>2015-10-19T17:46:51+01:00</updated>
<published>2015-10-19T17:46:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13289&amp;p=142840#p142840</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13289&amp;p=142840#p142840"/>
<title type="html"><![CDATA[CRC CCITT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13289&amp;p=142840#p142840"><![CDATA[
Cześć, potrzebuję pomocy w ogarnięciu tematu CRC.<br />Potrzebuję wyliczyć CRC-CCITT (XModem), udało mi się znaleźć kalkulator online <a href="http://www.lammertbies.nl/comm/info/crc-calculation.html"  class="postlink">http://www.lammertbies.nl/comm/info/crc-calculation.html</a><br />i wyliczyć poprawne CRC z danych w postaci szesnastkowej, przykład na obrazku poniżej.<br /><br /><a href="https://obrazkiforum.atnel.pl/1784/92f640106a557bb73c8ffe7c77339302.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/1784/92f640106a557bb73c8ffe7c77339302.jpg" alt="Obrazek" /></a><br /><br />Dla danych wejściowych 0x05003700000009 otrzymujemy 0x83B4<br />Nie wiem jaki wielomian reprezentuję powyższą wersję CRC ani jaki ciąg inicjujący został zastosowany.<br /><br />Posiadam w programie tablicę char'ów dla której potrzebuję wyliczyć to właśnie CRC.<br />Moje pytanie czy jest może jakaś gotowa funkcja?<br /><br />----------edit<br /><br />temat do zamknięcia znalazłem odpowiedz<br /><br />[syntax=c]uint16_t crc_xmodem_update(uint16_t crc, uint8_t data)<br />{<br />int i;<br />crc = crc ^ ((uint16_t) data &lt;&lt; 8);<br />for (i = 0; i &lt; 8; i++)<br />{<br />if (crc &amp; 0x8000)<br />crc = (crc &lt;&lt; 1) ^ 0x1021;<br />else<br />crc &lt;&lt;= 1;<br />}<br />return crc;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1784">vaffanculo</a> — 19 paź 2015, o 17:46</p><hr />
]]></content>
</entry>
</feed>