roboforum.ru

Технический форум по робототехнике.

CRС

CRС

-= Александр =- » 27 окт 2005, 01:19

Сабж... В чем суть? Чем отличаются CRC8, CRC16, CRC32?  :roll:
И чего из них оптимальней для защиты радиоканала средней паршивости от помех??

Re: CRС

gab » 27 окт 2005, 04:19

-= Александр =- писал(а):Сабж... В чем суть? Чем отличаются CRC8, CRC16, CRC32?  :roll:
И чего из них оптимальней для защиты радиоканала средней паршивости от помех??

Вероятностью обнаружения ошибки :).

От _помех_ защищают не они. Они только сигнализируют о помехе.
Для защиты от помех обычно применяются свёрточные, блочные коды, перемежение и т.д.
Если интересно - могу рассказать, занимаюсь этим по работе.
На коленке такое трудно сделать. И без ПЛИС'ов трудно будет :).

Chipper » 27 окт 2005, 09:03

И без ПЛИС'ов трудно будет

А ПЛМ-то зачем? Все решается на уровне софта. Это если ресурсов совсем не хватает, тогда придется извращаться. Смотря какой контроллер...
А по исправлению ошибок можно посмотреть коды Хэмминга например. И вообще из моего опыта: иногда проще продублировать посылку, чем заниматься отысканием и исправлением ошибок...

Sergey » 27 окт 2005, 09:05

Chipper писал(а):И вообще из моего опыта: иногда проще продублировать посылку, чем заниматься отысканием и исправлением ошибок...


Это по моему тоже наилучшее решение. На таком принципе море девайсов общаються.

-= Александр =- » 27 окт 2005, 12:01

Идея собсно такая: связь на китайских р/у девайсах. Качество там средней паршивости. Надо просто найти ошибку и попросить повторную передачу. Кодировать ничего не буду, просто прямая передача Манчестерским кодом. Реализация в виде переходников радио-RS232 на ATTINY2313. Не густо конечно, но ресурсов достаточно вполне. Кто-нить знает как работает CRC8, а то в нете все про 16...

Chipper » 27 окт 2005, 14:01

Так а разница-то в чем? Только полином меняется. 8-ми разрядные входные данные - 8-ми разрядный CRC. Проще всего вычислять по таблице (табличный метод). Быстрее него ничего не работает...

Tracer » 27 окт 2005, 14:38

//-----------------------------------------------------
// CRC8 calculator
// Typical usage:
// lastcrc8=0; // Clear the CRC value
// for(i=0;i<8;i++) { // Calculate the CRC
// lastcrc8=CRC_Calc8Bit(lastcrc8,tmp_serial_num[i]);
// }
unsigned char CRC_Calc8Bit (unsigned char crc, unsigned char val) {
unsigned char inc, tmp;

for(inc = 0; inc < 8; inc++) {
tmp = crc << 7; // save X7 bit value
crc >>= 1; // shift crc
if((tmp >> 7) ^ (val & 0x01)) { // if X7 xor X8 (input data)
crc ^= 0x8c; // xor crc with X4 and X5, X1 = X7^X8
crc |= 0x80; // carry
}
val >>= 1;
}
return(crc);
}

Chipper » 27 окт 2005, 15:27

Так гораздо быстрее будет...
 crc=0;
 for (i=0;i=N;i++)
 {
   crc = CRCTBL[(crc ^ DatBuf[i]) & 0xFF];
 }
Правда места займет гораздо больше (CRCTBL - таблица 256 байт). Если с местом напрягов нет, то так удобнее...

-= Александр =- » 27 окт 2005, 18:53

Ясно. Пасибо!  :D

Chipper » 28 окт 2005, 07:21

Хемминг действительно найдет и исправит... но во что это обойдется? Огород не стоит городить из-за 5-10 байт. Проще повторить посылку по факту несовпадения CRC...

Re: CRС

GxOST » 14 ноя 2005, 18:46

-= Александр =- писал(а):Сабж... В чем суть? Чем отличаются CRC8, CRC16, CRC32?  :roll:
И чего из них оптимальней для защиты радиоканала средней паршивости от помех??

Вообще, чем "длиннее" CRC, тем меньше вероятность прохождения "неотловленной" ошибки (так называемого "ложняка"). CRC8 всё-же маловато для радиоканала. Кстати, CRC бывает не только 8, 16, 32, но и любое другое число :)
Кстати, проблема не только в длине полинома, но и в его виде. Подробней можно почитать вот тут:
Вложения
CRC_rus.rar
(166.83 КиБ) Скачиваний: 253

Daiver » 15 ноя 2005, 07:47

To -= Александр =-
Может не много не в тему, но в ноябрьском номере журнала "Радио" за 2005 год было полное описание системы ДУ на МК AVR2313. Возможность передачи до 16-ти команд. Посмотри - может не надо будет изобретать "велосипед"  :lol:
Если нет возможности посмотреть - могу отсканить статью и выслать на мыло.

Немного не в тему (Круговой ИК датчик)

Airat » 16 ноя 2005, 18:01

День добрый, Александр!

Встретил на roboclub.ru круговой ИК датчик, хотел узнать чем закончилось... Идея понравилась, думаю сделать такой же.
Что скажете по своему опыту?

Спасибо.

-= Александр =- » 18 ноя 2005, 19:48

Ну, штуковина получилась отличная, ждет своегно применения. У тех роботов что уже построены есть свои ИК-датчики. Думаю строить баллансирующего, вот на него эту "шляпу" и одену. Тока он пока-что все еще в задумке. Хотя детальки из хлама уже приглядываются, недавно пару здоровых колес от какой-то ломаной игрушки свинтил и моторчики подобрал. По поводу датчика - работает до двух метров, с небольшим перекрытием диодов, без мертвых зон. Диоды включаются по кругу, каждый по две пачки импульсов. ШИМ пробовал делать м конденсатором, но ТСОПу не понравилось, надо попробовать частотв побольше и фильтрацию получше. В крайнем случае поставлю ЦАП. Очень уж хочется не только есть/нету, но и хоть какое-то расстояние знать...  :wink:


Rambler\'s Top100 Mail.ru counter