mikrocontroller.net

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


Autor: Christian Kreuzer (christian_rx7) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...?

Autor: Christian Kreuzer (christian_rx7) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kommst du auf 38?

Autor: Christian Kreuzer (christian_rx7) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Christian

Autor: Christian Kreuzer (christian_rx7) Benutzerseite
Datum:

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

Danke für die Hilfe.
Christian

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C7 + 38 = FF
C7 = Not 38

Na, merkst du was?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.