Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Re: Всё по DS18(B/S)20.

Сб мар 03, 2012 07:05:28

Отбой :) Дело было в датчике. При отрицательной температуре он врал...показывал минус все дельше и зависал потом, при -80 где то. Потом, после датчика, прошивку сменил что бы отрицательную температуру считать правильно (до этого не знаб как было, не проверял :))...сделал сам расчет и все работает.

Re: Всё по DS18(B/S)20.

Сб мар 03, 2012 09:40:37

вообще-то датчик рассчитан на работу до -55, а вы про -80 говорите :( нифигасе у вас температурки

Re: Всё по DS18(B/S)20.

Сб мар 03, 2012 09:42:30

3DRaven писал(а):Отбой :) Дело было в датчике. При отрицательной температуре он врал...показывал минус все дельше и зависал потом, при -80 где то. Потом, после датчика, прошивку сменил что бы отрицательную температуру считать правильно (до этого не знаб как было, не проверял :))...сделал сам расчет и все работает.

Грешить на датчик - тоже сомнительно, т.к. скорее всего он или работает или не работает вообще. Кажется вы до конца так и не разобрались в чем проблема была (тем более работал\неработал зависело от того где плата с контроллером находилась, насколько я помню).

Re: Всё по DS18(B/S)20.

Сб мар 03, 2012 12:47:11

Ну вот как раз в датчике дело может быть, у меня чтото похожее было с одним конкретным датчиком, в то время как другие тутже подключенные работали нормально, потом он благополучно сдох вообще.
задержки установленны рабочие хоть и не точные, я у себя менял их довольно широко и все работало
вот сейчас специально переключил частоту с 8-ми на 4 МГц а оно работает! Я не чего не утверждаю но грешить только на тактовый генератор не думаю не стоит.

Re: Всё по DS18(B/S)20.

Сб мар 03, 2012 15:21:11

Я попробовал после этого несколько датчиков, работают. Про косяки с отрицательной температурой я видел сообщения...там была проблема, что он все время выдавал все единички в данных о температуре. Так что думаю все же дело в нем. В любом случае работает отлично и минус и плюс. Так что для меня вопрос решен...осцилла у меня нету, и рашать далее что то я не могу. Про плату я возможно перемудрил...я что только не попробовал :) В общем, разобрался.

Re: Всё по DS18(B/S)20.

Вт мар 06, 2012 22:18:05

Я сейчас сморожу глупость, но о достойнейшие умы, ответьте на вопрос: с какого места отсчитывать Tspon, который не должен превышать 10 мкс?
Для тех кому лень искать и смотреть даташит, сообщаю, что Tspon - время подачи strong pullup после выдачи команды 0x44 Convert_T. Вот интересует в каком месте эта команда кончается.

Re: Всё по DS18(B/S)20.

Ср мар 07, 2012 07:36:50

uldemir писал(а):Я сейчас сморожу глупость, но о достойнейшие умы, ответьте на вопрос: с какого места отсчитывать Tspon, который не должен превышать 10 мкс?
Для тех кому лень искать и смотреть даташит, сообщаю, что Tspon - время подачи strong pullup после выдачи команды 0x44 Convert_T. Вот интересует в каком месте эта команда кончается.

при паразитном питании Strong Pullup должен подаваться не менее чем на все время преобразования, т.е. для 12-битного режима не менее 750 мс (лучше чуть больше).

Re: Всё по DS18(B/S)20.

Ср мар 07, 2012 08:13:19

Ой, это-то я знаю. Проблема в том, что с какого момента надо это делать? когда считается, что команда подана? Ладно, наверное так и есть, что при последнем переходе от 0 к 1.

Re: Всё по DS18(B/S)20.

Ср мар 07, 2012 23:30:16

Вернее - когда принятая команда дешифрируется и выполнится. Тогда примерно через 10мкс будет запущено преобразование температуры, вот не менее чем через 10мкс после выдачи команды преобразования необходимо включить подтяжку.

Re: Всё по DS18(B/S)20.

Сб апр 07, 2012 02:34:36

Подскажите плз реализацию вычисления контрольной суммы для AVR на асме.....

Re: Всё по DS18(B/S)20.

Сб апр 07, 2012 08:52:48

Сдвигаете регистр контрольной суммы вправо, с выпавшим младшим битом и входным битом производите исключающее ИЛИ. Далее копируете получившийся бит во временный обнулённый регистр вместо старшего (7-го), 3-го и 2-го бита, производите исключающее или между регистром контрольной суммы и временным регистром. Повторить это для каждого входного бита.
Похожий алгоритм на АСМе можете глянуть у меня: http://radiokot.ru/circuit/digital/game/03/ только там я мучал закольцованный регистр без внешнего сигнала, но идея такая же.

