Prüfsummen wie CRC-8 codieren und encodieren
Prüfsummen wie CRC-8 codieren und encodieren
Ich würde gern von einer Zeichenkette die Prüfsumme im CRC-8 Code ermitteln und den Wert am Ende der Zeichenkette mit anhängen.
Umgekehrt sollte es möglich sein, eine Zeichenkette mit CRC-8 Code am Ende zu prüfen und bei falscher Summe einen "Error"-Ausgang auf High zu setzen.
Kann mir da jemand helfen?
Umgekehrt sollte es möglich sein, eine Zeichenkette mit CRC-8 Code am Ende zu prüfen und bei falscher Summe einen "Error"-Ausgang auf High zu setzen.
Kann mir da jemand helfen?
Re: Prüfsummen wie CRC-8 codieren und encodieren
Ich lege ins nächste Update eine Komponente, die eine CRC-1 bis CRC-32 Prüfsumme aus einem String berechnet.
Das Prüfen bzw. Anhängen kann man wohl besser selbst erledigen.
Zur Lektüre empfehle ich schon einmal...
http://zorc.breitbandkatze.de/crc.html
http://de.wikipedia.org/wiki/CRC
Das Prüfen bzw. Anhängen kann man wohl besser selbst erledigen.
Zur Lektüre empfehle ich schon einmal...
http://zorc.breitbandkatze.de/crc.html
http://de.wikipedia.org/wiki/CRC
ABACOM support
Re: Prüfsummen wie CRC-8 codieren und encodieren
- Das Update 23.11.2011 lädt gerade hoch.
- Beispiel zur CRC: Datei->Beispiele (...)\Neue_Funktionen\CRC.PRJ
- Beispiel zur CRC: Datei->Beispiele (...)\Neue_Funktionen\CRC.PRJ
ABACOM support
Re: Prüfsummen wie CRC-8 codieren und encodieren
Danke für die schnelle Entwicklung dieses Bausteins.
Leider habe ich erst vor kurzem erfahren, dass wir mit dem CRC-8 (Dallas/Maxim 1-Wire Bus) arbeiten müssen.
Ist das auch möglich bzw. könnte man den Baustein damit ausstatten, dass man in den Einstellungen das Polynom aus der Tabelle welche bei Wikipedia steht eintragen kann?
Leider habe ich erst vor kurzem erfahren, dass wir mit dem CRC-8 (Dallas/Maxim 1-Wire Bus) arbeiten müssen.
Ist das auch möglich bzw. könnte man den Baustein damit ausstatten, dass man in den Einstellungen das Polynom aus der Tabelle welche bei Wikipedia steht eintragen kann?
Re: Prüfsummen wie CRC-8 codieren und encodieren
In meinem Fall wäre das x hoch 8 + x hoch 5 + x hoch 4 + 1
Re: Prüfsummen wie CRC-8 codieren und encodieren
Der Baustein hat einen "Polynom"-Eingang.
Rechen muss man selbst:
CRC - Der Cyclic Redundancy Code
Die CRC-Pruefsumme (== Cyclic Redundancy Code) basiert darauf, dass man Bitstring (also Folgen von 0 und 1) als Polynome mit den Koeffizienten 0 und 1 interpretiert. Bei k Bits hat man also k Terme, von x^(k-1) bis x^0.
Beispiel:
Im diesem Polynomwert sind also die Bits B0, B4 und B5 gesetzt:
Polynom = 110001bin = 31 hex = 49 dez
(Der "Windows-Taschenrechner leistet hier gute Dienste.)
http://www-stud.rbi.informatik.uni-fran ... e/crc.html
Ausserdem: Ich kann mir keine Anwendung vorstellen,
bei der ProfiLab selbst die Prüfsumme des 1-Wire-Protokolls auswerten oder generieren müsste.
Was haben Sie vor?
Rechen muss man selbst:
CRC - Der Cyclic Redundancy Code
Die CRC-Pruefsumme (== Cyclic Redundancy Code) basiert darauf, dass man Bitstring (also Folgen von 0 und 1) als Polynome mit den Koeffizienten 0 und 1 interpretiert. Bei k Bits hat man also k Terme, von x^(k-1) bis x^0.
Beispiel:
Code: Alles auswählen
5 4 0
110001 -> x + x + x
Polynom = 110001bin = 31 hex = 49 dez
(Der "Windows-Taschenrechner leistet hier gute Dienste.)
http://www-stud.rbi.informatik.uni-fran ... e/crc.html
Bei CRC8 kann doch wohl maximal "X HOCH 7" vorkommen, oder?"x hoch 8 + x hoch 5 + x hoch 4 + 1"
Ausserdem: Ich kann mir keine Anwendung vorstellen,
bei der ProfiLab selbst die Prüfsumme des 1-Wire-Protokolls auswerten oder generieren müsste.
Was haben Sie vor?
ABACOM support
Re: Prüfsummen wie CRC-8 codieren und encodieren
Also:
Wir wollen damit mehrere in einem Ring verschaltete AVR-µC ansteuern. (Wir machen das Ansteuern alternativ auch mit einem AVR-µC.)
Mein Kollege hat für diesen Zweck ein Protokoll entwurfen, bestehend aus 18 Zeichen (10 Adress- und 8 Steuerzeichen).
Am Ende dieser Zeichenkette werden die 2 Prüfzeichen von der CRC-8 Prüfung aus den 18 Zeichen angehängt.
(Zur Zeit der Protokollentwicklung war ich leider im Krankenhaus )
(Soll wohl dem Zweck für mehr Übertragungssicherheit dienen)
Im Programm der AVR-µC wird für die Auswertung die Funktion aus BASCOM-AVR
Function Docrc8(s As String) As Byte
Dim j As Byte
Dim k As Byte
Dim crc8 As Byte
crc8 = 0
For m = 1 To Len(s)
x = Asc(Mid(s, m, 1))
For k = 0 To 7
j = 1 And (x Xor crc8)
crc8 = Fix(crc8 / 2) And &HFF
x = Fix(x / 2) And &HFF
If j <> 0 Then
crc8 = crc8 Xor &H8C
End If
Next k
Next
Docrc8 = crc8
End Function
genutzt.
Wir wollen damit mehrere in einem Ring verschaltete AVR-µC ansteuern. (Wir machen das Ansteuern alternativ auch mit einem AVR-µC.)
Mein Kollege hat für diesen Zweck ein Protokoll entwurfen, bestehend aus 18 Zeichen (10 Adress- und 8 Steuerzeichen).
Am Ende dieser Zeichenkette werden die 2 Prüfzeichen von der CRC-8 Prüfung aus den 18 Zeichen angehängt.
(Zur Zeit der Protokollentwicklung war ich leider im Krankenhaus )
(Soll wohl dem Zweck für mehr Übertragungssicherheit dienen)
Im Programm der AVR-µC wird für die Auswertung die Funktion aus BASCOM-AVR
Function Docrc8(s As String) As Byte
Dim j As Byte
Dim k As Byte
Dim crc8 As Byte
crc8 = 0
For m = 1 To Len(s)
x = Asc(Mid(s, m, 1))
For k = 0 To 7
j = 1 And (x Xor crc8)
crc8 = Fix(crc8 / 2) And &HFF
x = Fix(x / 2) And &HFF
If j <> 0 Then
crc8 = crc8 Xor &H8C
End If
Next k
Next
Docrc8 = crc8
End Function
genutzt.
Re: Prüfsummen wie CRC-8 codieren und encodieren
So jetzt funktionierts auch.
Danke nochmal für die verständliche Erklärung.
Danke nochmal für die verständliche Erklärung.
Re: Prüfsummen wie CRC-8 codieren und encodieren
Für einen Moment dachte ich schon Sie wollten das ganze ohne µ-Controller machen.
Aber so ist ja alles bestens.
Aber so ist ja alles bestens.
ABACOM support