Ok, ich habe mal die Maxim App-Note zum 1-Wire CRC (http://www.maxim-ic.com/app-notes/index.mvp/id/27) überflogen. Und bevor ich nun deinen Code zerpflücke, mache ich einfach mal einen Alternativvorschlag:
Code:
uint8_t doCRC8 (uint8_t data, uint8_t crc) {
for (uint8_t i = 0; i < 8; i++) {
uint8_t fb = (crc ^ data) & 0x01;
crc >>= 1;
if (fb)
crc ^= 0x8c;
data >>= 1;
}
return crc;
}
uint8_t blockCRC (uint8_t *data, uint8_t size) {
uint8_t crc = 0;
for (uint8_t i = 0; i < size; i++)
crc = doCRC8(data[i],crc);
return crc;
}
Lesezeichen