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
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.