Страницы памяти
Адресное пространство устройства состоит из 4 страниц памяти, каждая размером по 8 байт:
Страница | Адреса | Назначение |
0 | 0x00 .. 0x07 | Результаты АЦП |
1 | 0x08 .. 0x0f | Состояние и настройки |
2 | 0x10 .. 0x17 | Пороговые значения |
3 | 0x18 .. 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
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес 0x00 | ADCV0:[7..0] | |||||||
Адрес 0x01 | ADCV0:[15..8] | |||||||
Адрес 0x02 | ADCV2:[7..0] | |||||||
Адрес 0x03 | ADCV2:[15..8] | |||||||
Адрес 0x04 | ADCV3:[7..0] | |||||||
Адрес 0x05 | ADCV3:[15..8] | |||||||
Адрес 0x06 | ADCV4:[7..0] | |||||||
Адрес 0x07 | ADCV4:[15..8] | |||||||
Чтение/запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ADCV[0,2..4] - значение результата последнего АЦП на порту P[0,2..4], 2 байта, первым идет младший байт. Всегда 16-битное значение: независимо от установленной точности (RES) результат всегда сдвинут влево так, что старший разряд находится в 15-ом бите, младшие незначащие биты обнулены.
Адреса 0x08, 0x0a, 0x0c, 0x0e
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес 0x08 | OE0 | OC0 | DI0 | REF0 | RES0:[3..0] | |||
Адрес 0x0a | OE2 | OC2 | DI2 | REF2 | RES2:[3..0] | |||
Адрес 0x0c | OE3 | OC3 | DI3 | REF3 | RES3:[3..0] | |||
Адрес 0x0e | OE4 | OC4 | DI4 | REF4 | RES4:[3..0] | |||
Чтение/запись | R/W | R/W | R | R/W | R/W | R/W | R/W | R/W |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
OE[0,2..4] и OC[0,2..4] - режим работы порта P0,P2..P4:
OE | OC | Режим работы порта |
0 | 0 | Высокоимпедансное состояние |
0 | 1 | Включен резистор подтяжки между входом и VCC |
1 | 0 | На выходе логический 0 (низкий уровень) |
1 | 1 | На выходе логическая 1 (высокий уровень) |
DI[0..4] (бит DI1 для порта P1 расположен в байте по адресу 0x1f) - текущий считанный с порта P0..P4 логический уровень, 0 - низкий, 1 - высокий.
REF[0,2..4] - установка опорного напряжения АЦП для порта P[0,2..4], будет применяться для последующих запусков АЦП. Задает диапазон измерения АЦП, превышающие напряжения будут все преобразованы в максимальное значение.
REF | Опорное напряжение |
0 | VCC |
1 | Внутреннее 1.1V |
RES[0,2..4] - установка точности АЦП в битах (от 1 до 15, значение 0 соответствует 16 битам) для порта P[0,2..4], будет применяться для последующих запусков АЦП.
Адреса 0x09, 0x0b, 0x0d, 0x0f
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес 0x09 | POR | AFD0 | AFH0 | AFL0 | AEH0 | AEL0 | AED0 | AWD0 |
Адрес 0x0b | POR | AFD2 | AFH2 | AFL2 | AEH2 | AEL2 | AED2 | AWD2 |
Адрес 0x0d | POR | AFD3 | AFH3 | AFL3 | AEH3 | AEL3 | AED3 | AWD3 |
Адрес 0x0f | POR | AFD4 | AFH4 | AFL4 | AEH4 | AEL4 | AED4 | AWD4 |
Чтение/запись | R/W | R/C | R/W | R/W | R/W | R/W | R/W | R/W |
Начальное значение | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
POR - флаг перезагрузки устройства по включению питания, 0 - сброшен, 1 - установлен. Самим устройством может быть только установлен, что означает, что все настройки были сброшены. Записать можно 0 или 1 (запись 1 не приводит к перезагрузке устройства и сбросу настроек). Обновляется одновременно во всех четырех байтах.
AFD[0..4] (бит AFD1 для порта P1 расположен в байте по адресу 0x1f, но
в бите с другим номером!) - флаг тревоги логического уровня порта P[0..4],
0 - сброшен, 1 - установлен. Флаг можно только сбросить путем записи 1,
запись 0 сохраняет предыдущее состояние флага:
Запись в AFD | AFD |
0 | не изменяется |
1 | 0 |
AED | AWD | Логический уровень на порту | AFD |
0 | любое | любой | не изменяется |
1 | 0 | всегда высокий | не изменяется |
1 | 0 | обнаружен низкий | 1 |
1 | 1 | всегда низкий | не изменяется |
1 | 1 | обнаружен высокий | 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 |
да | 1 | ADCV:[15..8] >= THL | 0 |
да | 1 | ADCV:[15..8] < THL | 1 |
Для порта выполнялось АЦП | AEH | Результат АЦП | AFH |
нет | любое | не изменяется | |
да | 0 | любой | 0 |
да | 1 | ADCV:[15..8] <= THH | 0 |
да | 1 | ADCV:[15..8] > THH | 1 |
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
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес 0x10 | THL0:[7..0] | |||||||
Адрес 0x12 | THL2:[7..0] | |||||||
Адрес 0x14 | THL3:[7..0] | |||||||
Адрес 0x16 | THL4:[7..0] | |||||||
Чтение/запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
THL[0,2..4] - нижнее пороговое значение аналогового сигнала, при результате АЦП ниже этого значения устанавливается флаг тревоги (см. таблицу состояний в описании бит AFL[0,2..4] / AFH[0,2..4]).
Адреса 0x11, 0x13, 0x15, 0x17
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес 0x11 | THH0:[7..0] | |||||||
Адрес 0x13 | THH2:[7..0] | |||||||
Адрес 0x15 | THH3:[7..0] | |||||||
Адрес 0x17 | THH4:[7..0] | |||||||
Чтение/запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Начальное значение | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
THH[0,2..4] - верхнее пороговое значение аналогового сигнала, при результате АЦП выше этого значения устанавливается флаг тревоги (см. таблицу состояний в описании бит AFL[0,2..4] / AFH[0,2..4]).
Адрес 0x1e
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес 0x1e | PWM1:[7..0] | |||||||
Чтение/запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Начальное значение | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
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
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес 0x1f | OE1 | OC1 | DI1 | не исп. | не исп. | AFD1 | AED1 | AWD1 |
Чтение/запись | R/W | R/W | R | R/W | R/W | R/С | R/W | R/W |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
OE1 и OC1 - режим работы порта P1:
OE | OC | Режим работы порта |
0 | 0 | Высокоимпедансное состояние |
0 | 1 | Включен резистор подтяжки между входом и VCC |
1 | 0 | На выходе логический 0 (низкий уровень) |
1 | 1 | На выходе ШИМ сигнал |
DI1, AFD1, AED1, AWD1 - см. в описании бит DI[0..4], AFD[0..4], AED[0..4], AWD[0..4] соответственно.
Данные пользователя
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес 0x18 | не исп. | |||||||
Адрес 0x19 | не исп. | |||||||
Адрес 0x1a | не исп. | |||||||
Адрес 0x1b | не исп. | |||||||
Адрес 0x1c | не исп. | |||||||
Адрес 0x1d | не исп. | |||||||
Чтение/запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Адреса не используются устройством, их можно использовать для хранения данных пользователя.