Перейти к содержанию
    

Доброе время суток...

В ТЗ фигурирует расчет контрольной суммы CRC-6 и указан полином (x^6 + x + 1). Подскажите, как правильно ее считать или может существуют готовые примеры?

Изменено пользователем M@RS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

расчет контрольной суммы CRC-6 и указан полином (x^6 + x + 1). Подскажите, как правильно ее считать или может существуют готовые примеры?

Абсолютно так-же, как и любые другие CRC. Берте описание и вперед. Единственно, бывают нюансы, например, начальное значение надо уточнить, направление сдвига опять-же.....

Но это Вам, полагаю, CRC-6-ITU задали смотрите как это для E2 расписано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня опыт работы с CRC это всего лишь простенькое исключающее или с массивом данных длинной 10 байт. Где это можно в примерах почитать. Пока отложил сумму, так как надо железо срочно оживлять, настройщикам надо мощу вытягивать, но вопрос будет висеть.

Изменено пользователем M@RS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня опыт работы с CRC это всего лишь простенькое исключающее или с массивом данных длинной 10 байт.

Я Вас расстрою, опыта работы у Вас нет, ибо это не CRC. CRC это остаток от деления полиномов. Букварь нужен!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я Вас расстрою, опыта работы у Вас нет, ибо это не CRC. CRC это остаток от деления полиномов. Букварь нужен!

Вы меня не расстроили. Давно уже не расстраиваюсь... :laughing:

Я не точно выразился. CRC в качестве контрольных сумм, не применял. Для моих нужд (15 байт по RS232) ее даже не нужно, но если сильно хотелось то хватало исключающее или.. Но в тз кто-то захотел, придется разбираться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для моих нужд (15 байт по RS232)

На будущее - для коротких фреймов наиболее эффективным считается CRC8 с полиномом X^8+X^5+X^4+X^0

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На будущее - для коротких фреймов наиболее эффективным считается CRC8 с полиномом X^8+X^5+X^4+X^0

Спасибо за совет. Но в ТЗ указано CRC-6. Я тут немного поникал. Какие начальные условия брать оказывается. Надо наверно "ломать" чтобы тз переписали на срс-8. А то готовых кусков кода в сети на срс-6 нету.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо наверно "ломать" чтобы тз переписали на срс-8.

Даже не смешно. CRC-6 это 6 бит, полагаю, что в протоколе больше места нет. Тут типа исполнитель в сети ничего готового не нашел,

а пять строк для него написать уже не посильная задача. Пришлите новое TЗ.

А то готовых кусков кода в сети на срс-6 нету.

А остальное Вы тоже будете искать "в сети" :( :( ? Деление двух полиномов алгоритмически обсосанное до полного офигения например: http://www.ross.net/crc/download/crc_v3.txt , по сложности аналогично, тупой операции деления в столбик осваиваемой во втором классе начальной школы. Ой :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за совет. Но в ТЗ указано CRC-6. Я тут немного поникал. Какие начальные условия брать оказывается. Надо наверно "ломать" чтобы тз переписали на срс-8. А то готовых кусков кода в сети на срс-6 нету.

 

У меня есть книжка "Элементарное руководство по CRC алгоритмам обнаружения ошибок" Ross N. Williams.

Легко гуглится, если есть необходимость - могу выложить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даже не смешно. CRC-6 это 6 бит, полагаю, что в протоколе больше места нет. Тут типа исполнитель в сети ничего готового не нашел,

а пять строк для него написать уже не посильная задача. Пришлите новое TЗ.

 

А остальное Вы тоже будете искать "в сети" :( :( ? Деление двух полиномов алгоритмически обсосанное до полного офигения например: http://www.ross.net/crc/download/crc_v3.txt , по сложности аналогично, тупой операции деления в столбик осваиваемой во втором классе начальной школы. Ой :(

:rolleyes: Да для меня было бы самое приемлемое найти готовый кусок СРС-6, проверить и вставить в свой проект. Отладить и забыть. На больше у меня времени не хватает. Это нормально, не стоит удивляться. Я доделаю этот проект и забуду о нем. Мне уже это не интересно так как в основном занимаюсь уже своими проектами а там уже системный уровень и частности не так важны. Это будут делать уже наемные люди...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не желаете поделиться описанием проекта в части протокола,

средств разработки, наличием аппаратных средств...

 

Нет уверенности если кто-то возьмет любой кусок кода,

назовет его СРС-6, и он у вас заработает.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Шо маемо:

Каждый пакет имеет структуру:

-двухбайтовый заголовок 0х55, 0x55;

-Технический байт:

биты 0...5 - произвольные значения;

бит 6 - значение "1",

бит 7 - значение "0".

Служебный байт следующего содержания:

биты 0, 1 МПП - 01;

биты 2...7 - контрольная сумма по CRC-6 (полином x^6 + x + 1) для информационных байтов.

Информационное поле из нескольких байтов.

 

Средства разработки IAR, язык Си и mega8535. Пакеты приходят на скорости 11200кБод.

Изменено пользователем M@RS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня есть книжка...

Как Вы думаете, я что было по ссылке в посте перед Вашим :). Только Автору категорически ничего не надо, кроме как от него заказчик от него отвязался. Так давайте ему и поможем в том, что-бы ему никогда заказчики работы не докучали своими глупостями :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как Вы думаете, я что было по ссылке в посте перед Вашим :). Только Автору категорически ничего не надо, кроме как от него заказчик от него отвязался. Так давайте ему и поможем в том, что-бы ему никогда заказчики работы не докучали своими глупостями :)

;-) Спасибо, все верно лучше я буду докучать своим заказами... :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);  
}

Изменено пользователем M@RS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как Вы думаете, я что было по ссылке в посте перед Вашим :).

Да, извиняюсь, не заметил, что автор тот же.

Но Ваш ресурс на английском языке, а моя книжка - на русском :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...