avr: use provided polynomial.
This commit is contained in:
@@ -8,31 +8,22 @@
|
|||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
; ***************************************************************************
|
|
||||||
; defines
|
|
||||||
|
|
||||||
|
|
||||||
.equ CRC8_POLYNOMIAL = 0x97 ; HD=4 up to 119 bytes, e.g. detects all 1 to 3 bit errors
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.cseg
|
.cseg
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine crc8Calc @global
|
||||||
; calc crc8 checksum using given polynomial
|
; calc crc8 checksum using given polynomial
|
||||||
;
|
;
|
||||||
; IN:
|
; @return r16 crc8 checksum
|
||||||
; - X : pointer to data to calc crc8 for
|
; @return X points directly after last checked byte
|
||||||
; - r18: number of bytes to calc crc8 for
|
; @param X pointer to data to calc crc8 for
|
||||||
; OUT:
|
; @param r18 number of bytes to calc crc8 for
|
||||||
; - r16: crc8 checksum
|
; @param r19 polynomial to use
|
||||||
; - X : point directly behind the checked area
|
; @clobbers: R16, R17, R18, R20, X
|
||||||
; MODIFIED REGS: R16, R17, R18, R19, R20, X
|
|
||||||
|
|
||||||
crc8Calc:
|
crc8Calc:
|
||||||
ldi r16, 0xff ; crc
|
ldi r16, 0xff ; start crc
|
||||||
ldi r19, CRC8_POLYNOMIAL
|
|
||||||
|
|
||||||
crc8Calc_loop1:
|
crc8Calc_loop1:
|
||||||
ld r17, X+ ; running var
|
ld r17, X+ ; running var
|
||||||
@@ -48,6 +39,7 @@ crc8Calc_l1:
|
|||||||
dec r18
|
dec r18
|
||||||
brne crc8Calc_loop1
|
brne crc8Calc_loop1
|
||||||
ret
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user