Возникла проблема при работе с ds18b20
Возникла проблема при работе с ds18b20
Доброго времени суток,
возникластранная ситуация. По порядку:
atmega8a к выводам РС0 и РС1 подключены по 1 датчику ds18b20,
программа сначала считывает данные с датчика на РС0, потом с датчика на РС1,
по все время при считывании 1-го датчика все проходило нормально,
а - 2-го датчика происходило зависание, я так понял, что
из-за того, что после сигнала сброса не проходила команда 0xCC, при чем если
поменять местами датчики, то было то же самое, не работал датчик именно на РС1,
при этом подпрограмма обработки - одна и та же, подумал, что проблема в МК,
поробовал другой - но получил то же самое, как итог я понял, что так работает только
на РС1 даже на разных контроллерах, проблема была решена добавлением задержки после команды сброса на 1мс.
В итоге проблема не из-за датчика, т.к. на РС0 - они оба работали с исходной версией программы,
а проблема возникала только на РС1 - можно было бы грешить на него, но опять же непонятка: на другогм МК
было все один в один...
Хоть проблема и решена, но от этого она все одно - не стала понятна...
Кто нибудь сталкивался с таким? в чем м.б. проблема?
возникластранная ситуация. По порядку:
atmega8a к выводам РС0 и РС1 подключены по 1 датчику ds18b20,
программа сначала считывает данные с датчика на РС0, потом с датчика на РС1,
по все время при считывании 1-го датчика все проходило нормально,
а - 2-го датчика происходило зависание, я так понял, что
из-за того, что после сигнала сброса не проходила команда 0xCC, при чем если
поменять местами датчики, то было то же самое, не работал датчик именно на РС1,
при этом подпрограмма обработки - одна и та же, подумал, что проблема в МК,
поробовал другой - но получил то же самое, как итог я понял, что так работает только
на РС1 даже на разных контроллерах, проблема была решена добавлением задержки после команды сброса на 1мс.
В итоге проблема не из-за датчика, т.к. на РС0 - они оба работали с исходной версией программы,
а проблема возникала только на РС1 - можно было бы грешить на него, но опять же непонятка: на другогм МК
было все один в один...
Хоть проблема и решена, но от этого она все одно - не стала понятна...
Кто нибудь сталкивался с таким? в чем м.б. проблема?
Re: Возникла проблема при работе с ds18b20
А на AVCC питание подано?
Re: Возникла проблема при работе с ds18b20
точно... подал на AREF, вместо питания, всегда подаю на аналоговую часть, т.к. слышал, что где-то там слабый провод для питания...
а сейчас - не заметил, что не туда подключился...
спасибо за идею , сейчас попробую!
Добавлено after 6 minutes 15 seconds:
не помого... значит в чем-то еще...
кондеры по питанию тоже ставил, и электролит, и керамику... не помогло...
а сейчас - не заметил, что не туда подключился...
спасибо за идею , сейчас попробую!
Добавлено after 6 minutes 15 seconds:
не помого... значит в чем-то еще...
кондеры по питанию тоже ставил, и электролит, и керамику... не помогло...
Re: Возникла проблема при работе с ds18b20
Обычно используют несколько устройств на одном выводе с адресным вызовом необходимого.
А на каждое устройство по одному выводу... Это по меньшей мере не одновременно...
Второе нужна копия уже имеющейся программы - так что скорее всего программу "с пристрастием" смотреть надо.

А на каждое устройство по одному выводу... Это по меньшей мере не одновременно...
Второе нужна копия уже имеющейся программы - так что скорее всего программу "с пристрастием" смотреть надо.
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
Re: Возникла проблема при работе с ds18b20
Под ассемблером не пытайтесь упрощенными решениями пользоваться.
Или полностью раздельные подпрограммы у каждой из которых свой вывод указан.
Единственно общий буфер блокнота.

Или полностью раздельные подпрограммы у каждой из которых свой вывод указан.
Единственно общий буфер блокнота.
Re: Возникла проблема при работе с ds18b20
а чем так плохо?
программу это сильно не усложнило...
да ,в протеусе работает без проблем, понятно ,что не показатель, но так, на всякий случай.
программу это сильно не усложнило...
да ,в протеусе работает без проблем, понятно ,что не показатель, но так, на всякий случай.
Re: Возникла проблема при работе с ds18b20
Работа с uLAN это режим реального времени - жесткое соблюдение интервалов, соизмеримых со временем исполнения команд (по пакостности его только WS2812 на 800МГц превосходит). Посему не условные переходы по флажкам, а два независимых модуля дрыголапа должны быть.
Каждый вызывается в зависимости от требуемого выходного порта.
Была бы возможность косвенной адресации по содержимому регистра и/или памяти - тогда еще можно (например с масками можно эксперимент сделать) и то при тактировании заметно выше чем 1МГц (стандартное для АВР, ежли не трогать предделитель).
ШПРОТ- не аргумент.

