Какие-то не те книжки Вы читаете.
Берём гугл. Ищем "алгоритм crc8".
Первая же ссылка -
wikibooks.
Копируем "Пример программы расчёта CRC8 на языке Си".
Вызываем:
Код
double myDouble = 1.23;
unsigned char crcResult = Crc8 ((unsigned char *) &myDouble, sizeof(myDouble));
Проверяем. Не сходится.
Внимательно читаем, выясняем, что Вам нужен полином 0x07, а тут используется далласовский 0x31. Меняем ОДНУ цифру 0x31 на 0x07, правим комментарий, повторяем проверку.
PS не силён в double'ах AVR-компиляторов. Но фразу "в сообщении 5 байт" с 8-байтовым double'ом связаны как-то слабо.