Forum: Mikrocontroller und Digitale Elektronik CRC Berechnung?!


von Jan H. (janiiix3)


Lesenswert?

Guten morgen,

stehe gerade bisschen auf dem Schlauch ->
Was müsste hier raus kommen?
1
unsigned int DEVICE_CRC16 = 0x00;
2
DEVICE_CRC16 = calcCRC16r (DEVICE_CRC16,'A',0xA001);



1
unsigned int calcCRC16r(unsigned int crc, unsigned int c, unsigned int mask)
2
{
3
  unsigned char i;
4
  for(i=0;i<8;i++)
5
  {
6
    if((crc ^ c) & 1) 
7
  { 
8
    crc=(crc>>1)^mask; 
9
  }
10
    else 
11
    {
12
      crc>>=1;  
13
  }
14
    c>>=1;
15
  }
16
  return (crc);
17
}

von Korinthenkacker (Gast)


Lesenswert?

unsigned int  und   signed int   ist immer blöd wenn man
den Prozessor bzw die Registerbreite nicht dazusagt.

von Jan H. (janiiix3)


Lesenswert?

Korinthenkacker schrieb:
> unsigned int  und   signed int   ist immer blöd wenn man
> den Prozessor bzw die Registerbreite nicht dazusagt.

Jan H. schrieb:
> unsigned int DEVICE_CRC16 = 0x00;
> DEVICE_CRC16 = calcCRC16r (DEVICE_CRC16,'A',0xA001);
1
unsigned int DEVICE_CRC16 = 0x00;
2
DEVICE_CRC16 = calcCRC16r (DEVICE_CRC16,(unsigned int)'A',0xA001);

von mh (Gast)


Lesenswert?

Der hinzugekommene Cast sagt immernoch nicht, wie breit "int" ist...

Ansonsten sagt ideone.com, dass 0x30C0 rauskommt.

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.