1-wire счетчик импульсов

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

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

Страницы памяти, счетчики, scratchpad

Адресное пространство устройства состоит из 16 страниц памяти, каждая размером по 32 байта:
СтраницаАдресаНазначениеСчетчик
00x000 .. 0x01fСостояние и настройки-
10x020 .. 0x03fЗарезервировано-
20x040 .. 0x05fЗарезервировано-
30x060 .. 0x07fЗарезервировано-
40x080 .. 0x09fЗарезервировано-
50x0a0 .. 0x0bfScratchpad-
60x0c0 .. 0x0dfДанные пользователя - 24 байта-
70x0e0 .. 0x0ffScratchpad (копия)-
80x100 .. 0x11fСостояние и настройки (копия)-
90x120 .. 0x13fЗарезервировано-
100x140 .. 0x15fЗарезервировано-
110x160 .. 0x17fЗарезервировано-
120x180 .. 0x19fЗарезервировано-
130x1a0 .. 0x1bfScratchpad (копия)-
140x1c0 .. 0x1dfДанные пользователя (копия)A
150x1e0 .. 0x1ffScratchpad (копия)B

Каждая страница памяти имеет связанный с ней 32-битный счетчик. Счетчики A и B привязаны к страницам 14 и 15 соответственно, счетчики остальных страниц не используются и всегда имеют значение 0. Значение любого из 16ти стчетчиков можно получить специальным запросом (0xA5 READ MEM COUNTER), которым гарантируется атомарное чтение счетчика. Значение счетчиков A и B можно также получить чтением байтов 0..7 страниц 0 или 8, в которые отображаются значения счетчиков A и B, но в этом случае чтение выполняется не атомарно (между последовательным чтением байтов счетчика может произойти его инкремент). Запись счетчиков A и B возможна только путем записи в байты 0..7 страницы памяти 0, запись будет выполнена атомарно.

Чтение данных из адресов памяти происходит напрямую (0xA5 READ MEM COUNTER), а запись посредством специальной области памяти Scratchpad размером 32 байта: сначала данные записываются в Scratchpad (0x0F WRITE SCRATCH), а затем атомарно копируются из Scratchpad в заданные адреса памяти (0x5A COPY SCRATCH). Содержимое Scratchpad можно прочитать как специальным запросом (0xAA READ SCRATCH), так и чтением страниц памяти 5,7,13 и 15, в которых отображается Scratchpad. Запись в Scratchpad или в любую из страниц 5,7,13 или 15 изменяет только Scratchpad и его отображение в этих страницах. Запись в другие страницы приводит к затиранию Scratchpad и его отображений записываемыми данными.

Состояние и настройки

Состояние и настройки устройства хранятся в области памяти, часть которой отображается в страницах памяти 0 и 8 (обе отображаются на одну и ту же часть состояния и настроек) и часть в байтах 24..31 страниц 6 и 14 (обе отображаются на одну и ту же часть состояния).

Все байты состояния и настроек доступны для чтения. Для записи доступны только байты 0..7 страницы 0 (значения счетчиков) и байты 8..13 страницы 8 (настройки).

Все байты в страницах 1..4, 9..12, а также байты 14..16, 18..31 в страницах 0 и 8 и байты 25..31 в страницах 6 и 14 являются зарезервированными.

Адреса 0x000..0x003 и 0x100..0x103

Бит76543210
Адрес внутри страницы: 0Counter A:[7..0]
Адрес внутри страницы: 1Counter A:[15..8]
Адрес внутри страницы: 2Counter A:[23..16]
Адрес внутри страницы: 3Counter A:[31..24]
Чтение/запись в странице 0R/WR/WR/WR/WR/WR/WR/WR/W
Чтение/запись в странице 8RRRRRRRR
Начальное значение00000000

Счетчик A в обычном режиме работы (не в режиме измерений), 4 байта, первым идет младший байт.

Бит76543210
Адрес внутри страницы: 0Counter A:[7..0]
Адрес внутри страницы: 1Counter A:[15..8]
Адрес внутри страницы: 2Measure Min:[7..0]
Адрес внутри страницы: 3Measure Max:[7..0]
Чтение/запись в странице 0R/WR/WR/WR/WR/WR/WR/WR/W
Чтение/запись в странице 8RRRRRRRR
Начальное значение00000000

В режиме измерений два старших байта счетчика A используются для накопления статистики минимального и максимального значения оцифрованного аналогового сигнала для тех замеров, которые прошли фильтр (если активен аналоговый режим: threshold rising > threshold falling, иначе min и max не определены).

Адреса 0x004..0x007 и 0x104..0x107

Бит76543210
Адрес внутри страницы: 4Counter B:[7..0]
Адрес внутри страницы: 5Counter B:[15..8]
Адрес внутри страницы: 6Counter B:[23..16]
Адрес внутри страницы: 7Counter B:[31..24]
Чтение/запись в странице 0R/WR/WR/WR/WR/WR/WR/WR/W
Чтение/запись в странице 8RRRRRRRR
Начальное значение00000000

Счетчик B в обычном режиме работы (не в режиме измерений), 4 байта, первым идет младший байт.

