S2000 MODE D'EMPLOI
Exemple de programmation CRC8 :
unsigned char CalcCRC8(unsigned char *Data)
{
unsigned char LoopCntr;
unsigned char CRC8;
unsigned char A;
unsigned char i;
CRC8 = 0;
for (i = 0; i < 8; i++){
A = *Data++;
for (LoopCntr = 0; LoopCntr < 8; LoopCntr++, A >>= 1){ // 8 bit loop
if ((A ^ CRC8) & 0x01){
CRC8 ^= 0x18;
CRC8 >>= 1;
CRC8 |= 0x80;
}else
CRC8 >>= 1;
}
}
return CRC8;
// reset CRC8
// data loop
// get first data byte
// test bit 0 of (OneWire.Data XOR CRC8)
// toggle bits 3 and 4 of CRC8
// rotate right CRC8, 1 time
// set bit 7 of CRC8
// rotate right CRC8, 1 time
- 44 –
// calc 8 bit CRC