CRC8 OF DALLAS

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
anton234ff
Открыл глаза
Сообщения: 53
Зарегистрирован: Ср янв 04, 2012 12:40:34

CRC8 OF DALLAS

Сообщение anton234ff »

Доброго ремени суток!
никогда ранее не работал с контрольными суммами.а тут вот пришлось.порылся в инете.сидел долго,научился считать на бумажке 8битный срс со сдвигом вправо)))) имею опыт работы с микролан,но ранее считать КС не было необходимости.решил проверить полученные данные на практике.нашел спецификацию ibutton,где указан конкретный пример расчета FC+ID.но разобраться КАК они там что считают,не могу.короче,возникают следующие вопросы:
1.почему указанный полином в даташите и спецификации 100000111.а во всех примерах используется 0х8С(10001100)?
2.если данные передаются LSBпервым,то каким образом осущетвляется расчет CRC8 DALLAS??? пример из документа что-то как-то не лезет ни под одно правило,которое я нашел.

если есть у Вас опыт расчета CRC8 DALLAS,подскажите,плиз,как это делается правильно????.не примеры си или асма,а как говорится на пальцах)))мне хочется понять логику,а код я и сам в состоянии написать,понимая суть процесса.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: CRC8 OF DALLAS

Сообщение Jack_A »

Не совсем прямой ответ, но все же... Я в своих проектах сторонник табличного вычисления CRC, если памяти ROM хватает, зато вычисление быстрое. Только использую CRC16 , CRC8 -- отстой, IMHO, не слишком надежен.
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: CRC8 OF DALLAS

Сообщение uldemir »

Fnnfго что вы наплодите сто тем - лучше не будет. Если на ваш позавчирашний пост не ответили, подумайте, может вы написали не достаточно внятно или вообще муйню? С другой стороны можете взять мобильник и попросить танка загрузить вам знания. Из этой реальности вам загрузить знания не удастся.

anton234ff писал(а):1.почему указанный полином в даташите и спецификации 100000111.
А где вы в спецификации нашли такие цифры???????????
anton234ff писал(а):а во всех примерах используется 0х8С(10001100)?
Вообще-то не 8с. а X^8_X^5+X^4+X^0.

Схема приведённая в даташите реально отражает процесс вычисления CRC.
Вот например на VHDL вполне работоспособный код - у меня в термометре работает. datain - бит из потока данных идущий с ds18x20 именно в порядке с младшего бита.

Код: Выделить всё

crc <= (crc(0) xor datain) & crc (7 downto 5) & (crc(4) xor crc(0) xor datain) & (crc(3) xor crc(0) xor datain) & crc(2 downto 1);


Что вам еще не понятно?

Вот когда-то сделал екселевскую табличку для расчета CRC - заполнять зеленые поля.
https://docs.google.com/spreadsheet/ccc ... jlSN09UYlE
(Убедительная просьба не портить формулы, а лучше сделайте себе копию и с ней играйтесь)

Мммммммм. может еще можно поиском попользоваться...

А, кажется понял. Вы, наверное не в курсе, что существуют разные полиномы для расчета CRC!
Последний раз редактировалось uldemir Вс ноя 18, 2012 21:24:35, всего редактировалось 1 раз.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
anton234ff
Открыл глаза
Сообщения: 53
Зарегистрирован: Ср янв 04, 2012 12:40:34

Re: CRC8 OF DALLAS

Сообщение anton234ff »

ваш сарказм,дорогой товарищ,мягко говоря,неуместен.есть сферы,в которых и я могу поумничать.
x^8+x^5+x^4+1 это 100110001.открываем апп27 на странице номер 5 и видим 10001100.КАКОГО СПРАШИВАЕТСЯ??????далее открываем блокнот,скаченный где-то во всемирной помойке и видим то же самое 0х8с.
Вложения
crc.txt
(1.51 КБ) 712 скачиваний
app27.pdf
(67.03 КБ) 1032 скачивания
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: CRC8 OF DALLAS

Сообщение uldemir »

вы не ответили на первый вопрос:
anton234ff писал(а):1.почему указанный полином в даташите и спецификации 100000111
Покажите подробно где вы его увидели.
Откуда берется 8Ch (он же 18h) я знаю. Но! это "примеры си или асма" которого вы просили избегать. Потому я его и избегаю.
Так что сначала покажите строчку указанную в первом вопросе. А то пока не понятно, в чем проблема-то.

p.s. впрочем, как говорил раньше, сделать так чтобы вы поняли логику я не могу. Могу только порекомендовать самостоятельно почитать умную книжку: http://rsdn.ru/article/files/classes/Se ... cguide.pdf
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
anton234ff
Открыл глаза
Сообщения: 53
Зарегистрирован: Ср янв 04, 2012 12:40:34

Re: CRC8 OF DALLAS

Сообщение anton234ff »

по поводу указанного числа-наверное уже по запарке его вбил,хотя имел в виду то,что указал сегодня чуть ранее.
по поводу си и асма-я имел ввиду не ссылки типа "вот мой код написанный сто лет назад,гарантированно работает,ставь и не парься".мне нужно ПОНЯТЬ,а написать на си,да и на асме кстати тоже смогу сам.
так почему же все таки 0х8с?можно узнать?и как это число получается из указанного полинома в даташите?
anton234ff
Открыл глаза
Сообщения: 53
Зарегистрирован: Ср янв 04, 2012 12:40:34

