Эмуляция 1-проводных устройств

Я хочу сделать микросхему ATTiny ведомой на 1-проводной шине со своим собственным серийным номером и списком команд для своих конкретных функций.

Я хочу знать, могу ли я использовать библиотеку One Wire с сайта Arduino для отправки данных в виде раб.

Например, в одной комнате у вас может быть подчиненное устройство с несколькими типами датчиков, которые будут сообщать главному запрошенную информацию, или главный может приказать ему управлять чем-то вроде жалюзи.

Вопрос Придется ли мне следить за линией шины и отвечать на запрос ведущего устройства, а также принимать во внимание способ отправки данных обычным датчиком? На какой частоте мне следует запускать ведомое устройство, чтобы получить максимальную функциональность?

Я не буду использовать паразитную силу.

, 👍10

Обсуждение

http://forum.arduino.cc/index.php?PHPSESSID=trj6v208snqfutqhrfltnu0364&topic=65706.0, @Gerben

@Gerben - я уже нашел это раньше в поиске. Пролистал его. Но меня это насторожило, так как были некоторые ошибки, правда решенные, достоверность не знаю. Кроме того, поиск конструкций врагов с использованием пользовательских рабов не казался обычным делом, отсюда и вопрос выше., @RSM

Вроде говорят, что библиотека это поддерживает. [Вот библиотека специально для этого](http://forum.pjrc.com/threads/23939-Strange-behavior-on-the-Onewireslave-library?p=33608&viewfull=1#post33608) Думаю. Скорость вроде около 15кбит/с. Я думаю, что скорость процессора не имеет особого значения, но это зависит от библиотеки. Если он не питается от батареи, просто запустите его на частоте 8 или 16 МГц, и все будет в порядке., @Gerben

@Gerben Я проверю библиотеку, чтобы посмотреть, как она работает. Я до сих пор не понимаю одного: почему некоторые вещи так редко не используют однопроводное подчиненное устройство?, @RSM

@RSM Вам следует проверить эту библиотеку https://github.com/MarkusLange/OneWireSlave, @Ryu_hayabusa

@Ryu_hayabusa, ты должен использовать это как ответ, @AMADANON Inc.


1 ответ


3

Насколько мне известно, библиотека 1-wire, которую вы указали в своем вопросе, позволяет действовать только как ведущая, а не ведомая.

Я только что выпустил библиотеку, позволяющую превратить плату Arduino в однопроводное ведомое устройство, здесь: https://github .com/neuoy/OneWireArduinoSlave (редактирование: перенесено сюда https://gitea.youb.fr/youen /OneWireArduinoSlave). Я использую его в своей собственной системе домашней автоматизации, и в моей настройке он работает безупречно (1-проводное главное устройство, DS9490R, подключается к ноутбуку через USB, а также обеспечивает питание Arduino, которым является Arduino Uno). Библиотека обрабатывает детали низкого уровня: сопоставление ПЗУ, отправку и получение байтов (что на самом деле довольно сложно сделать правильно, в большинстве случаев невозможно без логического анализатора). Остальное зависит от вас.

Он полностью реализован с помощью прерываний, все коммуникации выполняются в фоновом режиме, вы можете выполнять другой код как обычно, параллельно, и получать уведомления с помощью обратного вызова при получении байтов и т. д. Отправка байтов мастеру также является асинхронной.

р>

Я также знаю, что существует как минимум еще одна библиотека, https://github.com/MarkusLange/OneWireSlave, как указано выше. автор Рю_хаябуса. У меня это не сработало (не знаю, связано ли это с моей аппаратной настройкой или по другой причине), но у других оно определенно работает, так что тоже стоит попробовать. Кажется, эта библиотека не реализована с прерываниями, поэтому ваша программа блокируется в ожидании основной активности (что вполне приемлемо во многих сценариях).

,

Репозиторий, похоже, переехал на https://gitea.youb.fr/youen/OneWireArduinoSlave., @Jonas Berlin

@JonasBerlin Действительно, я переместил репозиторий (просто отредактировал ответ, чтобы отразить это). Я оставляю старую ссылку в качестве резервной копии на всякий случай и в качестве ссылки, чтобы найти ответвления других людей на GitHub., @youen

Возможно, следует скопировать проблемы?, @Jonas Berlin