 |
|
|
|
| Автор |
Сообщение |
urry Живет здесь... (>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)


Зарегистрирован: 23.10.2006 Сообщения: 243
|
Добавлено: 22 Июл 2007, 10:51 Заголовок сообщения: |
|
|
Простите, относительно презент пульсе был неправ - его можно и не стробировать - посмотрел даташит. Но всю жизнь стробировал.. Вреда от этого не было. _________________ меня не интересует мнение людей. которые разбираются в этом вопросе. Только тех, кто сами что-то сделали (А. Энштейн) |
|
| Вернуться к началу |
|
 |
klevogivesh Частый гость (>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 |
|
| Вернуться к началу |
|
 |
Rusia Частый гость (>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 |
|
| Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять вложения в этом форуме Вы можете просматривать вложения в этом форуме
|
|