RE: Výpočet CRC u Dallas teploměru DS18S20

Kručinský Ladislav ladislav.krucinsky@linde-mh.cz
Středa Leden 13 09:42:05 CET 2010


To vypadá velmi dobře. Zkusím si s tím pohrát, vám to vrací v registru "CRC" hodnotu toho cyklického kódu kterou pak porovnáte s posledním slovem z Dallasu nebo už to vrátí CRC = 0 = OK jinak chyba ?
 


L. Kručinský

-----Original Message-----
From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] On Behalf Of Radek Benedikt
Sent: Tuesday, January 12, 2010 8:17 PM
To: HW-news
Subject: Re: Výpočet CRC u Dallas teploměru DS18S20

Dne úterý 12 leden 2010 11:01 Kručinský Ladislav napsal(a):

> 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. 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...

Sice to bude od typickeho '51 fandu dost divne znit, kdyz rekne ze na neco jsou ty PICy preci jen pouzitelne a trosku se zacne plest PICarum do remesla, ale "koledoval" jsi si o to. Ja to mam v PIC klonu S18S20 udelane, aby to bylo jeste slozitejsi a magictejsi bez rotaci s troskou vice te magie.

vlastni crc8:

;;  CRC table for Dallas 8-bit CRC calculations from App. Note #27 ;;  x8 + x5 + x4 + 1 ;;  18JAN03 - T. Scott Dattalo

crc_8		xorwf	crc,f
		clrw
		btfsc	crc,0
		xorlw	0x5e
		btfsc	crc,1
		xorlw	0xbc
		btfsc	crc,2
		xorlw	0x61
		btfsc	crc,3
		xorlw	0xc2
		btfsc	crc,4
		xorlw	0x9d
		btfsc	crc,5
		xorlw	0x23
		btfsc	crc,6
		xorlw	0x46
		btfsc	crc,7
		xorlw	0x8c
		movwf	crc
		return

volani pak vypada napr. takto:

crcscratch	clrf	crc
		movlw	.8	; crc scratch0..scratch7
		movwf	tmp0
		movlw	scratch0
		movwf	FSR
;		bcf	STATUS,IRP
crcsc		movf	INDF,w
		call	crc_8
		incf	FSR,f
		decfsz	tmp0,f
		goto	crcsc
		movwf	scratch8
		return

Radek
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list@list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list


More information about the Hw-list mailing list