Moin,
ich bin gerade dabei mir einen Generator/Tester für
CRC-Tabellen/Polynome zu basteln (In AutoIt) und bin dabei irgednwie auf
wiedersprüchliche informationen gestoßen.
Ich habe eine CRC-Tabelle für das Polynom x8+ x5+ x3+ x2+ x1+ x0: 1 | 00, 2F, 5E, 71, BC, 93, E2, CD,
| 2 | 57, 78, 09, 26, EB, C4, B5, 9A...
|
Diese ist bereits im Einsatz und funktioniert auch mit Geräten die nicht
von mir programmiert wurden. Von da geh ich mal davon auß, dass diese
stimmt.
Mit dieser Funktion bekomme ich auch genau diese Tabelle raus
(for-schleife 0-255): 1 | Func MakeCRC_X853210($BitString)
| 2 |
| 3 | Local $CRC[8]=[0,0,0,0,0,0,0,0]
| 4 | Local $i;
| 5 | Local $Invert;
| 6 | for $i=0 to (UBound($BitString)-1) step 1
| 7 |
| 8 | $Invert = BitXOR(($BitString[$i]),$CRC[7])
| 9 |
| 10 | $CRC[7] = $CRC[6]
| 11 | $CRC[6] = $CRC[5]
| 12 | $CRC[5] = BitXOR($CRC[4], $Invert)
| 13 | $CRC[4] = $CRC[3]
| 14 | $CRC[3] = BitXOR($CRC[2], $Invert)
| 15 | $CRC[2] = BitXOR($CRC[1], $Invert)
| 16 | $CRC[1] = BitXOR($CRC[0], $Invert)
| 17 | $CRC[0] = $Invert ; Übertrag 8
| 18 | Next
| 19 | return($CRC)
| 20 | EndFunc
|
Deckt sich auch mit dem was hier berechnet wird:
http://ghsi.de/CRC/index.php?Polynom=100101111&Message=128%0D%0A%0D%0A%0D%0A
Für das Polynom
x8+x5+x4+1
Sollte der Code also so aussehen: 1 | Func MakeCRC_X853210($BitString)
| 2 |
| 3 | Local $CRC[8]=[0,0,0,0,0,0,0,0]
| 4 | Local $i;
| 5 | Local $Invert;
| 6 | for $i=0 to (UBound($BitString)-1) step 1
| 7 |
| 8 | $Invert = BitXOR(($BitString[$i]),$CRC[7])
| 9 |
| 10 | $CRC[7] = $CRC[6]
| 11 | $CRC[6] = $CRC[5]
| 12 | $CRC[5] = BitXOR($CRC[4], $Invert)
| 13 | $CRC[4] = BitXOR($CRC[3], $Invert)
| 14 | $CRC[3] = $CRC[2]
| 15 | $CRC[2] = $CRC[1]
| 16 | $CRC[1] = $CRC[0]
| 17 | $CRC[0] = $Invert
| 18 |
| 19 | Next
| 20 | return($CRC)
| 21 | EndFunc
|
Die Tabelle die da rauskommt schaut dann so aus: 1 | 0x00, 0x31, 0x62, 0x53, 0xC4, 0xF5, 0xA6, 0x97,
| 2 | 0xB9, 0x88, 0xDB, 0xEA, 0x7D, 0x4C, 0x1F, 0x2E,
|
Was aber irgendwie keine ähnlichkeit hat mit der Tabelle von
Dallas/Maxim
die z.B. hier rumgeistert, die aber das selbe Polynom verwenden soll...:
Beitrag "CRC8 / OneWire Frage"
Was stimmt denn nun?
Die Werte aus der Tabelle von Dallas passen auch nicht zu dem
CRC-Cecker-link von oben..
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
|