-         
+ Antworten
Ergebnis 1 bis 9 von 9

Thema: CRC-16 Prfsumme fr serielle bertragung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.11.2004
    Ort
    Wernigerode
    Alter
    36
    Beitrge
    51

    CRC-16 Prfsumme fr serielle bertragung

    Hallo,

    ich Suche nach ner bereits implementierten Lsung fr WinAVR C, die eine 16bit CRC Prfsumme berechnet.
    Ich muss ganz ehrlich sagen, so richtig hab ich das Verfahren mit der Polynomdivision nicht verstanden. Ist eigendlich auch nicht Teil meiner Aufgabe.
    Hat jemand von euch schon mal mit CRC-Prfsummen bei der Seriellen kommunikation gearbeitet?
    Ich habe auch von einem Algorithmus gelesen, bei dem nicht dividiert wird wo nur Verschiebeoperationen eingesetzt weren. (in meinen Augen besser fr den AVR geeignet)

    Danke schon im Voraus
    MFG

    Bomb

  2. #2

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.11.2004
    Ort
    Wernigerode
    Alter
    36
    Beitrge
    51
    Danke Robert,

    jetzt muss ich das nur noch verstehen... und fr ne Zeichenfolge adaptieren.Diese ganzen shiftereien zu kapieren ist nicht so einfach..
    MFG

    Bomb

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beitrge
    991
    Schau doch einfach mal in den bei WinAVR mitgelieferten Bibiliotheken.
    Mit der crc16.h solltest du glcklich werden . Viel fertiger implementiert wirst du es nicht mehr bekommen ...

    Man muss einfach nur noch die Funktion _crc16_update(); aufrufen. Schau dir am besten mal die Doku dazu an...

    MfG Kjion

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.11.2004
    Ort
    Wernigerode
    Alter
    36
    Beitrge
    51
    Hallo danke
    habs gefunden, aber das scheint auch wieder 'nur' ne crc ber ein ein byte zu legen. Ich mchte aber, sagen wir mal 64 bytes, nacheinander bertragen und zum Schluss ne crc ber das gesendete Paket mitgeben.
    Das ist erforderlich fr das modbus Protokoll.

    edit: oder bedeutet das Update immer, dass die Methode mit dem letzten crc Stand fr das neue Zeichen aufgerufen wird?
    MFG

    Bomb

  6. #6
    Gast
    Ja, das geht immer so weiter mfg

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    09.11.2004
    Ort
    Wernigerode
    Alter
    36
    Beitrge
    51
    hehe dann ist ja gut
    Wo ihr schon soviel zu CRC'S wisst. Habt Ihr zufllig das gleiche auch noch fr C#?
    Wo findet Ihr denn die Beispiele? Ich bin bei WinAVR berhaupt nicht auf CRC's gestoen.
    MFG

    Bomb

  8. #8
    KlausConzelmann
    Gast
    Hallo,

    ich bin auf der Suche nach dem Source zum Bilden des 16 Bit-CRC (CRC16) mit unterschiedlichen Polynomen. Die Polynome sollten vorgebbar sein (z.B. X16+X15+X2+1, X16+X12+X5+1 ....).
    Der Einsatz einer Tabelle oder Teil-Tabelle ist dafr wohl nicht so
    geeignet. Es sei denn sie wird auch generiert.
    Hat jemand ein solches Programm parat oder weis wo ein solches zu
    finden ist. Ich bentige dies in einer Microcontroller-Anwendung mit
    dem 8051 und zur berprfung mit dem PC.

    Danke fr die Hilfe

    Klaus

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    09.11.2004
    Ort
    Wernigerode
    Alter
    36
    Beitrge
    51
    Code:
    uint16_t crc_xmodem_update (uint16_t crc, int8_t daten){
    	crc = crc ^ ((uint16_t)daten << 8);
    	for (int i=0; i<8; i++)
    	{
    		if (crc & 0x8000)
    			crc = (crc << 1) ^ 0x1021;
    		else
    			crc <<= 1;
    	}
    	return crc;
    }
    0x1021 ist das polynom theoretisch msstest du fr deinen fall nur dein polynom anpassen
    0xc003 wre X16+X15+X2+1 bzw. 1100000000000011
    fr den exponenten einfach das entsprechende bit. in dem 16bit hexwert setzen. das msste man automatisieren knnen. ber die eingabe der hexzahl knntest du dann halt das zu grunde liegende polynom ndern.
    MFG

    Bomb

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhnge hochladen: Nein
  • Beitrge bearbeiten: Nein
  •