Forum: Compiler & IDEs Checksumme berechnen?


von Markus (Gast)


Lesenswert?

Hallo zusammen,

ich will einen grafikrechner (CASIO cfx-9850gb+) per USART an einen 
ATmega8 anbinden. Prinzipiell funktioniert die Übertragung einer 
Variablen auch schon, allderings fehlt mir noch eine Möglichkeit zur 
berechnung der Checksumme am Ende eines zu sendenen Datenblocks. Ein 
Datenblock sieht z.B. so aus (Alle Werte in Hex):

3A 00 01 00 01 01 50 00 00 00 00 00 00 01 01 AB

Das letzte Byte, also AB, ist die Checksumme. Sie berechnet sich 
folgendermaßen:

Alle Bytes des Datenblocks (inklusive der Checksumme) werden addiert und 
anschließend durch 256 geteilt. Der Rest (Modulo) dieser Division muss 
0x3A sein.

Allerdings habe ich keine Ahnung, wie ich das am besten in einen C-Code 
umsetze. Für Hilfe wäre ich sehr dankbar.

mfg Markus

von Roland P. (pram)


Lesenswert?

Aller Werte bis auf checksum in einer Byte-Variable addieren und dann 
das Ergebnis von 3A abziehen. Pseudocode:

byte checksum=0
forall Werte as wert do
  checksum += wert
done
checksum = 0x3A - checksum

... gerade mit windows Taschenrechner geürüft
Gruß
Roland

von Markus (Gast)


Lesenswert?

Thx, funktioniert wunderbar :-)

mfg Markus

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.