AVG libc comes with some handy CCITT CRC code, but I had trouble matching it to standard C implementations. Antov on AVR Freaks delivered:
unsigned char a,b,c,d; a = (unsigned char)((crc & 0x00FF) ^ data); b = (unsigned char)((a << 4) ^ a); c = (unsigned char)((b << 3) ^ (crc >> 8) ^ ((b & 0xFF) >> 4)); d = (unsigned char)(b ^ ((b & 0xFF) >> 5)); crc = (unsigned int)(((unsigned int)d << 8)|(c & 0xFF));