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.
Jetzt aber
ich lasse mir die CRC immer durch eine kleine C-Funktion berechnen, keine Ahnung wie du auf die bits kommst
Dein Beitrag ist nicht wirklich hilfreich
Bevor du die Polynom Divison startest, musst du einfach die Daten mit den Initialwert xor Verknüpfen dann kommtst du auf gleiche Ergebniss.
Hier sind mal ein paar Beispiel Rechnungen. ;) Gruß Tiger
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 = 1x8 + 0x7 + 0x6 + 0x5 + 0x4 + 0x3 + 1x2 + 1x1 + 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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.