Например TDA7294

Форум РадиоКот • Просмотр темы - PIC12F675 и DS18S20
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт сен 26, 2025 02:59:52

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 59 ]  1, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: PIC12F675 и DS18S20
СообщениеДобавлено: Пн окт 31, 2016 21:23:49 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 01, 2010 09:57:22
Сообщений: 38
Рейтинг сообщения: 0
Проектирую в Proteus устройство на PIC12F675, которое работает с датчиком температуры DS18S20. Во вложении проект Proteus с частью программы которая отвечает за обмен данных между МК и датчиком. Проект компилируется без ошибок, однако при пошаговой отработке видно, что МК принимает некорректные биты от датчика. После выполнения подпрограммы Read в регистр W записывается FF (все единицы) при любой температуре. Не могу понять в чем дело. Прошу помощи у знающих.
PS. Подпрограммы по обмену данных МК-датчик брал из другого проекта (под pic16f628). Внес только некоторые изменения.


Вложения:
Project.rar [77.46 KiB]
Скачиваний: 225
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Пн окт 31, 2016 22:00:10 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Из того, что заметил сходу.

Для чего все эти маневры с регистрами прерываний, если сами прерывания не используются?
Далее:
Код:
       bcf         datchik      ;Единичный импульс
       call        Delay500     ;Задержка 500мкс.
            bsf         datchik      ;Единичный импульс
       movlw      TRISIO_IN
       Banksel      TRISIO        ;
       iorwf       TRISIO,F      ;

Если по истечении паузы датчик уведет шину в ноль, когда вы даете bsf datchik, до переключения на вход ПИК имеет шансы подпалить порт.
Дальше не смотрел.
Спать, спать, спать...

P.S. И вообще загляните в раздел Периферия, тема про эти датчики запинена. Там много полезного.
Alex, например, на последних страницах объясняет куда что подавать.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Пн окт 31, 2016 22:21:21 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 01, 2010 09:57:22
Сообщений: 38
Рейтинг сообщения: 0
Zhuk72 писал(а):
Из того, что заметил сходу.

Для чего все эти маневры с регистрами прерываний, если сами прерывания не используются?
Далее:
Код:
       bcf         datchik      ;Единичный импульс
       call        Delay500     ;Задержка 500мкс.
            bsf         datchik      ;Единичный импульс
       movlw      TRISIO_IN
       Banksel      TRISIO        ;
       iorwf       TRISIO,F      ;

Если по истечении паузы датчик уведет шину в ноль, когда вы даете bsf datchik, до переключения на вход ПИК имеет шансы подпалить порт.
Дальше не смотрел.
Спать, спать, спать...

P.S. И вообще загляните в раздел Периферия, тема про эти датчики запинена. Там много полезного.
Alex, например, на последних страницах объясняет куда что подавать.


bcf datchik ;Единичный импульс
call Delay500 ;Задержка 500мкс.
bsf datchik ;Единичный импульс
Такая последовательность была изначально в другом (рабочем) проекте. Я так понял это для того чтобы шину побыстрее подтянуть к 1. А там до перевода порта на вход всего три команды. За это время, судя по мануалу, датчик не должен подтянуть шину к 0. Ну и при моделировании Сброс отрабатывается правильно (датчик отвечает), а что делать с ПП Read не пойму. Может датчик не видит команд которые проходят через ПП Write.
Ну и не могу найти раздел Периферия. :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Пн окт 31, 2016 22:36:44 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Kuzia писал(а):
Я так понял это для того чтобы шину побыстрее подтянуть к 1

это лишнее и опасно


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Вт ноя 01, 2016 06:18:28 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Сперва возвращайте пин на вход, а потом уже и bsf не нужен. Просто добавьте movf GPIO,f во всех участках, где переходите с выхода на вход. Переключили на выход, выдали на пин 0, пауза, переключили на вход, считали порт.
Симуляция не покажет вам, как сгорает порт. Об этом вы должны позаботиться сами.

