Глава 11. Arduino и 1-Wire
153
Сказанное относится не только к нашему ключу-таблетке, а ко всем устройствам
1-Wire. Фирма-производитель гарантирует, что не найдется двух микросхем с оди-
наковым идентификационным номером. Нетрудно посчитать, что устройств одного
типа может быть выпущено 281 474 976 710 655 (десятичное представление
0xFFFFFFFFFFFF — 48 бит, или 6 байтов идентификационного номера).
Предположим, что на шине 1-Wire имеется более одного устройства. В этом случае
перед микроконтроллером встают две проблемы: определение количества имею-
щихся устройств и выбор (адресация) одного конкретного из них для обмена дан-
ными. Номера некоторых устройств наносятся прямо на корпус микросхем (напри-
мер, для ключей-таблеток — iButton), а номера других можно определить при по-
мощи специальных программ или устройств. Итак, предположим, что мы знаем
номера всех устройств 1-Wire на шине. Алгоритм работы с ними следующий:
1. Микроконтроллер посылает импульс
RESET
, и все имеющиеся устройства выда-
ют
PRESENCE
.
2. Микроконтроллер посылает в шину команду, которую принимают все устройст-
ва. Определено несколько общих команд для всех типов устройств 1-Wire, есть
также и команды, уникальные для отдельных типов устройств.
3. После того как микроконтроллер выдаст команду
READ ROM
, от устройства посту-
пит 8 байтов его собственного уникального адреса — микроконтроллер должен
их принять. Любая процедура обмена данными с устройством должна быть за-
вершена полностью либо прервана посылкой сигнала
RESET
.
4. Если отправлена команда
MATCH ROM
, то после нее микроконтроллер должен пе-
редать 8 байтов адреса конкретного устройства, с которым будет осуществлять-
ся последующий обмен данными.
5. Приняв эту команду, каждое устройство сравнивает передаваемый адрес со сво-
им собственным. Все устройства, адрес которых не совпал, прекращают анализ
и выдачу сигналов в линии 1-Wire, а опознавшее адрес устройство продолжает
работу. Теперь все данные, передаваемые МК, будут попадать только к этому
"адресованному" устройству.
6. Если устройство одно на шине — можно ускорить процесс взаимодействия
с ним при помощи команды
SKIP ROM
. Получив эту команду, устройство сразу
считает адрес совпавшим, хотя никакого адреса за этой командой не следует.
Некоторые процедуры не требуют приема от устройства никаких данных, в этом
случае команду
SKIP
ROM
можно использовать для передачи какой-то информа-
ции сразу всем устройствам — например, для одновременного запуска цикла
измерения температуры несколькими датчиками-термостатами типа DS18S20.
Общие команды для всех типов устройств 1-Wire представлены в табл. 11.2.
Прием и передача байтов всегда начинается с младшего бита. Порядок следования
байтов при передаче и приеме адреса устройства так же ведется от младшего
к старшему. Порядок передачи другой информации зависит от конкретного устрой-
ства.
154
Do'stlaringiz bilan baham: |