Всем привет! Делаю Slave-устройство на ATtiny45. Я не хочу взламывать домофоны, а хочу разобраться с данным протоколом. Но не могу сдвинуться дальше, т.к до конца не понимаю принцип передачи данных 1Wire. 1. У меня получилось отвечать на RESET пульс PRESENCE пульсом. 2. В ответ мне ведомое устройство (в моем случае Arduino) посылает команду 0xF0 (вроде SEARCH). Вот осциллограмма этих действий: А вот осциллограмма если приложить iButton: Далее мне нужно передавать по-битно данные, а в конце передать CRC-сумму. Тут возникают вопросы: 1. Когда начинать передавать данные (Он должен давать импульсы, а я на них отвечать или тупо слать все биты по тайм-слотам в 60мкс?) 2. Как закончить передавать данные (тупо оставить все как есть, само закончится?) Есть библиотека OneWire.h для Arduino, которой собственно я пользуюсь, но я не очень силен в таких сферах, можно сказать - первая практика. Читал эту и ещё несколько тем: http://robocraft.ru/blog/communication/117.html Только вот не очень дошел до сознания, помогите докурить)) Спасибо.
Чтобы произвести чтениеiButton, master для чтения одного бита данных просто генерирует тайм-слот записи лог. 1 (именно тайм-слот записи, а не чтения). Если бит, который посылает iButton, равен 1, то iButton просто ожидает появления следующего тайм-слота, пропуская текущий. При этом с линии данных master считывает 1. Если бит, который посылает iButton, равен 0, то iButton удерживает линию данных в состоянии лог. 0 определённое время, и master считывает с линии данных 0. http://microsin.ru/content/view/508/44/
Спасибо за статью! Тут вопросик: Я правильно понял, что мастер должен в начале тайм-слота сделать LOW, а потом "отпускает" линию, и тут уже сам slave должен либо "LOW" либо "HIGH" остаток тайм слота держать. Но по осциллограмме видно, что после 8 бит команды со стороны master чуть-чуть HIGH держится линия, а потом сразу сбрасывается и заново идет цикл ожидания устройства (RESET) Или же все должен Slave генерировать после команды от master?
Симпатичная реализация. http://robocraft.ru/blog/arduino/118.html http://robocraft.ru/blog/arduino/124.html