Делимся советами, кто собирал Slave 1-Wire

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Открыл глаза
Аватара пользователя
Сообщения: 69
Зарегистрирован: Вс сен 23, 2007 15:34:32
Откуда: г. Киров

Сообщение Slawo »

Банальная ситуация. На Котике уже не одна ГОТОВАЯ схемка с реализованым Slave 1-Wire (эмуляторы DS1990). Хочу тоже собрать для изучения 1-wire ведомых устройств подобный эмулятор.

Поделитесь советами, как нужно обрабтывать пришедшие перывания от мастера и в каких случаях держать ножки нашего МК входом и выходом и с какими уровнями (0 или 1).

Я использую ножку с прерыванием INT0. Держу ее входом с подтяжкой. Когда приходит импульс Reset от мастера, жду в обработчике прерывания (по счетчику у нас переменная imp = 0, значит это пришел первый импульс) 480+60мкс, настраиваю порт на выход, записываю в него 0 и жду 240 мкс, имитируя Presence. Затем опять настраиваю пин на вход с подтяжкой. Затем пропускаю 8 прерываний (приходит команда чтения ключа) и затем на каждое прерывание если в наших данных нужно передать 0, после 5 мкс после возникновения прерывания, настраиваю пин на выход и держу его в нуле 60 мкс, а если нужно передать 1 то ничего не делаю с пином, просто сдвигаю свои данные на один вправо, чтобы при следующем перывании знать что передавать.

Вот че-то не выходит ничего, в среду в город приеду, найду там еще LPT порт (на ноуте нету такового) и попробую анализатором посмотреть что там на линии происходит.

Может вы сразу что найдете, что за косячек. Или кто как делал?
1000 паяльников мне в задницу!
Контактная информация:
Реклама
Открыл глаза
Сообщения: 70
Зарегистрирован: Пт янв 30, 2009 18:02:40

Сообщение mackerel »

Ну, косячок не косячок, но одна нехорошесть таки есть. С какой стати Вы переключаетесь туда-сюда вход-выход??? Используйте соответствующий бит DDR порта. Пусть у Вас используется порт B разряд 0, например. Тогда установив PORTB.0 = 0, DDRB.0 = 0 имеем на выходе лог.1 от внешней подтяжки (она есть, надеюсь? Обязательно должна быть, причём около 4.7K, насколько я помню!). Теперь устанавливаем DDRB.0 = 1. Что имеем на выходе? Правильно, лог.0! Т.е. значение на выводе инверсно значению DDR.
Так, кстати, и I2C программно эмулируют.
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 69
Зарегистрирован: Вс сен 23, 2007 15:34:32
Откуда: г. Киров

Сообщение Slawo »

Так, пасибки, первая здравая мысль =)
Был не прав, исправлю, я даже домофон с двери оторвал для испытаний, тока его сначала нужно отремонтировать =)
1000 паяльников мне в задницу!
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 69
Зарегистрирован: Вс сен 23, 2007 15:34:32
Откуда: г. Киров

Сообщение Slawo »

Такс.... Так все таки, лучше порт iWire сканировать на на личие изменения состояния с единицы в ноль при передаче мастером данных, или использовать внешнее прерывание INT? В схемке еще динамическая индикация для выбора номера ключа используется.
1000 паяльников мне в задницу!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 70
Зарегистрирован: Пт янв 30, 2009 18:02:40

Сообщение mackerel »

Ну, я бы по прерыванию работал. Да там и делов-то в прерывании, господи... А динамическая индикация сама по себе, по таймерному прерыванию. Конечно, если есть опасение, что "динамическое" прерывание очень длиное - а скорее всего так и есть - при входе в него просто разрешите прерывание от 1-Wire.
Ну, и времена посчитать неплохо бы...
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 69
Зарегистрирован: Вс сен 23, 2007 15:34:32
Откуда: г. Киров

Сообщение Slawo »

О, кстати, крута, лучше разрешать прерывание INT в прерывании от таймера, чем запрещать прерывание от таймера на момент работы 1-Wire. Пасиба, вроде ведь все просто на поверхности, но моск мой атрофировался за каникулы )))
1000 паяльников мне в задницу!
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль

Сообщение nictrace »

о, у меня была где-то прога под windows, читающая таблетку, приложенную к lpt-порту :))

А про эмуль могу сказать - подтяжка осуществляется на стороне замка. А чип хорошо б запитать от самой линии, для этого нужны кондер 4.7 мкф и диод.
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»