Hallo liebe Forengemeinde ich hab ein dickes Problem bei der CRC Berechnung für eine BISS Schnittstelle. http://www.biss-interface.com/files/BiSS_AN3_appnote_E1en.pdf Die Variante im Link funktioniert prinzipiell, ist aber sehr umständlich und für einen AVR ein bisschen groß. Haber schon fleißig das Netz durchforstet, aber leider nichts zum Generatorpolynom 10011 gefunden. Habe schon einiges ausprobiert, leider nicht von erfolg gekrönt. Die Rechnung auf http://www.leischner.inf.fh-bonn-rhein-sieg.de/lehrmat/crc.htm funktioniert auch. Leider ist dort kein Code zu finden. Wenn mir jemand helfen könnte wäre ich sehr dankbar. Am liebsten war kleines mit Bitschieben und Xor. :-) Die Daten die aus denen das Polynom berechnet wird sind 11 Bit lang und liegen in einem uint_16t vor oder auch als 2x uint8. Vielen Dank
Hallo, da sich kein anderer rührt
1 | // das ist die CRC-Berechnung für einen 11-Bit Wert mit Polynom 0x13
|
2 | // das Ergebnis hat 4 Bit
|
3 | uint8_t getCRC(uint16_t input) |
4 | {
|
5 | uint8_t i; |
6 | |
7 | input = input & 0xfff; // auf maximal 12 bit beschränken, geht auch mit 12bit, aber nicht mehr |
8 | for (i=0 ; i<12 ; i++){ |
9 | input = input << 1; |
10 | if( (input & 0x1000) ) |
11 | input ^= 0x1300; // die crc-Berechnung findet im high-byte statt |
12 | }
|
13 | return ((input>>8)&0xff); // return das high-byte |
14 | }
|
Gruss
Hallo Zusammen, ich kämpfe auch gerade mit der CRC Berechnung und möchte mich erstmal herzlich dafür bedanken, dass hier jemand die Lösung für mein Problem eingestellt hat. Daumen hoch :-) Kann mir vielleicht noch jemand erklären, wie man auf diese Lösung kommt? Ich habe das irgendwie nicht verstanden. Vielen Dank schon mal im voraus und einen schönen Tag! Gruß Patrick
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.