CRC16 Berechnung

Die Arduino Plattform bringt mit ihrer Entwicklungsumgebung bereits die AVR Libc mit. In der AVR Libc gibt es im „Util“ Paket auch eine Implementierung von CRC16, die recht einfach verwendet werden kann. Um zu zeigen, wie man einen CRC16 mit dieser Funktion berechnet, habe ich folgenden Beispiel-Sketch geschrieben. Ist doch einfach, oder :-)?

1
#include <util/crc16.h>
 
void setup() {
  Serial.begin(9600);
  Serial.println("CRC16 test started.");
}
 
void loop() {
  byte data[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 };
 
  unsigned int crc = 0;
 
  for (unsigned int i = 0; i < sizeof(data); i++)
  {
    crc = _crc16_update(crc, data[i]);
  }
 
  Serial.print("CRC16 = ");
  Serial.println(crc, HEX);
  Serial.println();
 
  delay(2000);
}