Re: Всё по DS18(B/S)20.

Сб апр 07, 2012 11:05:35

Спасибо..... Чертежик с прокруткой байта и ксорами я видел, но все ни как не мог сообразить, как это на деле работает. После вашего ясного описания, въехал наконец.....

Раньше тоже видел, еще такую реализацию:
crc.jpg
(40.37 KiB) Скачиваний: 972
Но не соображал как ее для АВР перевернуть, ну теперь думаю проблем не будет.....
Спасибо.

Re: Всё по DS18(B/S)20.

Сб апр 07, 2012 20:10:25

shads писал(а):не соображал как ее для АВР перевернуть
ну дык надо было поискать по форуму - исходники 1-wire-crc на асме для AVR тут не раз выкладывались

Re: Всё по DS18(B/S)20.

Сб апр 07, 2012 21:47:40

http://radiokot.ru/search/?query=1-wire-crc&x=8&y=6
?????????????
как ни пробовал переставлять......

Кстати... решил сделать не байтовую реализацию, а битовую. После приема\передачи каждого бита будет вызываться ф-я...
У меня прием\передача реализованы в одной подпрограмме в прерывании, вот после каждого бита и буду накручивать CRC, только в начале приема\передачи обнулить надо будет и все...

Re: Всё по DS18(B/S)20.

Вс апр 08, 2012 07:32:46

Плохо ищите, но вот то, что я вспомнил, в этой статье есть пример с табличным расчетом, а в комментариях найдете и математический расчет.

еще была тема http://www.radiokot.ru/forum/viewtopic.php?f=25&t=11525
которую почему-то забросили

Re: Всё по DS18(B/S)20.

Вс апр 08, 2012 08:14:31

Да это уже пройденый этап, все что обсуждается в ваших ссылках.
Просто я до сих пор использовал простой вариант с одним устройством на линии, ну и соответственно, ни адрес его не передавал, ни CRC не считал в данных. А тут понадобилось подключить 4 датчика http://asis-kbr.ru/forum/viewtopic.php?f=9&t=117, ну и соотв встал вопрос о полноценном обмене. Загвоздка была только в CRC (пишу на асме), а все примеры что находил на С (кстати в вашей первой ссылке CRC с табличным вариантом - тоже не подходит - слишком прожорлив до памяти). Вот тут уважаемый Gudd-Head мне и помог делом. Все уже решил.....

Re: Всё по DS18(B/S)20.

Вс апр 08, 2012 10:14:06

Не знаю, где вы искали, но когда мне надо было, год назад, я все нашел и сделал, например вот это и тоже на асме.
Я у себя подключал и 8 датчиков без проблем, и процедуры обмена в самом простом варианте сократил до 270 (точно не помню) байт кода вместе с поиском адреса, а crc надо считать, что с одним, что с несколькими датчиками.

P.S. Кстати для написания процедуры поиска очень помог именно сишный апноут хотя я си не очень то знаю.

Re: Всё по DS18(B/S)20.

Вс апр 08, 2012 13:00:02

BVS писал(а):crc надо считать, что с одним, что с несколькими датчиками
Да это понятно, у меня просто серьезных целей не было, поэтому без CRC, а так конечно согласен.

BVS писал(а):P.S. Кстати для написания процедуры поиска очень помог именно сишный апноут хотя я си не очень то знаю.
Вообще не пойму зачем этот поиск нужен???
Вот например у меня 4 датчика, гораздо проще их пронумеровать, по очереди подключить по одному и инициализировать... чем потом разбираться како же датчик под каким номером и где он стоит.....

Re: Всё по DS18(B/S)20.

Вс апр 08, 2012 13:20:32

shads писал(а):Вообще не пойму зачем этот поиск нужен???

Там не чего сложного нет, если разобраться, и не чего ни куда переключать не надо, все висит на одном проводе, как и задумано.

Re: Всё по DS18(B/S)20.

Вс апр 08, 2012 14:54:58

BVS писал(а):
shads писал(а):Вообще не пойму зачем этот поиск нужен???

Там не чего сложного нет, если разобраться, и не чего ни куда переключать не надо, все висит на одном проводе, как и задумано.
Я наверное неправильно мысль выразил.
Я не против применения алгоритма поиска устройств. И не сомневаюсь что в нем нет ничего сложного. Также я не говорил что датчики я собираюсь подключать на разные линии.

Я имел ввиду, что легче както пронумеровать визуально датчики и по одному их прописать в устройство (ф-я чтения адреса одного устройства на линии) а потом уже включить в одну линию все вместе, вместо того чтобы вместе сразу их подключить, найти с помощью ф-ции поиска а потом разбираться где из них который?
Ответить