M@RS 0 5 июля, 2011 Опубликовано 5 июля, 2011 (изменено) · Жалоба Доброе время суток... В ТЗ фигурирует расчет контрольной суммы CRC-6 и указан полином (x^6 + x + 1). Подскажите, как правильно ее считать или может существуют готовые примеры? Изменено 5 июля, 2011 пользователем M@RS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 5 июля, 2011 Опубликовано 5 июля, 2011 · Жалоба расчет контрольной суммы CRC-6 и указан полином (x^6 + x + 1). Подскажите, как правильно ее считать или может существуют готовые примеры? Абсолютно так-же, как и любые другие CRC. Берте описание и вперед. Единственно, бывают нюансы, например, начальное значение надо уточнить, направление сдвига опять-же..... Но это Вам, полагаю, CRC-6-ITU задали смотрите как это для E2 расписано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M@RS 0 5 июля, 2011 Опубликовано 5 июля, 2011 (изменено) · Жалоба У меня опыт работы с CRC это всего лишь простенькое исключающее или с массивом данных длинной 10 байт. Где это можно в примерах почитать. Пока отложил сумму, так как надо железо срочно оживлять, настройщикам надо мощу вытягивать, но вопрос будет висеть. Изменено 5 июля, 2011 пользователем M@RS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 5 июля, 2011 Опубликовано 5 июля, 2011 · Жалоба У меня опыт работы с CRC это всего лишь простенькое исключающее или с массивом данных длинной 10 байт. Я Вас расстрою, опыта работы у Вас нет, ибо это не CRC. CRC это остаток от деления полиномов. Букварь нужен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M@RS 0 5 июля, 2011 Опубликовано 5 июля, 2011 · Жалоба Я Вас расстрою, опыта работы у Вас нет, ибо это не CRC. CRC это остаток от деления полиномов. Букварь нужен! Вы меня не расстроили. Давно уже не расстраиваюсь... :laughing: Я не точно выразился. CRC в качестве контрольных сумм, не применял. Для моих нужд (15 байт по RS232) ее даже не нужно, но если сильно хотелось то хватало исключающее или.. Но в тз кто-то захотел, придется разбираться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 5 июля, 2011 Опубликовано 5 июля, 2011 · Жалоба Для моих нужд (15 байт по RS232) На будущее - для коротких фреймов наиболее эффективным считается CRC8 с полиномом X^8+X^5+X^4+X^0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M@RS 0 10 июля, 2011 Опубликовано 10 июля, 2011 · Жалоба На будущее - для коротких фреймов наиболее эффективным считается CRC8 с полиномом X^8+X^5+X^4+X^0 Спасибо за совет. Но в ТЗ указано CRC-6. Я тут немного поникал. Какие начальные условия брать оказывается. Надо наверно "ломать" чтобы тз переписали на срс-8. А то готовых кусков кода в сети на срс-6 нету. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 10 июля, 2011 Опубликовано 10 июля, 2011 · Жалоба Надо наверно "ломать" чтобы тз переписали на срс-8. Даже не смешно. CRC-6 это 6 бит, полагаю, что в протоколе больше места нет. Тут типа исполнитель в сети ничего готового не нашел, а пять строк для него написать уже не посильная задача. Пришлите новое TЗ. А то готовых кусков кода в сети на срс-6 нету. А остальное Вы тоже будете искать "в сети" :( :( ? Деление двух полиномов алгоритмически обсосанное до полного офигения например: http://www.ross.net/crc/download/crc_v3.txt , по сложности аналогично, тупой операции деления в столбик осваиваемой во втором классе начальной школы. Ой :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DimaG 0 11 июля, 2011 Опубликовано 11 июля, 2011 · Жалоба Спасибо за совет. Но в ТЗ указано CRC-6. Я тут немного поникал. Какие начальные условия брать оказывается. Надо наверно "ломать" чтобы тз переписали на срс-8. А то готовых кусков кода в сети на срс-6 нету. У меня есть книжка "Элементарное руководство по CRC алгоритмам обнаружения ошибок" Ross N. Williams. Легко гуглится, если есть необходимость - могу выложить Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M@RS 0 11 июля, 2011 Опубликовано 11 июля, 2011 · Жалоба Даже не смешно. CRC-6 это 6 бит, полагаю, что в протоколе больше места нет. Тут типа исполнитель в сети ничего готового не нашел, а пять строк для него написать уже не посильная задача. Пришлите новое TЗ. А остальное Вы тоже будете искать "в сети" :( :( ? Деление двух полиномов алгоритмически обсосанное до полного офигения например: http://www.ross.net/crc/download/crc_v3.txt , по сложности аналогично, тупой операции деления в столбик осваиваемой во втором классе начальной школы. Ой :( :rolleyes: Да для меня было бы самое приемлемое найти готовый кусок СРС-6, проверить и вставить в свой проект. Отладить и забыть. На больше у меня времени не хватает. Это нормально, не стоит удивляться. Я доделаю этот проект и забуду о нем. Мне уже это не интересно так как в основном занимаюсь уже своими проектами а там уже системный уровень и частности не так важны. Это будут делать уже наемные люди... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
i-mir 0 12 июля, 2011 Опубликовано 12 июля, 2011 · Жалоба Не желаете поделиться описанием проекта в части протокола, средств разработки, наличием аппаратных средств... Нет уверенности если кто-то возьмет любой кусок кода, назовет его СРС-6, и он у вас заработает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M@RS 0 13 июля, 2011 Опубликовано 13 июля, 2011 (изменено) · Жалоба Шо маемо: Каждый пакет имеет структуру: -двухбайтовый заголовок 0х55, 0x55; -Технический байт: биты 0...5 - произвольные значения; бит 6 - значение "1", бит 7 - значение "0". Служебный байт следующего содержания: биты 0, 1 МПП - 01; биты 2...7 - контрольная сумма по CRC-6 (полином x^6 + x + 1) для информационных байтов. Информационное поле из нескольких байтов. Средства разработки IAR, язык Си и mega8535. Пакеты приходят на скорости 11200кБод. Изменено 13 июля, 2011 пользователем M@RS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 13 июля, 2011 Опубликовано 13 июля, 2011 · Жалоба У меня есть книжка... Как Вы думаете, я что было по ссылке в посте перед Вашим :). Только Автору категорически ничего не надо, кроме как от него заказчик от него отвязался. Так давайте ему и поможем в том, что-бы ему никогда заказчики работы не докучали своими глупостями :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M@RS 0 15 июля, 2011 Опубликовано 15 июля, 2011 (изменено) · Жалоба Как Вы думаете, я что было по ссылке в посте перед Вашим :). Только Автору категорически ничего не надо, кроме как от него заказчик от него отвязался. Так давайте ему и поможем в том, что-бы ему никогда заказчики работы не докучали своими глупостями :) ;-) Спасибо, все верно лучше я буду докучать своим заказами... :laughing: В общем проблему удалось решить административными методами. Попросить прислать готовый код. Выкладываю с мыслью что кому-то пригодиться. Так как если забить в гугел, то данная тема находиться в топике. Искать не надо будет долго. unsigned char CS_6 (unsigned char *pData, unsigned char Nb) { unsigned char i, j; unsigned char cs = 0, cst; for(i = 0; i < Nb; ++i) { cst = *(pData + i); for(j = 0; j < 8; ++j) { cs >>= 1; if(((cs << 6) ^ (cst << 7)) & (1 << 7)) cs ^= 0xC2; cst >>= 1; } } return (cs >> 2); } Изменено 15 июля, 2011 пользователем M@RS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DimaG 0 16 июля, 2011 Опубликовано 16 июля, 2011 · Жалоба Как Вы думаете, я что было по ссылке в посте перед Вашим :). Да, извиняюсь, не заметил, что автор тот же. Но Ваш ресурс на английском языке, а моя книжка - на русском :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться