1-wire модуль расширения портов

English translation | Руководство пользователя | Библиотека для Arduino | Web-интерфейс устройства

Память устройства

Страницы памяти

Адресное пространство устройства состоит из 4 страниц памяти, каждая размером по 8 байт:
СтраницаАдресаНазначение
00x00 .. 0x07Результаты АЦП
10x08 .. 0x0fСостояние и настройки
20x10 .. 0x17Пороговые значения
30x18 .. 0x1fДанные поьзователя, состояние и настройки

Для чтения и записи доступно все адресное пространство. Чтение и запись данных из/в адреса памяти происходит побайтно (команды 0xAA READ MEM, 0x55 WRITE MEM). Результаты АЦП содержат 16-битные значения, которые записываются в две ячейки памяти самим устройством асинхронно после завершения преобразования последовательно по каждому порту (преобразование запускается командой 0x3c CONVERT), чтение младшего и старшего байта с устройства происходит атомарно (ситуация чтения младшего байта старого результата и старшего байта нового результата исключена). При записи байт, изменяющих настройку порта, изменение происходит сразу после записи каждого байта.

Флаги тревоги

Устройство имеет 14 флагов тревоги: POR, AFD[0..4], AFL[0,2..4], AFH[0,2..4], при установленном хотя бы одном из которых, устройство будет отвечать на запрос поиска устройств с тревогой. Само устройство может изменять состояние флагов (см. описание соответствующих флагов). Все флаги также доступны для чтения и изменения путем обращения к битам по определенным адресам. Чтобы исключить устройство из списка устройств с тревогой, необходимо сбросить все флаги тревоги.

Адреса 0x00..0x07

Бит76543210
Адрес 0x00ADCV0:[7..0]
Адрес 0x01ADCV0:[15..8]
Адрес 0x02ADCV2:[7..0]
Адрес 0x03ADCV2:[15..8]
Адрес 0x04ADCV3:[7..0]
Адрес 0x05ADCV3:[15..8]
Адрес 0x06ADCV4:[7..0]
Адрес 0x07ADCV4:[15..8]
Чтение/записьR/WR/WR/WR/WR/WR/WR/WR/W
Начальное значение00000000

ADCV[0,2..4] - значение результата последнего АЦП на порту P[0,2..4], 2 байта, первым идет младший байт. Всегда 16-битное значение: независимо от установленной точности (RES) результат всегда сдвинут влево так, что старший разряд находится в 15-ом бите, младшие незначащие биты обнулены.

Адреса 0x08, 0x0a, 0x0c, 0x0e

Бит76543210
Адрес 0x08OE0OC0DI0REF0RES0:[3..0]
Адрес 0x0aOE2OC2DI2REF2RES2:[3..0]
Адрес 0x0cOE3OC3DI3REF3RES3:[3..0]
Адрес 0x0eOE4OC4DI4REF4RES4:[3..0]
Чтение/записьR/WR/WRR/WR/WR/WR/WR/W
Начальное значение00000000

OE[0,2..4] и OC[0,2..4] - режим работы порта P0,P2..P4:
OEOCРежим работы порта
00Высокоимпедансное состояние
01Включен резистор подтяжки между входом и VCC
10На выходе логический 0 (низкий уровень)
11На выходе логическая 1 (высокий уровень)
Установка режима работы на выход не запрещает возможность чтения порта (чтение/мониторинг логического уровня или АЦП).

DI[0..4] (бит DI1 для порта P1 расположен в байте по адресу 0x1f) - текущий считанный с порта P0..P4 логический уровень, 0 - низкий, 1 - высокий.

REF[0,2..4] - установка опорного напряжения АЦП для порта P[0,2..4], будет применяться для последующих запусков АЦП. Задает диапазон измерения АЦП, превышающие напряжения будут все преобразованы в максимальное значение.
REFОпорное напряжение
0VCC
1Внутреннее 1.1V

RES[0,2..4] - установка точности АЦП в битах (от 1 до 15, значение 0 соответствует 16 битам) для порта P[0,2..4], будет применяться для последующих запусков АЦП.

Адреса 0x09, 0x0b, 0x0d, 0x0f

Бит76543210
Адрес 0x09PORAFD0AFH0AFL0AEH0AEL0AED0AWD0
Адрес 0x0bPORAFD2AFH2AFL2AEH2AEL2AED2AWD2
Адрес 0x0dPORAFD3AFH3AFL3AEH3AEL3AED3AWD3
Адрес 0x0fPORAFD4AFH4AFL4AEH4AEL4AED4AWD4
Чтение/записьR/WR/CR/WR/WR/WR/WR/WR/W
Начальное значение10001100

POR - флаг перезагрузки устройства по включению питания, 0 - сброшен, 1 - установлен. Самим устройством может быть только установлен, что означает, что все настройки были сброшены. Записать можно 0 или 1 (запись 1 не приводит к перезагрузке устройства и сбросу настроек). Обновляется одновременно во всех четырех байтах.

AFD[0..4] (бит AFD1 для порта P1 расположен в байте по адресу 0x1f, но в бите с другим номером!) - флаг тревоги логического уровня порта P[0..4], 0 - сброшен, 1 - установлен. Флаг можно только сбросить путем записи 1, запись 0 сохраняет предыдущее состояние флага:
Запись в AFDAFD
0не изменяется
10
Самим устройством флаг может быть только установлен и только в случае, если установлена 1 в соответствующем бите разрешения тревоги AED[0..4] и обнаружении логического уровня на порту P[0..4] (0 - низкий, 1 - высокий), совпадающего с соответствующим значением бита AWD[0..4], в противном случае флаг остается без изменений:
AEDAWDЛогический уровень на портуAFD
0любоелюбойне изменяется
10всегда высокийне изменяется
10обнаружен низкий1
11всегда низкийне изменяется
11обнаружен высокий1

AFL[0,2..4] / AFH[0,2..4] - флаг тревоги низкого/высокого (ниже порога THL[0,2..4] / выше порога THH[0,2..4]) значения аналогового сигнала, 0 - сброшен, 1 - установлен. Записать можно 0 или 1. Самим устройством флаг устанавливается только если соответствующий бит разрешения тревоги AEL[0,2..4] / AEH[0,2..4] установлен в 1 и аналоговое значение выходит за границу соответствующего порога, в противном случае флаг сбрасывается. Обновление обоих флагов происходит только после завершения АЦП и записи результата АЦП для соответствующего порта, флаги порта, для которого не запускалось АЦП, остаются в неизменном состоянии:
Для порта выполнялось АЦПAELРезультат АЦПAFL
нетлюбое не изменяется
да0любой0
да1ADCV:[15..8] >= THL0
да1ADCV:[15..8] < THL1
Для порта выполнялось АЦПAEHРезультат АЦПAFH
нетлюбое не изменяется
да0любой0
да1ADCV:[15..8] <= THH0
да1ADCV:[15..8] > THH1
При сравнении с пороговым значением используется только старший байт результата АЦП.

AEL[0,2..4] / AEH[0,2..4] - разрешение устанавливать флаг тревоги низкого/высокого значения аналогового сигнала для порта P[0,2..4] (см. таблицы состояний в описании бит AFL[0,2..4] / AFH[0,2..4]).

AED[0..4] (бит AED1 для порта P1 расположен в байте по адресу 0x1f) - разрешение устанавливать флаг тревоги логического уровня для порта P[0..4] (см. таблицу состояний в описании бита AFD[0..4]).

AWD[0..4] (бит AWD1 для порта P1 расположен в байте по адресу 0x1f) - контролируемый логический уровень порта P0..P4 (0 - низкий, 1 - высокий), при обнаружении которого устанавливается флаг тревоги (см. таблицу состояний в описании бита AFD[0..4]).

Адреса 0x10, 0x12, 0x14, 0x16

Бит76543210
Адрес 0x10THL0:[7..0]
Адрес 0x12THL2:[7..0]
Адрес 0x14THL3:[7..0]
Адрес 0x16THL4:[7..0]
Чтение/записьR/WR/WR/WR/WR/WR/WR/WR/W
Начальное значение00000000

THL[0,2..4] - нижнее пороговое значение аналогового сигнала, при результате АЦП ниже этого значения устанавливается флаг тревоги (см. таблицу состояний в описании бит AFL[0,2..4] / AFH[0,2..4]).

Адреса 0x11, 0x13, 0x15, 0x17

Бит76543210
Адрес 0x11THH0:[7..0]
Адрес 0x13THH2:[7..0]
Адрес 0x15THH3:[7..0]
Адрес 0x17THH4:[7..0]
Чтение/записьR/WR/WR/WR/WR/WR/WR/WR/W
Начальное значение11111111

THH[0,2..4] - верхнее пороговое значение аналогового сигнала, при результате АЦП выше этого значения устанавливается флаг тревоги (см. таблицу состояний в описании бит AFL[0,2..4] / AFH[0,2..4]).

Адрес 0x1e

Бит76543210
Адрес 0x1ePWM1:[7..0]
Чтение/записьR/WR/WR/WR/WR/WR/WR/WR/W
Начальное значение11111111

PWM1 - задает скважность сигнала на порту P1 в режиме ШИМ (при установленных OE1 = 1, OC1 = 1), в других режимах порта P1 параметр ни на что не влияет. Скважность будет равна: S = (PWM1 + 1) / 256. Скважность S = 0 можно получить установкой режима порта OE1 = 1, OC1 = 0. Установка PWM1 = 255, OE1 = 1, OC1 = 1 соответствует установке логической 1 (высокий уровень) на порту P1.

Адрес 0x1f

Бит76543210
Адрес 0x1fOE1OC1DI1не исп.не исп.AFD1AED1AWD1
Чтение/записьR/WR/WRR/WR/WR/CR/WR/W
Начальное значение00000000

OE1 и OC1 - режим работы порта P1:
OEOCРежим работы порта
00Высокоимпедансное состояние
01Включен резистор подтяжки между входом и VCC
10На выходе логический 0 (низкий уровень)
11На выходе ШИМ сигнал
Установка режима работы на выход не запрещает возможность чтения порта (чтение/мониторинг логического уровня).

DI1, AFD1, AED1, AWD1 - см. в описании бит DI[0..4], AFD[0..4], AED[0..4], AWD[0..4] соответственно.

Данные пользователя

Бит76543210
Адрес 0x18не исп.
Адрес 0x19не исп.
Адрес 0x1aне исп.
Адрес 0x1bне исп.
Адрес 0x1cне исп.
Адрес 0x1dне исп.
Чтение/записьR/WR/WR/WR/WR/WR/WR/WR/W
Начальное значение00000000

Адреса не используются устройством, их можно использовать для хранения данных пользователя.