hola.estoy buscando una rutina en ensamblador para el calculo del crc del sensor de temperatura DS18B20.
pero todo lo que encuentro esta en ccs
hay dos formas de generar los CRC.con tabla y sin tabla.con tabla es mas rapido pero ocupa mas memoria.y sin tabla es mas lento pero
ocupa menos espacio.
seria bueno tener las dos opciones.pero por el momento necesito velocidad asi que necesito la rutina con tabla.
ya hice un codigo de CRC A001 para MODBUS pero me costo mucho trabajo.
si pudiera ahorrarme el trabajo,mucho mejor.ya que el tiempo no es de lo que mas dispongo.
he encontrado un codigo en ccs que quisiera saber si alguien puede convertirlo.
Practice:
Here the table driven crc-8 we use. Not sure what the polynomial is.
First is the table:
const int8 crc8_Table[ ] =
{
0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
} ;
To use the table:
crc = initial_Value ;
// The initial value is usually zero, but non-zero values are better.
// You can pick any byte you want, just be sure it's the same every time.
for ( each byte_Value in the message or file )
{
crc = crc8_Table[ crc ^ byte_Value ] ;
}
// Some CRC implementations xor the final value with some other value.
crc = crc ^ xor_Value