Периферия.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Вт ноя 01, 2016 06:56:35 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15176
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Kuzia
Просмотри (в смысле обработчика протокола обмена с датчиком) вот от этого исходник
viewtopic.php?p=2593182#p2593182
(пик629=пик675 по лапкам за исключением отсутствия АЦП).
Правда конечная обработка блокнота для ds18B20 отличается от таковой для ds18S20 по причине несколько иной порядковости размещения данных...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Вт ноя 01, 2016 08:00:17 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4578
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Гляньте ещё сюда - http://forum.chipmk.ru/index.php/topic/ ... t__p__1543 Может чего интересного найдёте.

Добавлено after 11 minutes 29 seconds:
Цитата:
датчик не должен подтянуть шину к 0
Датчик вообще никому ничего не должен, он имеет право притянуть линию к нулю, если посчитает нужным. По этому, во избежании всяческих коллизий ни линии, лог. единицу осуществляют с помощью подтягивающего сопротивления, переводя вывод устройства в высокоимпедансное состояние. Просто возьмите это за правило.
Интерфейс 1-Wire - не исключение. Существуют ещё интерфейсы, работающие по такому принципу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Вт ноя 01, 2016 19:37:54 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 01, 2010 09:57:22
Сообщений: 38
Рейтинг сообщения: 0
Аlex писал(а):
Гляньте ещё сюда - http://forum.chipmk.ru/index.php/topic/ ... t__p__1543 Может чего интересного найдёте.

Добавлено after 11 minutes 29 seconds:
Цитата:
датчик не должен подтянуть шину к 0
Датчик вообще никому ничего не должен, он имеет право притянуть линию к нулю, если посчитает нужным. По этому, во избежании всяческих коллизий ни линии, лог. единицу осуществляют с помощью подтягивающего сопротивления, переводя вывод устройства в высокоимпедансное состояние. Просто возьмите это за правило.
Интерфейс 1-Wire - не исключение. Существуют ещё интерфейсы, работающие по такому принципу.

