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?
    🙂


Anmelden zum Antworten