Hallo,wider nach etlichen jahren nur mitlesen:
ich hab ein problem, bei mir funktioniert die selbstgeschreibene CRC funktion nicht.
Ich poste mal den Code und bitte mal den Code zu überlesen, ich find einfach den fehler nicht.
Code:
#define CRC8POLY 0x99
//die CRC funktion von oneWire vll. wird es ausgelagert.
uint8_t oneWireCrc(uint8_t *datastream , uint8_t Anzahlbytes)
{
    uint8_t i,crc8=0,tmp=datastream[0];
    for (i = 0; i < (Anzahlbytes*8); ++i) {
        if (((crc8 & 0x80) ? 1 : 0) != (tmp&0x01))//TODO dieses kontrollieren
            crc8 = (crc8 << 1) ^ CRC8POLY;
        else
            crc8 <<= 1;
        tmp=(tmp<<1)|((datastream[i/8]<<(i%8))&(1<<8));//TODO dies kontrollieren
    }
    return tmp;
}
Danke an alle die mein miststück von Code lesen und vll. den Fehler finden, und ja es ist eine Abwandlung von Wikipedia.