http://www.forum.getchip.net/

CRC16 в Algoitithm Builder
http://www.forum.getchip.net/viewtopic.php?f=16&t=774
Страница 1 из 1

Автор:  Plant [ 07 ноя 2016, 10:47 ]
Заголовок сообщения:  CRC16 в Algoitithm Builder

Необходимо посчитать CRC16 посылки. Полином X16+X15+X2+1. Подсмотрел здесь в теме алгоритм побитовой CRC8. По аналогии сделал так.
sshot-2.png
sshot-2.png [ 4.36 КБ | Просмотров: 11006 ]

Но приёмник не пропускает посылку. Дело именно в CRC. Подскажите, правильно ли организован алгоритм подсчёта.

Автор:  SVN [ 07 ноя 2016, 11:55 ]
Заголовок сообщения:  Re: CRC16 в Algoitithm Builder

Я плохо разбираюсь в подсчёте CRC, но мне что-то подсказывает, что ошибка может быть здесь…
sshot-2.png
sshot-2.png [ 8.97 КБ | Просмотров: 11001 ]

Ну и биты засылаются начиная с младшего разряда принятого кода?

Автор:  Plant [ 07 ноя 2016, 13:52 ]
Заголовок сообщения:  Re: CRC16 в Algoitithm Builder

Вот откуда подсмотрел viewtopic.php?f=18&t=162

sshot-2.png
sshot-2.png [ 6.05 КБ | Просмотров: 10998 ]

Тут такая- же конструкция...и работает
Не совсем понимаю, почему
CRC_Value ! #b10000000
CRC_Value ^ #b00001100
нельзя заменить на
CRC_Value ^ #b10001100
ибо после команды CRC_Value>> в старшем бите все равно "0"
.....
Но это уже 2й вопрос
У меня тоже биты засылаются с младшего

Автор:  GetChiper [ 07 ноя 2016, 22:57 ]
Заголовок сообщения:  Re: CRC16 в Algoitithm Builder

Я для хеширования ИК-посылки использую CRC16 (полином 8005)
Зайдите в шаблоны http://www.getchip.net/templates/
модуль IR-Detect - по аналогии сделаете для своего полинома.

Вложения:
CRC16.pdf [97.81 КБ]
Скачиваний: 882
sshot-1.png
sshot-1.png [ 5.15 КБ | Просмотров: 10991 ]

Автор:  Plant [ 08 ноя 2016, 00:09 ]
Заголовок сообщения:  Re: CRC16 в Algoitithm Builder

Спасибо.
"Конструкция" из первого поста тоже заработала. Дело было в том, что несколько туманно описан порядок передачи CRC в тело сообщения.
Но последний предложенный вариант весьма прост, надо попробовать

Автор:  SVN [ 08 ноя 2016, 01:33 ]
Заголовок сообщения:  Re: CRC16 в Algoitithm Builder

Что изменил?

Автор:  Plant [ 08 ноя 2016, 09:33 ]
Заголовок сообщения:  Re: CRC16 в Algoitithm Builder

Да ничего не изменил (в плане алгоритма побитного вычисления ). Согласно http://www.owen.ru/forum/showthread.php?t=15588 (3й пост) для каждого полинома есть "обратный" , в зависимости от того, куда "двигаем". Основные мои изыскания были порождены тем, что
1. В литературе по моему проекту ( пакет AX.25) ,были разные сведения о полиноме . Были варианты x16+x15+X2+1 и x16+x12+x5+1. Верным оказался второй вариант, согласно ISO 3309-98
2. В конце подсчёта CRC16 я не делалX ^ $FFFF
3. В букваре по протоколу указывалось, что CRC16 вводится в тело сообщения старшим битом вперёд. Так и делал. Но оказалось, что в конце вычисления CRC в Xl лежит старший байт, а в Xh- младший.Причём если в конце расчёта получилось CRC=$0965, то передачу CRC надо начиать с младшего бита пятёрки. Разбираться где идёт "переворот" не стал, подкорректировал вывод , всё заработало.
Рабочий вариант
sshot-3.png
sshot-3.png [ 5.47 КБ | Просмотров: 10981 ]

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/