Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > [AVR] Нужна помощь по ds18b20


Автор: dendim 19.1.2012, 20:23
Всем доброго времени суток. Нужна помощь.
Необходимо на ATMega16 измерить температуру датчиком DS18B20 и отправить на комп через COM-порт. У кого-нибудь есть примеры на ассемблере? очень надо. 
Как инициализировать датчик?

Автор: Romikgy 22.1.2012, 14:27
а почему не си ? на си точно видел примеры в интернете и работы с 18б20 и с уартом...

Автор: dendim 22.1.2012, 20:16
Благодарю за ответ, но уже не надо. Все нашел, все сделал что хотел)))

Автор: Laplace 8.3.2012, 03:05
Уважаемые знатоки!
Заранее прошу прощения, если вопрос глупый..я новичок.
Помогите разобраться, как работает датчик?
Не совсем понятно что делать с регистром PORTx в то время, когда ждем ответ от датчика (DDRx установлен в "0").
Держать лапку по умолчанию в "1", через внутренний подтягивающий резистор (если датчик заземляет шину в нужное время),
или держать по умолчанию в "0", в состоянии Hi-Z (если датчик выдает на шину высокий уровень)?

Автор: LeonidPr 8.3.2012, 20:49
С 1-Wire сам не работал, но http://www.masterkit.ru/zip/ds18b20-rus.pdf используют внешний подтягивающий рез-р. И, судя по временной диаграмме на стр. 10, при ожидании ответа от устройства вам нужно ножку переводить в 3-е состояние, считывая при этом через нее состояние шины.
И еще, как я понял из описания временной диаграммы на той же 10 стр., перевод шины из нулевого уровня в единичный производится путем перевода пина в 3-е состояние, при этом резистор подтягивает шину к +5 В. Однажды, используя такой способ я столкнулся с проблемой сильного завала фронтов, видимо паразитные емкости цепей очень медленно заряжались через подтягивающий резистор. Решение простое. Прежде чем переводить пин в 3-е состояние, пока он активен, выдайте на него сигнал логической единицы, а потом уже следующей инструкцией переводите его в 3-е состояние. Мне этот прием сильно помог, фронты стали нормальными.

Автор: Laplace 9.3.2012, 14:45
По новому взглянул на схему и, вроде бы, разобрался smile
Упустил из виду важнейшую деталь - внешний подтягивающий резистор. 
LeonidPr, спасибо за помощь и за совет про фронты.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)