Форум по разработке и ремонту электронной техники Киевский форум радиолюбителей и электронщиков. Форумы по разработке и ремонту электронной техники
    Схемы электрические принципиальныеГлавная    ФорумФорум    ПоискПоиск по форуму    Личные сообщенияФайлообменник    Личные сообщенияРадиотехнический каталог   

Фотогалерея   <b>Профиль</b>Ваш профиль    Личные сообщенияЛичные сообщения    ГруппыГруппы   

FAQFAQ    РегистрацияРегистрация    ВходВход

Уважаемые посетители! Это старая версия форума. Новая версия находится по адресу: http://www.remexpert.com
Термодатчик DS18B20
На страницу Пред.  1, 2
 
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Форум по разработке и ремонту электронной техники -> Микроконтроллеры, процессоры, ПЛИС...
 
Автор Сообщение
urry
Живет здесь... (>100)
Живет здесь... (>100)


Зарегистрирован: 23.10.2006
Сообщения: 243

СообщениеДобавлено: 21 Июл 2007, 16:25    Заголовок сообщения: Ответить с цитатой

Как Вы правильно заметили 1820 и 18в20 - это разные градусники- и не наличием 4 ножки, а тем, что температура выдается в разных форматах. Я рекомендую все-таки установить протеус и отмоделировать там вашу схему. Если бы Вы доли нех своего проекта, то можно было что-то сказать.
Что касается Вашего файла, то навскидку - здесь не нравится
Код:

resetds:
   sbi   DDRD,dsio   ;Make I/O pin an output
   cbi   PORTD,dsio   ;Pull I/O pin low
   ldi   timeout,0   ;Make timer 0 count 256 * 0.8uS
   rcall   delay
   ldi   timeout,0   ;Make timer 0 count 256 * 0.8uS
   rcall   delay
   ldi   timeout,-100   ;Make timer 0 count 100 * 0.8uS
   rcall   delay
   sbi   PORTD,dsio   ;Pull I/O pin high

сформировали резет пульсе, но где стробирование презентпульсе ?????
Код:

   cbi   DDRD,dsio   ;Make I/O pin an input
   ldi   timeout,-111   ;Make timer 0 count 111 * 0.8uS
   rcall   delay
   clt         ;Assume device not present
   sbis   PIND,dsio   ;Check for presence pulse
   set         ;Indicate result in T
   ldi   timeout,0   ;Make timer 0 count 256 * 0.8uS
   rcall   delay
   ldi   timeout,0   ;Make timer 0 count 256 * 0.8uS
   rcall   delay
   ldi   timeout,-100   ;Make timer 0 count 100 * 0.8uS
   rcall   delay
   ret

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

_________________
меня не интересует мнение людей. которые разбираются в этом вопросе. Только тех, кто сами что-то сделали (А. Энштейн)


Последний раз редактировалось: urry (23 Июл 2007, 21:25), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
urry
Живет здесь... (>100)
Живет здесь... (>100)


Зарегистрирован: 23.10.2006
Сообщения: 243

СообщениеДобавлено: 22 Июл 2007, 10:51    Заголовок сообщения: Ответить с цитатой

Простите, относительно презент пульсе был неправ - его можно и не стробировать - посмотрел даташит. Но всю жизнь стробировал.. Улыбка Вреда от этого не было.
_________________
меня не интересует мнение людей. которые разбираются в этом вопросе. Только тех, кто сами что-то сделали (А. Энштейн)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
klevogivesh
Частый гость (>5)
Частый гость (>5)


Зарегистрирован: 04.07.2007
Сообщения: 10

СообщениеДобавлено: 26 Июл 2007, 11:26    Заголовок сообщения: Ответить с цитатой

Ура! Заработало! Программа оказалась рабочей, и она не неизвестно откуда, а с сайта elin.ru. Вот ссылочка кого интересует:

http://www.elin.ru/1-Wire/?topic=soft
раздел:Примеры реализации 1-Wire-протокола микроконтроллерами различных типов.

Проблема заключалась в термодатчике. Он оказывается вышел из строя, точнее скорее его аналоговая часть, так как при первом подключении была перепутана полярность питания. Теперь вопрос другой. При паразитном питании в даташите сказано, что после команды Convert T необходимо подключать нагрузочный резистор, а на какое время не сказано. За какое время происходит конвертирование температуры? И потом есть ли еще какие-нибудь различия в программной реализации двух этих режимов?

Спасибо вам всем большое, своими советами вы мне очень помогаете. Хоть мысли кое-какие пояляютсяУлыбка
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndryG
Модератор


Зарегистрирован: 24.07.2006
Сообщения: 411
Откуда: Helios-3

СообщениеДобавлено: 26 Июл 2007, 16:01    Заголовок сообщения: Ответить с цитатой

В даташите на DS18B20 писано, что при паразитном питании необходимо в течении максимум ХХ мкс после подачи команды запуска конвертирования подтянуть вывод данных к питанию через резистор в ХХ кОм на время не менее ХХ секунд.

ХХ - посмотрите в даташите.

Разница программных реализаций ... при паразитном питании пока идет преобразование обмен невозможен.
Ну и нужно подтягивать данные на питание.

Причем прошу заметить ... если на AVR цепляете ... то нужно обратить внимание на порядок изменения регистроd управления порта ... там может получится, что Вы при подтяжке питания можете влепить импульс отрицательный ... и получите ошибку ... сам не попадался, но на форуме проскакивало.

_________________
AndryG
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rusia
Частый гость (>5)
Частый гость (>5)


Зарегистрирован: 30.07.2007
Сообщения: 7
Откуда: Донбасс

СообщениеДобавлено: 01 Авг 2007, 22:20    Заголовок сообщения: Ответить с цитатой

Может немного не в тему, но спрошу.
Тоже бьюсь над ds18b20. Реализовал на AlgorithmBuildere опрос датчика. После команды Convert_T жду 1000 мс, считываю с линии 2 байта закодированной велечины температуры. Потом сдвигаю младший байт вправо на 4 бита. Со старшего байта переписываю 0, 1 и 2 биты в младший байт на 4, 5 и 6 биты соответственно. 7-й бит равен 0 (в этом случае точность равна 1 градусу Цельсия, что меня вполне устраивает). Теперь вопрос - как из полученного байта получить велечину температуры и представить ее в виде двух регистров десятичных разрядов числа (для вывода велечина на LCD)?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndryG
Модератор


Зарегистрирован: 24.07.2006
Сообщения: 411
Откуда: Helios-3

СообщениеДобавлено: 02 Авг 2007, 10:19    Заголовок сообщения: Ответить с цитатой

Почитайте о BCD-числах ... посмотрите в гугле "двоично-десятичная запись числа" -- всё станет на свои места
_________________
AndryG
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Форум по разработке и ремонту электронной техники -> Микроконтроллеры, процессоры, ПЛИС... Часовой пояс: GMT + 2
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы можете просматривать вложения в этом форуме


Rambler's Top100 PageRank Яндекс цитирования
Сайты наших друзей: Гири, все о гирях, Автоматизация магазинов, супермаркетов, ресторанов, кинотеатров,
Весы электронные, Сканеры штрих-кода, Принтеры штрих-кода

Powered by phpBB © 2001, 2005 phpBB Group

Время генерации страницы: 0.4814s (PHP: 90% - SQL: 10%) - SQL запросов: 12 - GZIP enabled - Debug on