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; }







Zitieren


Lesezeichen