CRC16 bei ungerader byte Anzahl

OP #3336406
Lesenswert?
• ▲
▼
Hi,
komme nicht auf die richtigen Ergebnisse...
Habe einen undefinierte Anzahl von Bytes und möchte diesen 2byte CRC16 
Prüfsumme hinzufügen.

Benutze folgende Funkion aus dem Forum:
1
u16 calcCRC16r(u16 crc, u16 c, u16 mask)
2
{
3
  unsigned char i;
4
  for(i=0;i<8;i++)
5
  {
6
    if((crc ^ c) & 1) { crc=(crc>>1)^mask; }
7
    else crc>>=1;
8
    c>>=1;
9
  }
10
  return (crc);
11
}

und möchte es so aufrufen (5 Daten-Bytes):
1
  u16 crc = 0x0000;
2
  u16 crcData = 0;
3
  
4
  crcData = (ConfigGlobal.myAdress << 8) | ConfigGlobal.masterAdress;
5
  crc = calcCRC16r(crc, crcData, CRC16_POLYNOM);                      // Byte 1+2
6
  crc = calcCRC16r(crc, (8<<1) | 1, CRC16_POLYNOM);                      // Byte 3+4
7
  crc = calcCRC16r(crc, (!ConfigGlobal.EndModule) << 8, CRC16_POLYNOM);  // Byte 5 + x
8
// war das Richtig???? und jetzt??? wie bekomme ich in byte 6 + 7 die Prüfsumme????
9
  crc = calcCRC16r(crc, 0, CRC16_POLYNOM);

Habe folgende Daten als Beispiel "05fe080101" (hex)...
laut Online Calculator sollte 0x7ABC als Prüfsumme rauskommen, nur kommt 
bei mir nicht....

Was mache ich falsch???
OP #3336416
Lesenswert?
• ▲
▼
Vielen Dank.
läuft...
1
  crc = calcCRC16r(crc, ConfigGlobal.myAdress, CRC16_POLYNOM);
2
  crc = calcCRC16r(crc, ConfigGlobal.masterAdress, CRC16_POLYNOM);
3
  crc = calcCRC16r(crc, 8, CRC16_POLYNOM);
4
  crc = calcCRC16r(crc, 1, CRC16_POLYNOM);
5
  crc = calcCRC16r(crc, 1, CRC16_POLYNOM);

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.