Благодарю за теорию. Я это, вроде, понимаю. Однако не работает в симуляторе. :(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Вт ноя 01, 2016 20:15:13 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
А вы уверены, что отправка работает корректно?
Запустите симуляцию с точкой останова после call Delay_800 (на сбросе датчика). Посмотрите регистры DS. Какое значение в ячейках температуры?

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Чт ноя 03, 2016 11:23:48 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 01, 2010 09:57:22
Сообщений: 38
Рейтинг сообщения: 0
Да, точно, Write (передача датчику) не корректно работает.
Теперь появился другой вопрос: порт GP5 не переводится в высокий уровень при переключении порта на вход (в регистре GPIO остается 0). Хотя на входе порта стоит подтягивающий к питанию резистор. В регистр INTCON внесен 0X07. Порт (GPIO5) - без АЦП.
В чем может быть дело?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Чт ноя 03, 2016 12:12:29 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
INTCON вообще-то регистр прерывания, которое у вас не используется. Раз уж его 7-й бит в нуле, то остальные уже роли не играют.

Если после перевода на вход порт остается синим, значит датчик удерживает его в 0.
После настройки на вход movf GPIO,f делаете? Хотя это на состояние пина не влияет, а только на корректность его чтения контроллером.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Чт ноя 03, 2016 12:49:34 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 01, 2010 09:57:22
Сообщений: 38
Рейтинг сообщения: 0
Zhuk72 писал(а):
INTCON вообще-то регистр прерывания, которое у вас не используется. Раз уж его 7-й бит в нуле, то остальные уже роли не играют.

Если после перевода на вход порт остается синим, значит датчик удерживает его в 0.
После настройки на вход movf GPIO,f делаете? Хотя это на состояние пина не влияет, а только на корректность его чтения контроллером.

Очень Вам признателен. Второй раз подряд мне помогаете. Точно добавил movf GPIO,f и получилось как надо. Не верно написал (на форуме) не INTCON а CMCON.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Чт ноя 03, 2016 13:00:49 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Добавьте эту команду во все процедуры, где производите перевод пина с выхода на вход.
:beer:

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Чт ноя 03, 2016 13:41:53 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
Цитата:
не INTCON а CMCON.

и со 2-ого раза не угадал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Чт ноя 03, 2016 16:07:11 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 01, 2010 09:57:22
Сообщений: 38
Рейтинг сообщения: 0
Приемо-передача работат. Однако, еще пришлось поставить резистор в разрыв между портом МК и датчиком с подтягивающим резистором. Насколько я правильно понимаю это значит что в каком-то из компонентов имеется превышение по току?
Как это проще всего выявить?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Чт ноя 03, 2016 16:56:31 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 14
Зарегистрирован: Сб сен 19, 2009 07:02:19
Сообщений: 378
Рейтинг сообщения: -1
Kuzia писал(а):
Приемо-передача работат...
Откуда эта уверенность?

Kuzia писал(а):
Однако, еще пришлось поставить резистор в разрыв между портом МК и датчиком с подтягивающим резистором...
Исходя из чего Вы решили, что это и есть решение?

Kuzia писал(а):
Насколько я правильно понимаю это значит что в каком-то из компонентов имеется превышение по току? Как это проще всего выявить?

Ни хрена Вы не понимаете. Никак не выявить. Ну или у всех компонентов поспрашивайте... Или в тепловизор поглядите. Поколение Пепси и Ардуино, мля...Думать нужно до, этого Вашего рукоблудия. После, тоже нужно думать, но это-же так скучно...

Нарушаете правила форума. п 2-3. предупреждение. FAKIR.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Чт ноя 03, 2016 19:09:12 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 01, 2010 09:57:22
Сообщений: 38
Рейтинг сообщения: 0
Видимо не с током связано. Протеус выбивает ошибку: Logic contention detected on net #00001. Отследил по времени: ошибку выбивает после (или вовремя) подачи МК-ом на порт 1, вовремя отправки датчику бита (лог 1). В чем может быть дело?

Добавлено after 45 minutes 51 second:
Все, разобрался! Всем спасибо и даже тем кто дерзил. Немного увеличил временной интервал удерживания высокого уровня. Не смотря на то что все интервалы общения с датчиком вписывались в диапазон по мануалу - не работало.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Сб ноя 05, 2016 10:55:53 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 01, 2010 09:57:22
Сообщений: 38
Рейтинг сообщения: 0
Появился очередной вопрос :(
При переключении порта на выход его состояние меняется на низкий уровень (синий квадратик), хотя в GPIO записана 1, линия подтянута к питанию через резистор. Пробовал ставить switch в разрыв и разрывать цепь датчика и МК, оставляя датчик подтянутым через рез к питанию, в момент прохода рабочей точки команд перевода порта на выход - и МК и датчик в этот момент имеют высокий уровень. Как так получается?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Вс ноя 06, 2016 10:20:26 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4578
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Пойдём по второму кругу ? Хорошо :)
Зачем Вы пытаетесь вывести лог. единицу с вывода МК, если она уже существует с помощью подтягивающего сопротивления ? Не нужно этого делать. Вывод МК переводить на выход нужно только для реализации лог. нуля !
Ну что тут может быть непонятного, объясните ? :dont_know:
Уже неоднократно Вам это было сказано, при том, что Вы ответили "я понимаю это всё". Но дальше упорно продолжаете совершать ошибки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 и DS18S20
СообщениеДобавлено: Вс ноя 06, 2016 21:40:46 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 01, 2010 09:57:22
Сообщений: 38
Рейтинг сообщения: 0
Цитата:
Зачем Вы пытаетесь вывести лог. единицу с вывода МК
Я не пытаюсь вывести единицу с вывода МК! Низкий уровень сам там появляется при переводе порта на выход. Низкий уровень мне нужно сделать через пару команд.
Цитата:
если она уже существует с помощью подтягивающего сопротивления

Нет, ее как не странно, там нет (об этом я написал - "синий квадратик")
Цитата:
Вывод МК переводить на выход нужно только для реализации лог. нуля !

Мне это и нужно, только через пару команд. А так приходится пересчитывать временные интервалы для корректной приемо-передачи.

Все-таки дело в глюках Протеуса. Хотя до этого проекта ни с одним МК, которым я работал, не было ни единого бага в этом замечательном симуляторе.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  1, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y