mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CRC-8: Problem mit Berechnen


Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Also ich weiß, dass es hier viele Threads gibt, die sich mit dem Thema
CRC-8 befassen aber ich hab leider nix gefunden, was mich wirklich
weiterbringt.

Folgendes Problem:

Hier wird für Hexadezimale Messages eine CRC 8 Checksumme erstellt und
ich soll schaun ob die richtig berechnet wird.
Generatorpolynom ist x^8+x^2+x+1 (Ist Standard glaub ich)
z.B.

83 60 00 64 64    Checksumme ==> 0x91 (145dec)
93 60 00 64 64    Checksumme ==> 0x69 (105dec)
A3 60 00 64 64    Checksumme ==> 0x66 (102dec)

usw hoffe die drei Messages reichen euch.

Da ich mit diesem Polynom beim Nachrechnen nicht auf die entsprechende
Checksumme gekommen bin hab ich mal in den Quellcode geschaut und
gesehen, dass das Generatorpolynom mit 0x83 angegeben ist also
1000.0011 binär. (statt 1.0000.0111 für x^8+x^2+x+1) Auf Nachfrage hab
ich erfahren, dass die rechte eins schon "fest" in den Code eingebaut
ist, also intern wirklich mit 0x107 der CRC berechnet wird. Problem ist
nur, dass ich immernoch nicht auf die entsprechende Checksumme komme,
weder mit 0x83 noch mit 0x107 gerechnet. (Quellcode darf ich leider
nicht posten :/ ) Was ich jetzt gerne von euch wissen würde, ob es noch
andere Möglichkeiten gibt den CRC-8 zu berechnen als der "normale"
Weg. Hab gelesen, dass es auch Reverse CCITT (oder so ähnlich) gibt
usw., allerdings war alles im Zusammenhang mit CRC16. Der normale Weg
ist für mich der, wie er hier zum Beispiel erklärt wird.

http://de.wikipedia.org/wiki/Zyklische_Redundanzpr%C3%BCfung

Wie gesagt welche Möglichkeiten gibt es noch mit Bitdrehung etc. CRC-8
zu berechnen? Oder sieht jemand anhand der Checksumme was da
schiefläuf? ;)

Vielen Danke schon mal

Marco

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guck mal bei Maxim, die haben für einen Ihrer Temperatursensoren eine
Application-Note, in der sie CRC verwenden. Nach dieser habe ich meine
eigenen CRC-Funktionen geschrieben.
Dann kannst du deinen Quellcode mit deren Code vergleichen.

Gruß Ralf

Autor: basti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sehr effektiv ist auch folgendes:

erst alle bytes addieren (dafür wirst du ein word brauchen)

dann das word mod 255
dann 255-ergebniss der vorherigen operation...

so mache ich es immer...

Autor: Thomas J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marco,

Ich habe die Beispiele mal nachgerechnet. Berechnet wird das
ganze LSB-first (Reverse), die CRC wird mit 0 initialisiert.
Als Polynommaske habe ich 0x83 verwendet.

Das sind die Zwischenergebnisse der 3 Beispiele:

83 60 00 64 64 = 91

1. Byte (83): 83-41-A3-D2-69-B7-D8-EF
2. Byte (60): F4-7A-3D-9D-CD-66-B0-58
3. Byte (00): 2C-16-0B-86-43-A2-51-AB
4. Byte (64): D6-6B-35-99-CF-67-33-9A
5. Byte (64): 4D-A5-52-29-97-4B-25-91

93 60 00 64 64 = 69

1. Byte (93): 83-41-A3-D2-EA-75-B9-5C
2. Byte (60): 2E-17-88-44-22-92-CA-65
3. Byte (00): B1-DB-EE-77-B8-5C-2E-17
4. Byte (64): 88-44-A1-D3-EA-F6-F8-7C
5. Byte (64): 3E-1F-0F-84-42-A2-D2-69

A3 60 00 64 64 = 66

1. Byte (A3): 83-41-A3-D2-69-34-1A-8E
2. Byte (60): 47-A0-50-28-14-89-44-22
3. Byte (00): 11-8B-C6-63-B2-59-AF-D4
4. Byte (64): 6A-35-1A-0D-85-42-A2-51
5. Byte (64): AB-D6-E8-74-3A-9E-CC-66


Gruß Thomas

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.