www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Forward / Reverse CCITT(CRC) ??


Autor: Gerd Kahlbach (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo @

kennt jemand den Unterschied zwischen der Forward und Reverse CCITT
(CRC mit Polynom x^16 + x^12 + x^5 + 1)? Kann sich jemand
vorstellen,mit welchem Polynom die mit CRC-16 gekennzeichneten Felder
berechnet wurden?

Gruß und Dank schonmal

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gerd,

auch wenn Polynom und Startwert festgelegt sind, gibt es immer noch
etliche Wege der Berechnung. So kann man die zu prüfenden Daten
vorwärts oder rückwärts behandeln. Ebenso kann man das Polynom rechts
oder links herum rotieren. Das gibt dann natürlich unterschiedliche
Ergebnisse.

Woher stammt dein crc.pdf Dokument? Ist das ein Screenshot von einem
Programm? Wo gibt es dieses Tool? Ich habe schon bei TI auf der Seite
gesucht, aber nix gefunden. Kannst Du mir da einen Tipp geben?

Gruß,
Markus_8051

Autor: Gerd Kahlbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann Dir schicken wenn Du willst.
An Deine gmx?

Gruß

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, gerne, an die GMX-Adresse.

Ich habe nämlich auch oft schwierigkeiten, wenn es darum geht, den
richtigen Algorythmus für die CRC zu finden. Und dieses Tool sieht so
aus, als ob man damit ein paar Möglichkeiten ausprobieren könnte.

Gruß und danke schon mal,

Markus_8051

Autor: Gerd Kahlbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

kennt jemand den Algorithmus für
den Reverse CCITT, bzw. Doku darüber?


Gruß

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gerd,

Ich habe es nachgerechnet.

CRC-16  -> x^16 + x^15 + x^2 + 1
CCITT   -> x^16 + x^12 + x^5 + 1

Forward CRC:

- MSB der Datenbytes zuerst
- CRC-Schieberegister in Richtung MSB (nach links) schieben
- normale Polynommaske verwenden (0x8005/0x1021)

Reverse CRC:

- LSB der Datenbytes zuerst
- CRC-Schieberegister in Richtung LSB (nach rechts) schieben
- bitgedrehte Polynommaske verwenden (0xA001/0x8408)

Gruß Thomas

Autor: Gerd Kahlbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

Danke für die Info, ich probier' s gleich mal aus.

Hast du die Rechnung da, könnte ich da mal draufschauen??


Grüße Gerd

Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gerd,

Die Berechnungen stehen im Dateianhang.

Die Reverse-CRC kann man übrigens auch vorwärts berechnen, man
fängt dann mit dem LSB der Datenbytes anstatt dem MSB an und
verwendet das bitgedrehte Ergebniss der kompletten Berechnung.
Dieses Austauschen der Bits spart man durch das Reverse-Verfahren,
die CRC wird bereits bitgedreht berechnet.

Aber wozu das ganze überhaupt ?

CRC ist eigentlich immer MSB-first. Damit ergeben sich aber
Probleme wenn bei der Übertragung eines Bytes das LSB zuerst
dran ist. Dann würden die CRC-Bits in der falschen Reihenfolge
am Ziel ankommen.

In dieser Reihenfolge sollen sie ankommen :

        1. Byte                   2. Byte
15 14 13 12 11 10 09 08 - 07 06 05 04 03 02 01 00

Aber so würden sie ankommen :

        1. Byte                   2. Byte
08 09 10 11 12 13 14 15 - 00 01 02 03 04 05 06 07

Das Reverse Verfahren berechnet sie so :

        1. Byte                   2. Byte
00 01 02 03 04 05 06 07 - 08 09 10 11 12 13 14 15

Vor dem Senden vertauscht man die beiden Bytes :

        1. Byte                   2. Byte
08 09 10 11 12 13 14 15 - 00 01 02 03 04 05 06 07

Jetzt kommen sie wieder richtig an :

        1. Byte                   2. Byte
15 14 13 12 11 10 09 08 - 07 06 05 04 03 02 01 00


Gruß Thomas

Autor: Gerd Kahlbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh man, Thomas,

ich weiß garnicht wie ich das wieder gut machen kann!!!
Hab vielen Dank für Deine aufopferungsvolle Hilfe.  :)

Viele Grüße
Gerd

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.