![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
dendim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.1.2012 Репутация: нет Всего: нет |
Всем доброго времени суток. Нужна помощь.
Необходимо на ATMega16 измерить температуру датчиком DS18B20 и отправить на комп через COM-порт. У кого-нибудь есть примеры на ассемблере? очень надо. Как инициализировать датчик? |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
а почему не си ? на си точно видел примеры в интернете и работы с 18б20 и с уартом...
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
dendim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.1.2012 Репутация: нет Всего: нет |
Благодарю за ответ, но уже не надо. Все нашел, все сделал что хотел)))
|
|||
|
||||
Laplace |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 8.3.2012 Репутация: нет Всего: нет |
Уважаемые знатоки!
Заранее прошу прощения, если вопрос глупый..я новичок. Помогите разобраться, как работает датчик? Не совсем понятно что делать с регистром PORTx в то время, когда ждем ответ от датчика (DDRx установлен в "0"). Держать лапку по умолчанию в "1", через внутренний подтягивающий резистор (если датчик заземляет шину в нужное время), или держать по умолчанию в "0", в состоянии Hi-Z (если датчик выдает на шину высокий уровень)? |
|||
|
||||
LeonidPr |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
С 1-Wire сам не работал, но здесь используют внешний подтягивающий рез-р. И, судя по временной диаграмме на стр. 10, при ожидании ответа от устройства вам нужно ножку переводить в 3-е состояние, считывая при этом через нее состояние шины.
И еще, как я понял из описания временной диаграммы на той же 10 стр., перевод шины из нулевого уровня в единичный производится путем перевода пина в 3-е состояние, при этом резистор подтягивает шину к +5 В. Однажды, используя такой способ я столкнулся с проблемой сильного завала фронтов, видимо паразитные емкости цепей очень медленно заряжались через подтягивающий резистор. Решение простое. Прежде чем переводить пин в 3-е состояние, пока он активен, выдайте на него сигнал логической единицы, а потом уже следующей инструкцией переводите его в 3-е состояние. Мне этот прием сильно помог, фронты стали нормальными. Это сообщение отредактировал(а) LeonidPr - 8.3.2012, 23:23 --------------------
pkunzip.zip |
|||
|
||||
Laplace |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 8.3.2012 Репутация: нет Всего: нет |
По новому взглянул на схему и, вроде бы, разобрался
![]() Упустил из виду важнейшую деталь - внешний подтягивающий резистор. LeonidPr, спасибо за помощь и за совет про фронты. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |