Форум РадиоКот https://radiokot.ru/forum/ |
|
Возникла проблема при работе с ds18b20 https://radiokot.ru/forum/viewtopic.php?f=62&t=172887 |
Страница 1 из 2 |
Автор: | Леонид_М [ Пн сен 21, 2020 12:15:58 ] |
Заголовок сообщения: | Возникла проблема при работе с ds18b20 |
Доброго времени суток, возникластранная ситуация. По порядку: atmega8a к выводам РС0 и РС1 подключены по 1 датчику ds18b20, программа сначала считывает данные с датчика на РС0, потом с датчика на РС1, по все время при считывании 1-го датчика все проходило нормально, а - 2-го датчика происходило зависание, я так понял, что из-за того, что после сигнала сброса не проходила команда 0xCC, при чем если поменять местами датчики, то было то же самое, не работал датчик именно на РС1, при этом подпрограмма обработки - одна и та же, подумал, что проблема в МК, поробовал другой - но получил то же самое, как итог я понял, что так работает только на РС1 даже на разных контроллерах, проблема была решена добавлением задержки после команды сброса на 1мс. В итоге проблема не из-за датчика, т.к. на РС0 - они оба работали с исходной версией программы, а проблема возникала только на РС1 - можно было бы грешить на него, но опять же непонятка: на другогм МК было все один в один... Хоть проблема и решена, но от этого она все одно - не стала понятна... Кто нибудь сталкивался с таким? в чем м.б. проблема? |
Автор: | akl [ Пн сен 21, 2020 12:24:01 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
А на AVCC питание подано? |
Автор: | Леонид_М [ Пн сен 21, 2020 12:39:01 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
точно... подал на AREF, вместо питания, всегда подаю на аналоговую часть, т.к. слышал, что где-то там слабый провод для питания... а сейчас - не заметил, что не туда подключился... спасибо за идею , сейчас попробую! Добавлено after 6 minutes 15 seconds: не помого... значит в чем-то еще... кондеры по питанию тоже ставил, и электролит, и керамику... не помогло... |
Автор: | BOB51 [ Пн сен 21, 2020 14:40:44 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
Обычно используют несколько устройств на одном выводе с адресным вызовом необходимого. А на каждое устройство по одному выводу... Это по меньшей мере не одновременно... Второе нужна копия уже имеющейся программы - так что скорее всего программу "с пристрастием" смотреть надо. |
Автор: | Леонид_М [ Пн сен 21, 2020 14:53:22 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
Обычно используют несколько устройств на одном выводе с адресным вызовом необходимого. А на каждое устройство по одному выводу... Это по меньшей мере не одновременно... Второе нужна копия уже имеющейся программы - так что скорее всего программу "с пристрастием" смотреть надо. у меня там есть регистр ,который определяет, какой выход использовать: РС0 или РС1, а код импользую один и тот же, вот пример: tst bit_b brne no_03 cbi PORTC,PC0 sbi DDRC,0 rjmp no_13 no_03: cbi PORTC,PC1 sbi DDRC,1 no_13: ldi temp, 72 |
Автор: | BOB51 [ Пн сен 21, 2020 15:09:21 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
Под ассемблером не пытайтесь упрощенными решениями пользоваться. Или полностью раздельные подпрограммы у каждой из которых свой вывод указан. Единственно общий буфер блокнота. |
Автор: | Леонид_М [ Пн сен 21, 2020 15:21:27 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
а чем так плохо? программу это сильно не усложнило... да ,в протеусе работает без проблем, понятно ,что не показатель, но так, на всякий случай. |
Автор: | BOB51 [ Пн сен 21, 2020 22:57:41 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
Работа с uLAN это режим реального времени - жесткое соблюдение интервалов, соизмеримых со временем исполнения команд (по пакостности его только WS2812 на 800МГц превосходит). Посему не условные переходы по флажкам, а два независимых модуля дрыголапа должны быть. Каждый вызывается в зависимости от требуемого выходного порта. Была бы возможность косвенной адресации по содержимому регистра и/или памяти - тогда еще можно (например с масками можно эксперимент сделать) и то при тактировании заметно выше чем 1МГц (стандартное для АВР, ежли не трогать предделитель). ШПРОТ- не аргумент. |
Автор: | Леонид_М [ Пн сен 21, 2020 23:30:24 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
переделал на отдельные подпрограммы - вообще не стало работать без задержки, при более внимательном чтении даташита увидел, что окончание сигнала присутствия от датчика не говорит о его готовности, там нужна еще задержка, как раз ее я добавлял, чтобы заработало, но тогда непонятно, почему работает именно на РС0, он тогда тоже не должен был работать... |
Автор: | oleg110592 [ Вт сен 22, 2020 08:08:59 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
обычно если в протеусе работает - значит и в железе будет (у меня так было). Только в протеусе идеал, а реально DS18B20 нормальных сейчас похоже не найти https://www.drive2.ru/b/513061538530066675 а может маленькая доп. задержка влияет, если так попробовать: Код: tst bit_b brne no_03 cbi PORTC,PC0 sbi DDRC,0 rjmp no_13 no_03: cbi PORTC,PC1 sbi DDRC,1 rjmp no_13 ; добавить! no_13: ldi temp, 72 и в протеусе есть мощный виртуальный осциллограф - там времена замерять можно... а в реале есть очень дешевый китайский Logic Analyzer (клон Saleae) - он 1-Wire знает... https://www.drive2.ru/c/487568261928452488/ |
Автор: | Леонид_М [ Вт сен 22, 2020 09:06:12 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
oleg110592, идея понятна, спасибо, вечером попоробую, но только у меня тактавая 4МГц, и врятли одна команда так влияет, т.к. когда я ставил задержку порядка 10мкС - это не помогло, а это уже 40 тактов, не вычислял, с какой минимальной заработает, но 250мкС - работает, при чем если менять местами датчики - то все тоже самое... а датчики покупал в чипидип, не китайские вроде, хотя точно не скажу... плохо, что пока что-то с осцилографом протеуса то ли не разобрался ,то ли он глючный -в пошаговом режиме на экране не отображается текущее действие, такое впечатление, что осцилограф отстает.. |
Автор: | otest [ Вт сен 22, 2020 09:59:02 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
Отстой ослик. Измеряй логическим анализатором. |
Автор: | BOB51 [ Вт сен 22, 2020 10:29:04 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
В принципе... схема "паразитки" по даташиту должна подключать полное питание в перерывах между обменом. На то специальный блочек ставится http://img.radiokot.ru/files/20529/1us0r4a0ua.GIF (и схемка с его использованием http://img.radiokot.ru/files/20529/kc1ezblxl.JPG) - минус три лапки МК использовать надо. Ну и завал фронтов - зависит от типа кабеля. Ну и производитель ессно свое может добавить: Вложение: Вложение: Вложение: (https://www.maximintegrated.com/en/supp ... 0-faq.html) Вложение: ..... У меня под АВРки готовых прожек нету - основа на ПИКи MCS51 прорабатывалась... Ежли интересно - могу прислать для анализа-сравнения... |
Автор: | oleg110592 [ Вт сен 22, 2020 10:47:39 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
такое впечатление, что осцилограф отстает.. там волшебные кнопочка (One-Shot) есть - ничего не отстает поглядеть как https://youtu.be/rp6nR8nT3x4?t=356 |
Автор: | Леонид_М [ Вт сен 22, 2020 10:57:36 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
otest, поробую, только сначала найду где в протеусе логический анализатор ) Добавлено after 33 seconds: oleg110592, спасибо! Добавлено after 8 minutes 45 seconds: BOB51, у меня , если ставить задержку -все работает, просто хочу понять, почему без задержки с РС0- любой датчик работает и без задержки, а на РС1 - любой только с задержкой. при этом я не использую паразитное питание, так что завалов на импульсах быть не должно. я попробую программно поменять их местами - если поменяются рабочие выводы - то все же проблема в программе , а если и тут будет то же самое - тогда вообще непонятка... |
Автор: | akl [ Вт сен 22, 2020 11:03:48 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
Может на PC1 резистор не того номинала? |
Автор: | Леонид_М [ Вт сен 22, 2020 11:25:05 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
akl, я просто пробовал менять местами подключение датчиков вместе с резисторами - именно провода между ножками МК, одно и то же... |
Автор: | BOB51 [ Вт сен 22, 2020 12:30:26 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
Значит ошибка в полном тексте программы. У атмеги 8/8А из альтернативного РС только с АЦП работает (и то одинаково для РС0 и/или РС1). Для АВР достаточно выполнять "разворот шины" с постоянно присутствующим в регистре порта 0 (вариант работы с шиной "ОК"). Ну и не забываем, что данные на выводах устанавливаются минимум через NOP после выполнения команды, изменяющей статус вывода. |
Автор: | NStorm [ Вт сен 22, 2020 12:33:31 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
DS18B20 с Китая куплены? Там 99% их фейка. Многие юзать можно (хотя некоторые врут сильно), но есть нюансы. Например версия от GXCAS/UMW больше 600мс на преобразование могут тратить. Монументальный труд по сравнению и отличиям копий собран тут: https://github.com/cpetrich/counterfeit_DS18B20/ |
Автор: | Леонид_М [ Вт сен 22, 2020 12:42:55 ] |
Заголовок сообщения: | Re: Возникла проблема при работе с ds18b20 |
BOB51, дело в том, что у меня на оба датчика (выхода РС0 и РС1) - одна порограмма, я только в регистре ззадаю какой из них, все операции одни и теже ,что для РС0, что для РС1 - выборка РС0 или РС1 идет только именно перед самим действием с РС0 и РС1. выше я приводил пример как сделано, повторю: tst bit_b brne no_03 cbi PORTC,PC0 sbi DDRC,0 rjmp no_13 no_03: cbi PORTC,PC1 sbi DDRC,1 no_13: ldi temp, 72 Добавлено after 35 seconds: NStorm, покупал в чипи дип. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |