En éste post mostrare un par de rutinas para hacer el calculo del CRC KERMIT Y CRC CCITT en assembler de ATMEL.
Los resultados pueden ser chequeados en On-line CRC calculation
Aquí no hay mucho que decir así que pasare a mostrar las rutinas.
Aqui hay dos buques que calcularan el crc de la cadena de texto (“JONATHAN RAUL SEMINARIO”) que se encuentra en la memoria de programa.
Las rutinas son muy similares, tienen la misma cantidad de instrucciones (22 instrucciones) y son ejecutadas en la misma cantidad de ciclos de instrucción(28 c.i). Si trabajamos con un XTAL=16MHz nos tomará 1.75us calcular el crc de cada byte.
Bueno, eso es todo en éste post…bye !!!
I challenge you to update the CRC in 16 instructions (excluding "ret")
ResponderEliminarIs it possible ?
EliminarCreo que si. Te voy a mostrar, pero intenta primero tú mismo. Take a look at the inline assembler for crc_ccitt_update in avr-libc. It's short, but I think you can do even better.
EliminarCCITT:
ResponderEliminarEOR CC,CRCH
MOV CRCH,CRCL
MOV CRCL,CC
SWAP CC
ANDI CC,0x0F
EOR CRCL,CC
MOV CC,CRCL
SWAP CC
MOV R22,CC
ANDI CC,0xF0
ANDI R22,0x0F
EOR CRCH,CC
LSL CC
ROL R22
EOR CRCL,CC
EOR CRCH,R22
RET