Forum: Compiler & IDEs CRC Berechnung - Polynom 0x13 BiSS


von Richard F. (geimel)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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

von Patrick (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.