Бит76543210
Адрес внутри страницы: 4Counter B:[7..0]
Адрес внутри страницы: 5Counter B:[15..8]
Адрес внутри страницы: 6Measure Samples:[7..0]
Адрес внутри страницы: 7Measure Samples:[15..8]
Чтение/запись в странице 0R/WR/WR/WR/WR/WR/WR/WR/W
Чтение/запись в странице 8RRRRRRRR
Начальное значение00000000

В режиме измерений два старших байта счетчика B используются для накопления статистики количества замеров, которые прошли фильтр. Количество замеров, 2 байта, первым идет младший байт.

Адреса 0x008..0x00b и 0x108..0x10b

Бит76543210
Адрес внутри страницы: 8Threshold falling A:[7..0]
Адрес внутри страницы: 9Threshold rising A:[7..0]
Адрес внутри страницы: 10Threshold falling B:[7..0]
Адрес внутри страницы: 11Threshold rising B:[7..0]
Чтение/запись в странице 0RRRRRRRR
Чтение/запись в странице 8R/WR/WR/WR/WR/WR/WR/WR/W
Начальное значение00000000

Threshold - пороговые значения, используемые для преобразования оцифрованого аналогового сигнала в логический:
Значение оцифрованого аналогового сигнала VЛогическое состояние входа после преобразования
Threshold falling >= Threshold risingпреобразование выключено, состояние читается со входа
V < Threshold fallingнизкий уровень
V > Threshold risingвысокий уровень
Threshold falling <= V <= Threshold risingпредыдущее состояние

Адреса 0x00c и 0x10c

Бит76543210
Адрес внутри страницы: 12PINCAPINCBPUDAPUDBSPWR1SPWR0PUT1PUT0
Чтение/запись в странице 0RRRRRRRR
Чтение/запись в странице 8R/WR/WR/WR/WR/WR/WR/WR/W
Начальное значение00000000

PINCA/PINCB - включение режима инкремента счетчика A/B по обоим фронтам (см. таблицу состояний в описании бит EDGEA/EDGEB).

PUDA/PUDB - запрет подключения резистора подтяжки к питанию для входа A/B:
PUDРежим
0Подтяжка разрешена
1Подтяжка запрещена

SPWR[1..0] - режим питания датчиков:
SPWR1SPWR0Режим
00Напряжение на PWR всегда выключено
01Напряжение на PWR подается импульсно
10PWR используется как вход B, напряжение на B подается импульсно
11Напряжение на PWR всегда включено
Пин PWR может обеспечить не более 100мкА, пин B может обеспечить не более 10мА.

PUT[1..0] - задержка после включения подтяжек и питания датчиков и перед замером:
PUT1PUT0Режим
0025 мкс
0150 мкс
10125 мкс
11425 мкс

Адреса 0x00d и 0x10d

Бит76543210
Адрес внутри страницы: 13EDGEAEDGEBMSRPMSRLMSRAMSRBSMP1SMP0
Чтение/запись в странице 0RRRRRRRR
Чтение/запись в странице 8R/WR/WR/WR/WR/WR/WR/WR/W
Начальное значение00010011

EDGEA/EDGEB - фронт для инкремента счетчика A/B:
PINCEDGEРежим
00Инкремент по падающему фронту (переход с высокого уровня в низкий)
01Инкремент по растущему фронту (переход с низкого уровня в высокий)
1не имеет значенияИнкремент по обоим фронтам

MSRP - фильтр режима питания устройства для режима измерений:
MSRPРежим
0Накапливать статистику только при работе от батареи
1Накапливать статистику только при работе от внешнего питания

MSRL - фильтр текущего уровня со входа, для которого включен режим измерений:
MSRLРежим
0Накапливать статистику только при низком уровне
1Накапливать статистику только при высоком уровне

MSRA,MSRB - включение режима измерений для входа A/B:
MSRAMSRBРежим
00Режим измерений отключен
01Режим измерений включен для входа B
10Режим измерений включен для входа A
11Зарезервировано

SMP[1..0] - интервал между замерами:
SMP1SMP0Режим
0019 мс
0138 мс
1075 мс
11150 мс

Адреса 0x011 и 0x111

Бит76543210
Адрес внутри страницы: 17Level ALevel BЗарезервировано
Чтение/запись в странице 0RRRRRRRR
Чтение/запись в странице 8RRRRRRRR
Начальное значение00000000

Level A/B - текущее значение логического состояния входов A и B, 0 - низкий, 1 - высокий.

Адреса 0x0d8 и 0x1d8

Бит76543210
Адрес внутри страницы: 24Battery:[7..0]
Чтение/запись в странице 6RRRRRRRR
Чтение/запись в странице 14RRRRRRRR
Начальное значение00000000

Battery - текущее значение представляющее уровень напряжения батареи CR2032. Напряжение на батарее в Вольтах можно вычислить по формуле Vbat = (Vcc - 0.68V) * Battery / 256. В режиме измерений значение Battery не определено.

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

Байты 0..23 страниц 6 и 14 (обе страницы являются отображением друг друга) доступны для хранения данных пользователя.

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