H7N9

asked on

# CRC16 checksum different to online calculators

Hi,

This is my first question on EE. I hope I have asked my question under the correct topics.

I have a problem with my CRC16 code, I think...

I have 2 senaiors:

1. My checksum byte 1 and 2 are swapped when compared to an excel CRC calculator I found online.. I tested this by entering different data and always found the same pattern.

2. Or my checksum is completely different to other online calculators.

Perhaps someone could point in the direction of a proven online CRC calulator.

For the life of me, I don't know which is correct or where my error could be.

My code:

Start value: 0xFFFF

Polynomial: 0xA001

4 bytes Hex Data: 0xACA5F69C

Checksum: 0x9E76

Would you mind helping me figure this out.

This is my first question on EE. I hope I have asked my question under the correct topics.

I have a problem with my CRC16 code, I think...

I have 2 senaiors:

1. My checksum byte 1 and 2 are swapped when compared to an excel CRC calculator I found online.. I tested this by entering different data and always found the same pattern.

2. Or my checksum is completely different to other online calculators.

Perhaps someone could point in the direction of a proven online CRC calulator.

For the life of me, I don't know which is correct or where my error could be.

My code:

```
[/i[i][code]int crc16_u16 (int currentCrc_u16, int Polynomial, int dataByte_u8)
{
currentCrc_u16 = currentCrc_u16 xor dataByte_u8; /* Exclusive Or */
int i = 0;
while (i<8)
{
if (currentCrc_u16 & 0x0001) /* check for odd */
{
/* ODD */
// currentCrc_u16 = currentCrc_u16 >> 1; /* shift one bit out */
currentCrc_u16 = currentCrc_u16 / 2; /* shift one bit out to right */
/* Ex Or with Polynom */
//currentCrc_u16 = currentCrc_u16 ^ Polynomial; /* Exclusive Or */
currentCrc_u16 = currentCrc_u16 xor Polynomial; /* Exclusive Or */
}
else {
/* EVEN */
// currentCrc_u16 = currentCrc_u16 >> 1; /* shift one bit out */
currentCrc_u16 = currentCrc_u16 / 2; /* shift one bit out to right */
}
i=i+1;
}
return currentCrc_u16;
}]
```

Start value: 0xFFFF

Polynomial: 0xA001

4 bytes Hex Data: 0xACA5F69C

Checksum: 0x9E76

Would you mind helping me figure this out.

ASKER CERTIFIED SOLUTION

membership

Create a free account to see this answer

Signing up is free and takes 30 seconds.

**No credit card required.**
You're welcome, thanks for the points.

ASKER