Forum: Mikrocontroller und Digitale Elektronik Querparität (Checksumme) in Bascom berechnen


von Christian K. (christian_rx7) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo.

Ich bin gerade dabei mich mit dem KNX TP-UART IC von Siemens zu 
befassen, soweit schaut mein Bascom Programm schon ganz gut aus, 
allerdings hänge ich an einer Kleinigkeit:
Ich habe ein Byte Array mit variabler Länge (9-23 Byte) in dem das 
Empfangene Telegramm zwischengespeichert wird.
Nun muss ich mit allen Bytes ein XOR machen, damit ich die Checksumme 
bekomme, wie mache ich das?
Die CRC8 Funktion liefert einen anderen Wert und Bascom kann bei einer 
Logikfunktion immer nur zwei Eingangsvariablen verarbeiten.
Meine Idee wäre von allen Bytes immer an der gleichen Stelle die „1“ zu 
zählen und wenn das Ergebnis eine gerade Zahl ergibt, schreibe ich an 
die CRC Stelle eine 1, diese Berechnung ist aber aufwändig zu 
programmieren, gibs da nicht einen einfacheren Weg?

Es geht um das im Anhang befindliche Prüfbyte (Querparität)

Danke für Tipps,
Christian

von Sven P. (Gast)


Lesenswert?

Christian Kreuzer wrote:
> Nun muss ich mit allen Bytes ein XOR machen, damit ich die Checksumme
> bekomme, wie mache ich das?
> Die CRC8 Funktion liefert einen anderen Wert und Bascom kann bei einer
> Logikfunktion immer nur zwei Eingangsvariablen verarbeiten.

Der Rechenoperator '+' kann auch nur zwei Variablen verarbeiten. Und wie 
rechneste da dann '1 + 2 + 3' aus...?

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Da kommt aber dann was anderes heraus:
Zum Beispiel (alles in HEX)
BC xor 11 xor 02 xor 09 xor 01 xor E1 xor 00 xor 81 ergibt in Bascom C7
sollte aber 38 sein.

Christian

von Sven P. (Gast)


Lesenswert?

Wie kommst du auf 38?

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Hallo,

ich sehe es gerade, das mit dem XOR ist Blödsinn, es geht rein um die 
Parität.

Christian

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Hab eine Lösung.
Eine bitweise Addition ohne Überträge bringt das gewünschte Ergebnis.

Danke für die Hilfe.
Christian

von gast (Gast)


Lesenswert?

C7 + 38 = FF
C7 = Not 38

Na, merkst du was?

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.