Re: CRC8 OF DALLAS

Сообщение anton234ff »

эту книжку я читал.как вообще считается контрольная сумма я вкурил.если указанная степень полинома равна 8,количество дополняющих нулей соответственно 8,и срс 8 бит.но 0х8с это никак не восьмая степень.
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: CRC8 OF DALLAS

Сообщение uldemir »

18 - это маска по которой надо инвертировать биты, вроде, после сдвига. 8С - до сдвига, но так как старший бит уходит... то, похоже оптимальнее 18.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: CRC8 OF DALLAS

Сообщение urry »

направление сдвига.
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: CRC8 OF DALLAS

Сообщение uldemir »

А ну да, в википедии он назван как реверсивный.

01234567 8
10001100 1 = 31

8 76543210
1 00110001 = 8C

откуда 18?

А 18 это 8С до сдвига вправо.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
anton234ff
Открыл глаза
Сообщения: 53
Зарегистрирован: Ср янв 04, 2012 12:40:34

Re: CRC8 OF DALLAS

Сообщение anton234ff »

так,давайте подведем промежуточный итог.по алгоритму CRC-8 DALLAS контрольная сумма будет вычисляться все таки таким образом???

0000111100000000 | 100110001
000000000
----------
111100000
100110001
----------
011010001
000000000
----------
110100010
100110001
----------
100100110
100110001
----------
000101110
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: CRC8 OF DALLAS

Сообщение uldemir »

вы бы отступы сделали. а то не вижу логики.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
anton234ff
Открыл глаза
Сообщения: 53
Зарегистрирован: Ср янв 04, 2012 12:40:34

Re: CRC8 OF DALLAS

Сообщение anton234ff »

да,я их делал.при отправке сообщения что-то с форматированием произошло)))
0000111100000000 | 100110001
000000000
----------
-----111100000
-----100110001
----------
----- 011010001
------000000000
----------
-------110100010
-------100110001
----------
--------100100110
--------100110001
----------
--------000101110


по моим представлениям примерно так
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

Re: CRC8 OF DALLAS

Сообщение polyname »

вот проверенный код:

Код: Выделить всё

// CRC8 Dallas (021cb801000000a2=0x00)
#define CRC8_DS_INIT 0x00
U8 crc8_ds_upd(U8 data, U8 crc_prev) {
    data ^= crc_prev;
    crc_prev = 0;
    if(data & 0x01) crc_prev = 0x5e;
    if(data & 0x02) crc_prev ^= 0xbc;
    if(data & 0x04) crc_prev ^= 0x61;
    if(data & 0x08) crc_prev ^= 0xc2;
    if(data & 0x10) crc_prev ^= 0x9d;
    if(data & 0x20) crc_prev ^= 0x23;
    if(data & 0x40) crc_prev ^= 0x46;
    if(data & 0x80) crc_prev ^= 0x8c;
    return crc_prev;
}
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: CRC8 OF DALLAS

Сообщение uldemir »

У меня получилось так-же.

Код: Выделить всё

0000111100000000 | 100110001
000000000.......
----------
----111100000...
----100110001
----------
-----110100010..
-----100110001
----------
------100100110.
------100110001
----------
-------000101110
-------000000000
----------
--------00101110
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: CRC8 OF DALLAS

Сообщение shads »

anton234ff писал(а):если есть у Вас опыт расчета CRC8 DALLAS,подскажите,плиз, как говорится на пальцах)))мне хочется понять логику процесса.
Вот тут в свое время GUDD-HEAD на пальцах объяснял мне..... И я все понял..... Потом написал свои процедуры и на асме и на С.....
anton234ff
Открыл глаза
Сообщения: 53
Зарегистрирован: Ср янв 04, 2012 12:40:34

Re: CRC8 OF DALLAS

Сообщение anton234ff »

угу.есть калькулятор для расчета срс SCB-CALC.в поле результата третья ячейка выдает значение в формате СРС8.сколько ни бился с ручным расчетом,ни разу мои результаты не совпали с ответом данного калькулятора.даже в нашем случае на 00001111 ответ выдает 11101011. (((((((
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: CRC8 OF DALLAS

Сообщение uldemir »

не знаю. с моим калькулятором сходится. для 00001111 CRC 74 (00101110)
вот попробовал для 01010101 посчитать получилось D1 (10001011)
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
anton234ff
Открыл глаза
Сообщения: 53
Зарегистрирован: Ср янв 04, 2012 12:40:34

Re: CRC8 OF DALLAS

Сообщение anton234ff »

а как он называется?хочу найти и скачать
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: CRC8 OF DALLAS

Сообщение uldemir »

в моём первом сообщении этой темы после слов: "Вот когда-то сделал екселевскую табличку для расчета CRC - заполнять зеленые поля." Ексель не нужен - оно работает под гугловским спредшитом. Ну и конечно считает только далласовский полином. Сделал когда сам разбирался с этими CRC.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Ответить

Вернуться в «Периферия»