Ich bin leider absolut kein Mathe-Freak. Insofern habe ich einiges an Verständnisschwierigkeiten beim Thema CRC8 berechnen. Das Netz ist zwar voll von Hinweisen, aber leider komme ich nicht ganz hin. Ich habe hier eine superkurze Anleitung wie die Kommunikation mit einem Gerät ablaufen soll. "Checksum8 is an 8bit checksum as it is utilized by varoius chip manufacterets ( with the polynomial x^8+x^5+x^4+1, bit reversion for data and remainder, initialized with 0xff)" Mehr habe ich nicht. Es beginnt schon mit dem Verständnis für das Polynom. Wie mir scheint, aknn man hier alles mögliche einsetzen, manche Werte sind aber wohl besser geeignet. Für CRC8 finde ich immer wieder den Wert 0x07 als Polynom. Passt dies zu der o.g. Anweisung ? Ich ätte jetzt gedacht, es müsste 49dez sein - aber was soll dann das x^8 ? Wenn ich einige Webseiten so anschaue, dann scheint ein x^8 oder x^16 (bei CRC16) einfach weggelassen zu werden. Aber man wird ja nicht einfach das höchstwertige Bit unterschalgen , oder ? Unter www. miscel.dk/miscel findet man ein Programm mit dem man tatsächlich crc8-Werte zum testen berechnen kann. Dazu gehören aber noch einige andere Werte. Initial: dürfte dem 0xff in der Anweisung entsprechen Alt: ? final xor: ? Polynom: müsste hier 49dez rein ? Kann mir jemadn helfen ?
Gehört eigentlich nicht in diese Forum, habs mal gemeldet vieleicht verschiebt es ein Freundlicher Moderator. http://de.wikipedia.org/wiki/Cyclic_Redundancy_Check erklärt das generelle Vorgehen + Beispiel in C vieleicht hilft dir das? Da wird auch erklärt wie das Polynom zustande kommt.
Zurueck zur urspruenglichen Frage: > manufacterets ( with the polynomial x^8+x^5+x^4+1, bit reversion for >besser geeignet. Für CRC8 finde ich immer wieder den Wert 0x07 als >Polynom. Passt dies zu der o.g. Anweisung ? nein. > Ich ätte jetzt gedacht, es > müsste 49dez sein - 49dez = 110001 = x^5 + x^4 + 1 BRAVO! Passt! > aber was soll dann das x^8 ? Wenn das 8.te Bit gesetzt wird, also 1.abcd.efgh (a..h E {0,1}) xored man mit 1.0011.0001 (=x^8 + x^5 + x^4 + 1), d.h. Bit8 wird durch das XOR 0. Wenn es sowie die "meiste" Zeit "0" ist, und man lediglich bei einer Schiebeoperation aufpassen muss, reicht ein Byte. Ein Programm, das mit 9 Bit hantiert und eine darauffolgende (leichte) Optimierung macht Dir die Antwort auf die Frage glasklar. > Wenn ich einige >Webseiten so anschaue, dann scheint ein x^8 oder x^16 (bei CRC16) >einfach weggelassen zu werden. Aber man wird ja nicht einfach das >höchstwertige Bit unterschalgen , oder ? s.o. >Unter www. miscel.dk/miscel findet man ein Programm mit dem man >tatsächlich crc8-Werte zum testen berechnen kann. >Dazu gehören aber noch einige andere Werte. Den 10 Zeiler bekommst Du in 30 Minuten selbst hin! Aufpassen wie laut Spec. die Daten reinkommen, d.h. LSB first oder MSB first. -Hans
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.