Свежие обсуждения
Консультации

Как рассчиитать СRС для DS18B20?

1 2

Diko: Вот берёшь этот док и читаешь
Да читать я умею, вот только бегло по английски не получается.
Вы б лучше рассказали в 2-х словах, в чём его принцип, лень переводить, тем более вряд ли я буду применять этот способ.
Как я понял вся последовательность разбивается на байты, для каждого берётся из таблицы CRC, и что дальше с этими значениями делать? Ведь в итоге как-то 00 должно получиться.

 

Ну я вообще-то думаю что вот это пример наглядно демонстрирует что делается

Var
CRC : Byte;

Procedure Do_CRC(X: Byte);
{}
Const
Table : Array[0..255] of Byte = ( );

Begin
CRC := Table[CRC xor X];
End;

Этот пример приведён непосредственно в документации. Таблицу бай я убрал что б место не занимать.
В Таблицу один (Table 1. Table Lookup Method For Computing DOW CRC) сразу же после этого примера приведёп пример как считается CRC данным методом. Пошагово показано что да как.

если всё правильно то действительно получается 0. Что и демонстрирует этот пример.

 

Где-то я даже видел описание каквычмсляются эти бйтики в таблице, но что-то я этого не нашёл, сам я непомню, а вдаваться в подробности мне сейчас как-то не очень хоца.

Как говорится если работает то и не трогай.

 

Да я вообщем-то не из вредности докапываюсь, просто ни разу у меня не получалось взять код из аппноута и один-в-один вставить в свою программу, всё время приходилось досконально вникать в смысл того, как это делается, и только потом адаптировать его к своей программе. Может и доживём до того, что эти примеры будут вроде DLL-библиотек-- вставил, не зная что там внутри, и радуйся. Всё вроде к тому идёт

 

недумаю что это будет хорошо...
Вконце концов это всё работает на неких МК притом разных. Несмотря на бурное развитие языков высокого уровня( С в частности) для МК Очень и очень многие весчит всёравно делаются на асме.
Да есть такая проблема что из док мало можно чего вставить и оно будет работать.
1) это просто примеры призванные в лучшем случае показать что такое возможно.
2) как правило это урезанные примеры работающие только в определённых условиях.
3) полезность этих примеров в алгоритмах.

В частности в данном прмере нет никаких сложностей в том что бысделать свои процедуры подсчёта CRC, Вникать как это делается на аппаретном уровне нет никакого смысла(на мой взгляд). А программыные примеры достаточно просты + ковсему прочему приведены живые примеры расчёта, что помогает в проверке работоспособности

 

А может кто алгоритм работы(считать температуру, записать байт конфигурации) с DS18B20 напишет?
Надо ввиде последовательности действий: 1) Reset, 2) Поиск... и т.д.!
И как всё же посчитать CRC (на asm)?
И ещё - как работать с несколькими DS18B20 на одной шине?

Спасибо!

 
1 2