Hallo, kann mir bitte jemand helfen einen CRC-8 mit Startwert zu berechen. Folgendes habe ich, ohne Startwert verstanden: Polynominal(Grad8): 0x107 -> 100000111 Data: 0x05C -> 01011100 Initial value: 0x000 XOR Value: 0x000 0101110000000000 000000000 101110000 100000111 111011100 100000111 110110110 100000111 101100010 100000111 110010100 100000111 10010011 -> Rest -> 0x93 Vergleiche ich das Ergebnis auf http://www.sunshine2k.de/coding/javascript/crc/crc_js.html bekomme ich ebenfalls 0x93 heraus. Jetzt möchte ich den CRC mit Startwert berechnen: Mit Startwert Polynominal(Grad8): 0x107 -> 100000111 Data: 0x05C -> 01011100 Initial value: 0x0FF XOR Value: 0x000 111111110101110000000000 100000111 111110011 100000111 111101000 100000111 111011111 100000111 110110001 100000111 101101101 100000111 110101000 100000111 101011110 100000111 101100100 100000111 110001100 100000111 100010110 100000111 01000100 -> Rest -> 44 Kann nicht sein! Laut http://www.sunshine2k.de/coding/javascript/crc/crc_js.html ist der CRC gleich 0x60. Was mache ich bei der berechnung mit Startwert falsch?
Ok ich habe die selbe Rechnung im Anhang gepackt, weil die Rechnung verrutscht ist.
ich lasse mir die CRC immer durch eine kleine C-Funktion berechnen, keine Ahnung wie du auf die bits kommst
Bevor du die Polynom Divison startest, musst du einfach die Daten mit den Initialwert xor Verknüpfen dann kommtst du auf gleiche Ergebniss.
Hallo, ich muss dieses Thread noch einmal ausgraben. Wenn ich die Zahl 0x5C habe und das Polynom 0x07 ist, dann soll da 0x93 als CRC herauskommen. Kann mir jemand die händischen Schritte zeigen? Ich komme nie auf 0x93. Gruß Holger
http://www.sunshine2k.de/coding/javascript/crc/crc_js.html Custom Polynomial 0x7 Data 0x5C Kommt auf Result CRC value: 0x93 Da ist eine Lookup table. Ob das so hilf?
Hallo, mein Fehler war, dass ich mit 111 dividiert habe. Nach dem durchforsten der Seite http://www.sunshine2k.de/articles/coding/crc/understanding_crc.html fand ich dann diesen Hinweis: A CRC-8 with polynomial 0x07 is actually the value 100000111 = 1*x8 + 0*x7 + 0*x6 + 0*x5 + 0*x4 + 0*x3 + 1*x2 + 1*x1 + 1*x0. Damit klappt es dann auch. Also acht Nullen angehängt und dann immer XOR. Am Ende kommt dann 10010011 also 0x93 heraus. Auf einem 8-Bit µC werde ich dann wohl eine Lookup-Tabelle verwenden. Gruß Holger
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.