crc8 berechnen

Gast #1042367
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 ?
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.