Hexadezimal Rechnung (checksum) nachvollziehen

Gast #2354848
Lesenswert?

Hallo Leute,

könntet ihr mir bitte helfen, eine kleine Rechnung nachzuvollziehen?

In diesem http://www.crustcrawler.com/motors/RX64/docs/RX-64_Manual.pdf 
Datenblatt steht auf s.18, wie man die Checksumme ausrechnet (alle 
gesendeten bytes addieren und anschließend die NOT operation darauf 
anwenden), dabei gibt es eine Besonderheit, wenn sie 0xFF überschreitet.
Dann soll man nämlich nur das untere byte nehmen und die NOT Operation 
darauf anwenden.

Das Beispiel sieht folgendermaßen aus:
Check Sum = ~ ( ID + Length + Instruction + Parameter1 + … Parameter 3 )
= ~ [ 0x01 + 0x05 + 0x03 + 0x0C + 0x64 + 0xAA ]
= ~ [ 0x123 ] // Only the lower byte 0x23 executes the Not operation.
= 0xDD


Meiner Rechnung nach ist ~0x23 aber 0xDC...
Soll ich jetzt die 1 zu 0xDC addieren oder wie? Davon steht aber nix im 
Datenblatt...
#2354894
Lesenswert?

hexabini schrieb:
> dabei gibt es eine Besonderheit, wenn sie 0xFF überschreitet.
> Dann soll man nämlich nur das untere byte nehmen und die NOT Operation
> darauf anwenden.

Naja. Ich würde des ganze auf eine 8bit-Variable addieren und diese dann 
negieren(erspart das "abschneiden, wenn" usw.).

Mit dem (~0x23 == 0xDC) hast du natürlich recht.

Sie meinen nicht die Negation, sondern das Zweierkomplement. Das 
Zweierkomplement von 0x23 ist 0xDD. Dann wäre die Tilde "~" falsch und 
es müsste ein Minus “-“ da stehen.

Ich schau mir mal kurz das pdf an.
mfg mf
#2354901
Lesenswert?

Also die Beispiele auf den Seiten 33, 34, 36 und 37 bestätigen die 
Vermutung mit dem Zweierkomplement.
Einfach alles in eine 8bit-Variable rein Addieren, minus davor und als 
letztes Byte "raus pusten".
mfg mf

PS: Auf Seite 19 steht was von einem Error-Bit in einer zurückgesendeten 
Statusnachricht. Das soll gesetzt sein, wenn was mit der Checksumme 
nicht hingehauen hat. Kannst das ja damit mal testweise "debuggen" und 
sehen, welche Rechenvorschrift jetzt richtig ist.
Die Checksumme der Rückantwort muss dich ja zunächst nicht 
interessieren, da man im Betrieb im Labor von einer sicheren Übertragung 
ausgehen kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren