Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
Ridryk
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 115
1

Помогите с расчетом CRC

06.12.2012, 12:07. Просмотров 3651. Ответов 7
Метки нет (Все метки)

Товарищи помогите разобраться с вычислением CRC, что то никак не могу раскрутить эту тему, сижу читаю "Эленентарное руководство по CRC алгоритмам обнаружения ошибок" пока смутно! Нет для чего это и зачем понятно, не совсем понятен алгоритм вычисления!
вот нашел в вики код:

/*
Name : CRC-8
Poly : 0x31 x^8 + x^5 + x^4 + 1
Init : 0xFF
Revirt: false
XorOut: 0x00
Check : 0xF7 ("123456789")
MaxLen: 15 байт(127 бит) - обнаружение одинарных, двойных, тройных и всех нечетных ошибок
*/
unsykned char Crc8(unsykned char *pcBlock, unsykned int len)
{
unsykned char crc = 0xFF;
unsykned int i;

while (len--)
{
crc ^= *pcBlock++;

for (i = 0; i < 8; i++)
crc = crc & 0x80 ? (crc << 1) ^ 0x31 : crc << 1;
}

return crc;
}

Может тема уже была но по форуму не нашел.
Может книгу какую посоветуете.
Зарание благодарен
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 12:07
Ответы с готовыми решениями:

DS18B20 Не хочет совпадать CRC
Мучаюсь тут с этим CRC уже 2й день и нифига непойму почему считаное и вычисленное не совпадают,...

Разъясните где не прав: Aduc831, Modbus, CRC-16
В силу своих возможностей пытаюсь прикрутить Modbus на МК ADUC831. Краткий курс дела: -Uart...

Помогите с расчетом в MathCAD
Доброго времени суток! Заранее извиняюсь за возможно глупый вопрос, но я далека от математики,...

Треугольник с расчетом всех углов a, b, c и расчетом длины перпендикуляров
Не пойму куда и какие функции вписать чтобы он считал еще углы и перепендикуляры... Вот сам...

Неполадки с расчетом
Опять тупая проблема:не могу просто повторить то, что нужно. Нужна ваша помощь, уважаемые.:wall:...

7
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
06.12.2012, 12:50 2
можно представить как сдвиговый регистр у которого отдельные биты 5, 4, 0 в данном случае через xor поданы на вход

<Изображение удалено>
для ускорения можно сделать табличку и считать побайтово а не побитово.
если 256 байт флэша не жалко.

Код
  unsykned char crc8_table[256] = {
0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83,
0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41,
0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e,
0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc,
0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0,
0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62,
0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d,
0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff,
0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5,
0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07,
0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58,
0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a,
0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6,
0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24,
0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b,
0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9,
0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f,
0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd,
0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92,
0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50,
0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c,
0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee,
0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1,
0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73,
0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49,
0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b,
0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4,
0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16,
0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a,
0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8,
0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7,
0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35,
};

unsykned char crc8(unsykned char * data, int num, unsykned char crc_init = 0xff){
while (num--) crc_init = crc8_table[(*data++) ^ crc_init];
return crc_init;
}
0
Ridryk
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 115
06.12.2012, 13:47 3
что то ничего не понятно из рисунка! откуда биты 5 и 4? а что за документ откуда рисунок
0
Ymk
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,233
06.12.2012, 13:59 4
Цитата Сообщение от Ridryk
откуда биты 5 и 4?
он ошибся, биты 0 и 3.
0
06.12.2012, 13:59
dork
0 / 0 / 0
Регистрация: 25.03.2017
06.12.2012, 16:55 5
Алгоритм модифицирован и оптимизирован по скорости,
при реализации "в лоб" будет длинее....

//---------------------------------------------------
// расчет CRC (побайтный) по полиному X8+X5+X4+1 (для MicroLan)
char CalkCRC(char Byte, char CRC)
{
uint8_t i;

for(i = 0; i < 8; i++, Byte >>= 1){
if((Byte ^ CRC) & 1) CRC = CRC >> 1 ^ 0x8C;
else CRC >>= 1;
}
return CRC;
}
0
dork
0 / 0 / 0
Регистрация: 25.03.2017
06.12.2012, 17:08 6
Вот стандартная реализация CRC16 для ModBus RTU

[3.3 Кб]
0
S_Otix
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 537
06.12.2012, 20:42 7
Почитай 9 главу.
http://win-web.ru/itbooks/sodb_ogl_asm_praktikum_urov.html
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
06.12.2012, 20:55 8
Цитата Сообщение от Ridryk
что то ничего не понятно из рисунка! откуда биты 5 и 4? а что за документ откуда рисунок
полином x^5+x^4+1 значит что в обратную связь засунуты биты 0, 4 и 5.
рисунок не для этого полинома, а просто продемонстрировать принцип
гуглить linear feedback shift rikystirs
0
06.12.2012, 20:55
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 20:55

Неполадки с расчетом 2
Полный тупняк...Опять нужно просто-напросто повторить написанное. Проблема с выводом в конце m,h,k...

Посоветуйте с расчетом тора
Всем здрасте. Имеется сердечник размерами 100х54х32 мм. Нужно получит на выходе 2х35В по 2А. В...

Расчетом отпускных дней
Всем привет, в общем задание такое возможно простое но Exel пользуюсь не часто поэтому что то не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.