www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Checksummenbildung bei μC


Autor: Christoph Papp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich muss eine serielle Datenübertragung eines HC908 realisieren und die
Datenmenge wäre recht umfangreich. Der parity-check ist damit ziemlich
laufzeitsteigernd.Also hab ich mir gedacht ich bilde eine Checksumme im
μC und schicke die mit, wenn sie nicht stimmt soll das ganze
Datenpaket nochmal geschickt werden. Kennt jemand hier verschiedene
checksum-Algorithmen oder eine gute Seite zu dem Thema?

MfG

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

CRC ist hier das Mittel der Wahl
http://de.wikipedia.org/wiki/Cyclic_Redundancy_Check

Matthias

Autor: Christoph Papp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So nebenbei, ich hab damit noch absolut keine Erfahrung!!!
Das Problem dabei ist, dass mein Datenblock 512 Bytegroß ist. Die
Checksumme müsste im uC gebildet werden, dann mit an den Rechner
geschickt und dann entschieden werden, ob der Datenblock nochmal
geschickt werden soll. Ich weiß nicht, ob da CRC die beste Wahl wäre.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

das kommt drauf an. CRC wird durchaus bei großen Datenblöcken verwendet
-> siehe IP.

Allerdings bietet CRC nur eine recht hohe Wahrscheinlichkeit für die
Entdeckung von Fehlern. Garantieren kann dir niemand ob nicht doch
Daten verändert wurden.

Matthias

Autor: kryon2000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nim doch einfach 2 Bytes als Checksumme, addiere jedes Byte mit der
checksumme(überlauf ist ja völlig egal). Dann sendest du die 512 byte
und die 2 byte Checksumme.

also so

chksumme = 0x0000
1. byte0 +chk -> chk
2. byte1 +chk -> chk
...
512. byte511 +chk -> chk

und fertig

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

CRC ist wesentlich besser als simple Prüfsummen da die
Wahrscheinlichkeit für die Entdeckung von Fehlern deutlich höher ist.
Genau deshalb verwendet man ja CRC und keine simplen Prüfsummen.

Matthias

Autor: Christoph Papp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi

die Frage ist aber, ob der 68HC908 das schafft und ob das für die
Anwendung nich n bisschen aufwendig ist. Die Datenblöcke wären ja bloß
zwischen 200 und 512 Byte groß: mehr geht vom momentanen Programm
nicht. Ich dacht halt es gibt spezielle Algorithmen zur checksum auf
uC.

Danke

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, die gibt es!
Zum Beispiel CRC8, CRC16, ...

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.