Цитата(laryc @ Feb 7 2016, 15:07)

попытка не увенчалась успехом .. посмотрите код ..что не так?
//делаем переменную из пяти байт
unsigned long long myDouble = 0;//double не позволяет сдвигать берём long long
А что Вы имеете ввиду "double не позволяет сдвигать"
- что сдвигать
- куда сдвигать
- зачем
А что именно успехом не увенчалось ?
Цитата(laryc)
мож я действительно как-то не так мыслю... задача у меня такая : принимаю по USARTу пять байт и считаю CRC - 8 по полиному 0х07.. я согласно учебникам решил сделать 40 битовое число чтобы не заморачиваться с массивами и посчитать crc для одного числа .. честно сказать я не очень понимаю как работают указатели - всю жизнь обходился без них (уровень достаточного дилетанта)
unsigned char RxBuf[1000];
RxBuf[0] = GetUSART_Byte();
RxBuf[1] = GetUSART_Byte();
RxBuf[2] = GetUSART_Byte();
RxBuf[3] = GetUSART_Byte();
RxBuf[4] = GetUSART_Byte();
unsigned char * MyPtr = (unsigned char *) &RxBuf[0];
unsigned char MyCRC;
MyCRC = Crc8 ( MyPtr, 5 );
printf("\nMyCRC8 = %.2X", MyCRC);
Не мучайте AVR. Возьмите на PC VisualStudio и наклацайте main() в console-проекте.
Кроме полинома, для ф-ии CRC есть еще как минимум 2 "подстройки"
- "стартовое" значение. В приведенной выше ф-ии unsigned char crc = 0xFF;
но может использоваться и 0x00
- порядок "счета" бит в байте, или направление сдвига (определяет, какой бит в "новом" байте
будет обработан первым - младший или старший)