Seite 1 von 1

CRC-CCITT(xmodem)

Verfasst: 19.05.2010 21:22
von heitronic
Suche einen für CRC-CCITT(xModem) habe ein gerät zum ansprechen das verlangt
• CRC-CCITT
• Polynomial = x^16 + x^12 + x^5 + 1
• Initial crc register = 0x0000

To calculate the CRC protected message packets for the ‘Reset device’ command…
TX : [ 40 ] [ 0 ] [ crc_lsb ] [ 1 ] [ crc_msb ]
RX : [ 1 ] [ 0 ] [ crc_lsb ] [ 0 ] [ crc_msb ]

ich kann die bytes nicht erstellen bzw. wenn ich einlese sind die bytes nicht richtig

Re: CRC-CCITT(xmodem)

Verfasst: 19.05.2010 22:10
von 7x7
und was willst du jetzt genau wissen?

Re: CRC-CCITT(xmodem)

Verfasst: 20.05.2010 08:25
von heitronic
ich suche einen Code wie ich dieses berechnen kann

obige übertragung soll ausgerechnet lauten

TX crc = CRC( 40, 0, 1 ) = 3F46 hex
RX crc = CRC( 1, 0, 0 ) = 3730 hex

habe hier im forum einen code teil gefunden aber irgendwie funktioniert die berechnung nicht auch wenn ihn abändere




Code: Alles auswählen

#CRC16POLY = $1021

Procedure CRC16(*MEMStart.BYTE, L)
   Protected P, k, MyCRC = $0000
   ;
   While L
      P = *MEMStart\b & $FF
      For k = 1 To 8
         If (P ! MyCRC) & 1 = 1
            MyCRC >> 1
            MyCRC ! #CRC16POLY
            MyCRC & $FFFF
         Else
            MyCRC >> 1
         EndIf
         P >> 1
      Next
      *MEMStart + 1
      L - 1
   Wend

   ProcedureReturn MyCRC
EndProcedure
Edit by NicTheQuick: Code-Tags korrigiert

Re: CRC-CCITT(xmodem)

Verfasst: 20.05.2010 10:36
von 7x7
Schau mal hier:zyklische Redundanzprüfung.
Dein oben gefundener Code liefert vermutlich nur das gewüschte Ergebnis, wenn du die korrekten Nutzdaten übergibst.

Re: CRC-CCITT(xmodem)

Verfasst: 20.05.2010 14:28
von WPö
Siehe auch http://www.maxim-ic.com/appnotes.cfm/an_pk/27. Ab da kannst Du Dich weiterhangeln.

Gruß - WPö