CRC Fragen
-
Hallo
Ich hätte ein paar Fragen zu CRC 8 bzw einen C Quellcode dazu.
Nun wie CRC Funktioniert weiß ich schon nur verstehe ich den Code die Fragen findet ihr in den Kommentaren.
Folgende C funktion er libc:
uint8_t _crc_ibutton_update(uint8_t crc, uint8_t data) { uint8_t i; /* Das hier exklusiv oder ist nötig fals bereits ein Rest bei der Polynomdiv besteht nur warum XOR und was bewirkt es.? */ crc = crc ^ data; for (i = 0; i < 8; i++) { /* Warum wird hier aufs erste und nicht aufs letzte Bit abgefragt */ if (crc & 0x01) crc = (crc >> 1) ^ 0x8C; /* Warum wird hier vor der Polynom div (xor) das crc nach rechts geschoben? damit verliere ich ja das vorher abgefrage bit */ else crc >>= 1; /* und warum überhaupt nach rechts schieben? */ } return crc; }
Danke schon im Voraus für die Hilfe.
Lg, miker
-
^^wahrscheinlich gehts auch umgekehrt also mit rechts- statt links-shifts (und nem invertierten generatorpolynom). dass bits dabei verschwinden ist normal. man will ja am schluss nur den rest der polynomdivision (crc-wert) haben. bau den code doch mal mit links-schiebereien. vielleicht kommt ja das selbe raus?