Autor Tema: CRC16 CCITT  (Leído 5596 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elreypic

  • PIC12
  • **
  • Mensajes: 79
CRC16 CCITT
« en: 24 de Enero de 2005, 10:13:00 »
Que tal amigos del foro:

Alguien tiene algun código para calcular el CRC16 CCITT cuyo polinomio tiene el valor de $1021. Resulta que en el ejemplo de nombre "manchester" con tenido en PICBasic Plus contiene la rutina, pero al probarla, esta me entrega valores diferentes.

Realice el ejemplo con la cadena "123456789", cuyo CRC16 CCITT debe ser $29B1, pero esta rutina me entrega $4E45.

La rutina puede estar en C, en ensamblador o en PICBasic Pro o Plus.

De antemano agradezco su ayuda.

Desconectado elreypic

  • PIC12
  • **
  • Mensajes: 79
RE: CRC16 CCITT
« Respuesta #1 en: 24 de Enero de 2005, 12:25:00 »
Que tal amigos el foro?

Les comento que parece ya encontré el error en la rutina para calcular el CRC16 CCITT que está en el archivo ejemplo "MANCHESTER.BAS" de PICBasic Plus. El cual es que la variable de salida CRC_OUT no está inicializada con el valor $FFFF.

De cualquier manera agradezco algún otro código.

Nuevamente gracias.

Desconectado dematad

  • PIC10
  • *
  • Mensajes: 11
Re: CRC16 CCITT
« Respuesta #2 en: 09 de Noviembre de 2009, 15:28:43 »
Hola elreypic, estoy trabajando en un proyecto de lectura por RFID para caravanas electronicas y afortunadamente ya pude leer la información guardada en estos TAG FDX-B. Tengo pendiente el chequeo de error CRC CCITT (iso 11785) que según estuve investigando usa el polinomio X16+X12+X5+1 = 10001000000100001 = 1021H para dividir en modulo 2 al string de 64 datos de información. En realidad según entendí usa este polinomio pero invertido o sea 8408H usando logica XOR con el bit LSB (menos significativo) de la cadena de mensaje....el tema es que me tomo el trabajo de hacer los calculos a mano y no llego al resultado del CRC que me viene pegado al mensaje (id de animal + codigo de fabricante). Por ejemplo el string de datos sería:

00000010001100001101010.............1010001111 (64 bits empezando por el menos significativo)
1000010000001000                                             (polinomio invertido)
__________________________
10000110001100001101010........                         (primera division)
1000010000001000
_____________________________
00000010001110001101010.............
           1000010000001000
_________________________________
           00001010001111010..............

y sigo hasta correrme 64 bits a la derecha + 16 bits en "0" mas que debo anexarle a los 64 para el calculo...

¿podes aporterme algúna información al respecto para detectar el error...?
Slds y gracias.-

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: CRC16 CCITT
« Respuesta #3 en: 09 de Noviembre de 2009, 16:03:12 »
dematad, este hilo llevaba cerrado mas de 4 años. Por favor, usa el buscador correctamente y seguro encontras lo que estas buscando, ok?

Hace tiempo he aportado algoritmos para calculo de CRCs.

http://www.todopic.com.ar/foros/index.php?topic=25627.0;topicseen

Suerte.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything