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...
Meint vielleicht der "~"-Operator das Bilden des 2er-Komplements? Das wäre nämlich dein 0xDD... Also bitweise negieren und 1 addieren. MfG Marius EDIT: 2er-Komplement würde Sinn machen, da man so zum prüfen alle Bytes einfach addieren kann und es sollte 0 rauskommen...
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
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.
Jo, das wirds wohl sein. Danke für die schnelle Antwort
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.