Forum: Mikrocontroller und Digitale Elektronik Checksummenbildung bei μC


von Christoph Papp (Gast)


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

von Matthias (Gast)


Lesenswert?

Hi

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

Matthias

von Christoph Papp (Gast)


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.

von Matthias (Gast)


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

von kryon2000 (Gast)


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

von Matthias (Gast)


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

von Christoph Papp (Gast)


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

von OldBug (Gast)


Lesenswert?

Ja, die gibt es!
Zum Beispiel CRC8, CRC16, ...

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
Noch kein Account? Hier anmelden.