Каждый вызывается в зависимости от требуемого выходного порта.
Была бы возможность косвенной адресации по содержимому регистра и/или памяти - тогда еще можно (например с масками можно эксперимент сделать) и то при тактировании заметно выше чем 1МГц (стандартное для АВР, ежли не трогать предделитель).
ШПРОТ- не аргумент.
Re: Возникла проблема при работе с ds18b20
переделал на отдельные подпрограммы - вообще не стало работать без задержки,
при более внимательном чтении даташита увидел, что окончание сигнала присутствия от датчика
не говорит о его готовности, там нужна еще задержка, как раз ее я добавлял,
чтобы заработало, но тогда непонятно, почему работает именно на РС0, он тогда
тоже не должен был работать...
при более внимательном чтении даташита увидел, что окончание сигнала присутствия от датчика
не говорит о его готовности, там нужна еще задержка, как раз ее я добавлял,
чтобы заработало, но тогда непонятно, почему работает именно на РС0, он тогда
тоже не должен был работать...
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Возникла проблема при работе с ds18b20
обычно если в протеусе работает - значит и в железе будет (у меня так было). Только в протеусе идеал, а реально DS18B20 нормальных сейчас похоже не найти
https://www.drive2.ru/b/513061538530066675
а может маленькая доп. задержка влияет, если так попробовать:
и в протеусе есть мощный виртуальный осциллограф - там времена замерять можно...
а в реале есть очень дешевый китайский Logic Analyzer (клон Saleae) - он 1-Wire знает...
https://www.drive2.ru/c/487568261928452488/
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/
Re: Возникла проблема при работе с ds18b20
oleg110592, идея понятна, спасибо, вечером попоробую, но только у меня тактавая 4МГц, и врятли одна команда так влияет,
т.к. когда я ставил задержку порядка 10мкС - это не помогло, а это уже 40 тактов, не вычислял, с какой минимальной заработает, но 250мкС - работает,
при чем если менять местами датчики - то все тоже самое... а датчики покупал в чипидип, не китайские вроде, хотя точно не скажу...
плохо, что пока что-то с осцилографом протеуса то ли не разобрался ,то ли он глючный -в пошаговом режиме на экране не отображается текущее действие,
такое впечатление, что осцилограф отстает..
т.к. когда я ставил задержку порядка 10мкС - это не помогло, а это уже 40 тактов, не вычислял, с какой минимальной заработает, но 250мкС - работает,
при чем если менять местами датчики - то все тоже самое... а датчики покупал в чипидип, не китайские вроде, хотя точно не скажу...
плохо, что пока что-то с осцилографом протеуса то ли не разобрался ,то ли он глючный -в пошаговом режиме на экране не отображается текущее действие,
такое впечатление, что осцилограф отстает..
Re: Возникла проблема при работе с ds18b20
Отстой ослик. Измеряй логическим анализатором.
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 прорабатывалась...
Ежли интересно - могу прислать для анализа-сравнения...

На то специальный блочек ставится
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
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Возникла проблема при работе с ds18b20
такое впечатление, что осцилограф отстает..
там волшебные кнопочка (One-Shot) есть - ничего не отстает
поглядеть как
https://youtu.be/rp6nR8nT3x4?t=356
Re: Возникла проблема при работе с ds18b20
otest, поробую, только сначала найду где в протеусе логический анализатор )
Добавлено after 33 seconds:
oleg110592, спасибо!
Добавлено after 8 minutes 45 seconds:
BOB51, у меня , если ставить задержку -все работает, просто хочу понять, почему без задержки
с РС0- любой датчик работает и без задержки, а на РС1 - любой только с задержкой.
при этом я не использую паразитное питание, так что завалов на импульсах быть не должно.
я попробую программно поменять их местами - если поменяются рабочие выводы - то все же проблема в
программе , а если и тут будет то же самое - тогда вообще непонятка...
Добавлено after 33 seconds:
oleg110592, спасибо!
Добавлено after 8 minutes 45 seconds:
BOB51, у меня , если ставить задержку -все работает, просто хочу понять, почему без задержки
с РС0- любой датчик работает и без задержки, а на РС1 - любой только с задержкой.
при этом я не использую паразитное питание, так что завалов на импульсах быть не должно.
я попробую программно поменять их местами - если поменяются рабочие выводы - то все же проблема в
программе , а если и тут будет то же самое - тогда вообще непонятка...
Re: Возникла проблема при работе с ds18b20
Может на PC1 резистор не того номинала?
Re: Возникла проблема при работе с ds18b20
akl, я просто пробовал менять местами подключение датчиков вместе с резисторами - именно провода между ножками МК, одно и то же...
Re: Возникла проблема при работе с ds18b20
Значит ошибка в полном тексте программы.
У атмеги 8/8А из альтернативного РС только с АЦП работает (и то одинаково для РС0 и/или РС1).
Для АВР достаточно выполнять "разворот шины" с постоянно присутствующим в регистре порта 0 (вариант работы с шиной "ОК").
Ну и не забываем, что данные на выводах устанавливаются минимум через NOP после выполнения команды, изменяющей статус вывода.

У атмеги 8/8А из альтернативного РС только с АЦП работает (и то одинаково для РС0 и/или РС1).
Для АВР достаточно выполнять "разворот шины" с постоянно присутствующим в регистре порта 0 (вариант работы с шиной "ОК").
Ну и не забываем, что данные на выводах устанавливаются минимум через NOP после выполнения команды, изменяющей статус вывода.
Re: Возникла проблема при работе с ds18b20
DS18B20 с Китая куплены? Там 99% их фейка. Многие юзать можно (хотя некоторые врут сильно), но есть нюансы. Например версия от GXCAS/UMW больше 600мс на преобразование могут тратить. Монументальный труд по сравнению и отличиям копий собран тут: https://github.com/cpetrich/counterfeit_DS18B20/
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, покупал в чипи дип.
РС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, покупал в чипи дип.