hallo zusammen, Für die Implementierung des SENT-Protokolls sind die Datenbytes 6, also 24-Bit-Daten, einschließlich eines Statushalbbytes, eines CRC-Halbbytes und eines Pausenimpulses. Ich muss den CRC für 6 Daten-Nibbles berechnen. Der erste Wert für die CRC-Berechnung ist, wie ich weiß, 5. Aber wenn ich das Signal mit Ozs dekodiere. bekomme ich einen Fehler in der Nachricht, weil ich zufällige Werte für CRC und für Status-Nibble sende. nun zu meinen Fragen: Wie kann ich den CRC-Wert und die Status-Nibbles berechnen? ich habe den folgenden code gefunden: uint8_t calculatedCRC, i; const uint8_t CrcLookup[16] = {0, 13, 7, 10, 14, 3, 9, 4, 1, 12, 6, 11, 15, 2, 8, 5}; calculatedCRC = 5; // initialize checksum with seed "0101" for (i = 0; i < 6; i++) { calculatedCRC = CrcLookup[calculatedCRC]; calculatedCRC = (calculatedCRC ^ Data[i]) & 0x0F; } // One more round with 0 as input calculatedCRC = CrcLookup[calculatedCRC]; aber wenn ich die For-Schleife wie folgt folge,dann ist dies nach der ersten Iteration nicht möglich, da der berechnete calculatedCrc wird 11 ^ 11 sein . Ich brauche eure Hilfe, bitte! 1) i=0 >>> calculatedCRC== 11 2) i=1 >>> calculatedCRC== 3) i=2 >>> calculatedCRC 4) i=3 >>> calculatedCRC 5) i=4 >>> calculatedCRC 6) i=5 >>> calculatedCRC
Sam schrieb: > Status-Nibbles moinsen, das S&C (Status&Communication) ist bei der CRC-Berechnung nicht drin, warum auch immer...
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.