====== CRC16 Berechnung ====== Die Arduino Plattform bringt mit ihrer Entwicklungsumgebung bereits die [[http://www.nongnu.org/avr-libc/user-manual/index.html|AVR Libc]] mit. In der AVR Libc gibt es im "Util" Paket auch eine [[http://www.nongnu.org/avr-libc/user-manual/group__util__crc.html|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 :-)? #include 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); }