[an error occurred while processing this directive]
|
1. Перед КАЖДОЙ операцией необходимо формировать "Reset Pulse".
Длительность этого импульса от 480 до 960 мкс. Глупо формировать его длительностью в 960 мкс т.к. это пограничное условие. Необходимая длительность 480 + ((960 - 480) / 2). Это же элементарно, не так ли?
2. После "ResetPulse" переводим линию в Z-состояние, отмеряем 90 мкс. (чтобы опять попасть в середину). И смотрим наличие "PresenceImpulse" от DS1821. Если импульса нет, то "отваливаем" от чувака на некоторое время чтобы он закончил валять дурака и спустя некоторый промежуток времени повторяем до посинения.
3. Если "PresencePulse" нет, то:
a)DS1821 не подключен.
b)DS1821 сдох.
c)DS1821 находится в режиме термостата и не может работать с 1-Wire Bus. Гляньте DataSheet(у), там всё расписано, сколько и каких импульсов генерить на DQ, и куда в этот момент "тянуть" питание, чтобы вправить DS-у brain-ы и заставить его таки слушаться.
4. Регистр статуса не только писАть, а ещё и иногда читать нужно. Зачем? А чтобы DONE бит контролировать. Если его не контролировать - то чушь получите, а не результат.
5. Бит NVB тоже нужно анализировать, а то нарвётесь на "Device is busy now... try again some later."
Остальное - дело техники и тех же brain-ов.
Желаю здравствовать.
E-mail: info@telesys.ru