<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Výpočet CRC u Dallas teploměru DS18S20</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-2">
<META content="MSHTML 6.00.2900.5848" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Je to popsané u Microchipu - hledejte 
AN730.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Posilam funkci na vypocet CRC, postup:</FONT></DIV>
<DIV><FONT face=Arial size=2>1) CRC&nbsp;= 0;</FONT></DIV>
<DIV><FONT face=Arial size=2>2) CRC = Pocitej_CRC(Jeden_Byte_Zpravy, CRC&nbsp; 
);</FONT></DIV>
<DIV><FONT face=Arial size=2>3) Bod 2 opakuj pro celou zpravu</FONT></DIV>
<DIV><FONT face=Arial size=2>4a) Kontrola - na konci CRC =&nbsp;0</FONT></DIV>
<DIV><FONT face=Arial size=2>4b) Sestaveni zpravy - doplnit na konec zpravy CRC 
(dva byte)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Michal Gregor</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial size=2>#define&nbsp;CRC_Delitel_PC 0x8408</FONT></DIV>
<DIV>&nbsp;</DIV></FONT></DIV>
<DIV><FONT face=Arial 
size=2>//***********************************************************<BR>// 
Výpočet CRC pro počítač<BR>//<BR>// Připočte jeden byt k CRC<BR>//<BR>// Vstup: 
<BR>//&nbsp;&nbsp;-datový byte<BR>//&nbsp;&nbsp;-předcházející hodnota 
CRC<BR>//<BR>// Výstup: nová hodnota CRC</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>GLOBAL u16 G_Pre_Pocitej_CRC_Pc(u08 
Pracovni_Byte,u16 Pracovni_CRC) {</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;u08 Pocet_Bitu=8;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;for 
(Pocet_Bitu=8;Pocet_Bitu&gt;0;--Pocet_Bitu) {</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial 
size=2>&nbsp;&nbsp;//-----------------------------------------------------------<BR>&nbsp;&nbsp;// 
Posunout do leva Pracovni_CRC<BR>&nbsp;&nbsp;// Pracovni_CRC.bit0 = 
Pracovni_Byte.bit7<BR>&nbsp;&nbsp;// Posunout Pracovni_Byte do leva</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;Pracovni_CRC = Pracovni_CRC &lt;&lt; 
1;<BR>&nbsp;&nbsp;if ((Pracovni_Byte bitand b10000000)==b10000000) 
{<BR>&nbsp;&nbsp;&nbsp;Pracovni_CRC=Pracovni_CRC bitor 
b00000001;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;Pracovni_Byte=Pracovni_Byte &lt;&lt; 
1;<BR>&nbsp;&nbsp;//-----------------------------------------------------------<BR>&nbsp;&nbsp;// 
Pokud je zaplneno Vstupni_CRC, tady bit15==1<BR>&nbsp;&nbsp;// odecist 
Delitel_CRC_Pc pomoci instrukce xor.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;if ((Pracovni_CRC bitand 0x8000) == 
0x8000 ) {<BR>&nbsp;&nbsp;&nbsp;Pracovni_CRC=Pracovni_CRC bitxor 
0x8408;<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp; return 
Pracovni_CRC;<BR>}<BR>//***********************************************************<BR></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=ladislav.krucinsky@linde-mh.cz 
  href="mailto:ladislav.krucinsky@linde-mh.cz">Kručinský Ladislav</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=hw-list@list.hw.cz 
  href="mailto:hw-list@list.hw.cz">HW-news</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, January 12, 2010 11:01 
  AM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Výpočet CRC u Dallas teploměru 
  DS18S20</DIV>
  <DIV><BR></DIV><!-- Converted from text/rtf format -->
  <P><FONT face="Arial CE" size=2>Zdravíčko kolegové.</FONT> <BR><FONT 
  face="Arial CE" size=2>Trápím se tady s výpočtem CRC v procesoru PIC - ačkoliv 
  jsem si stáhl Aplikační listy jak od Dallasu tak i od Microchipu, nejsem nějak 
  100 pochopit algoritmus výpočtu pomocí posouvání registru. Nemám kapacitu 
  abych to řešil tabulkou (je potřeba 256 registrů) a tak tady čmárám po 
  čtverečkovaných papírech jedničky a nuly a nevychází mi to. Respektive - ze 
  čtyř Dallas čipů jsem si vyčetl ROM se sériovým číslem, číslem rodiny a CRC. U 
  dvou mi výpočet funguje, u dvou nikoliv.</FONT></P>
  <P><FONT face="Arial CE" size=2>Nechci prudit celou konferu ukázkami 
  algoritmu, nedělali jste to někdo v PIC assembleru ideálně pro PIC16F676 a pod 
  ? Nechci celý program, jenom bych rád věděl kde to vorám...</FONT></P>
  <P><FONT face=LindeDaxOffice size=2>Zdravím</FONT> </P>
  <P><FONT face=LindeDaxOffice size=2>Ing. Ladislav Kručinský</FONT> </P><BR>
  <P>
  <HR>

  <P></P>_______________________________________________<BR>HW-list mailing 
  list&nbsp; -&nbsp; sponsored by 
  www.HW.cz<BR>Hw-list@list.hw.cz<BR>http://list.hw.cz/mailman/listinfo/hw-list<BR></BLOCKQUOTE></BODY></HTML>