Страницы памяти, счетчики, scratchpad
Адресное пространство устройства состоит из 16 страниц памяти, каждая размером по 32 байта:
Страница | Адреса | Назначение | Счетчик |
0 | 0x000 .. 0x01f | Состояние и настройки | - |
1 | 0x020 .. 0x03f | Зарезервировано | - |
2 | 0x040 .. 0x05f | Зарезервировано | - |
3 | 0x060 .. 0x07f | Зарезервировано | - |
4 | 0x080 .. 0x09f | Зарезервировано | - |
5 | 0x0a0 .. 0x0bf | Scratchpad | - |
6 | 0x0c0 .. 0x0df | Данные пользователя - 24 байта | - |
7 | 0x0e0 .. 0x0ff | Scratchpad (копия) | - |
8 | 0x100 .. 0x11f | Состояние и настройки (копия) | - |
9 | 0x120 .. 0x13f | Зарезервировано | - |
10 | 0x140 .. 0x15f | Зарезервировано | - |
11 | 0x160 .. 0x17f | Зарезервировано | - |
12 | 0x180 .. 0x19f | Зарезервировано | - |
13 | 0x1a0 .. 0x1bf | Scratchpad (копия) | - |
14 | 0x1c0 .. 0x1df | Данные пользователя (копия) | A |
15 | 0x1e0 .. 0x1ff | Scratchpad (копия) | 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
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес внутри страницы: 0 | Counter A:[7..0] | |||||||
Адрес внутри страницы: 1 | Counter A:[15..8] | |||||||
Адрес внутри страницы: 2 | Counter A:[23..16] | |||||||
Адрес внутри страницы: 3 | Counter A:[31..24] | |||||||
Чтение/запись в странице 0 | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Чтение/запись в странице 8 | R | R | R | R | R | R | R | R |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Счетчик A в обычном режиме работы (не в режиме измерений), 4 байта, первым идет младший байт.
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес внутри страницы: 0 | Counter A:[7..0] | |||||||
Адрес внутри страницы: 1 | Counter A:[15..8] | |||||||
Адрес внутри страницы: 2 | Measure Min:[7..0] | |||||||
Адрес внутри страницы: 3 | Measure Max:[7..0] | |||||||
Чтение/запись в странице 0 | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Чтение/запись в странице 8 | R | R | R | R | R | R | R | R |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
В режиме измерений два старших байта счетчика A используются для накопления статистики минимального и максимального значения оцифрованного аналогового сигнала для тех замеров, которые прошли фильтр (если активен аналоговый режим: threshold rising > threshold falling, иначе min и max не определены).
Адреса 0x004..0x007 и 0x104..0x107
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес внутри страницы: 4 | Counter B:[7..0] | |||||||
Адрес внутри страницы: 5 | Counter B:[15..8] | |||||||
Адрес внутри страницы: 6 | Counter B:[23..16] | |||||||
Адрес внутри страницы: 7 | Counter B:[31..24] | |||||||
Чтение/запись в странице 0 | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Чтение/запись в странице 8 | R | R | R | R | R | R | R | R |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Счетчик B в обычном режиме работы (не в режиме измерений), 4 байта, первым идет младший байт.
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес внутри страницы: 4 | Counter B:[7..0] | |||||||
Адрес внутри страницы: 5 | Counter B:[15..8] | |||||||
Адрес внутри страницы: 6 | Measure Samples:[7..0] | |||||||
Адрес внутри страницы: 7 | Measure Samples:[15..8] | |||||||
Чтение/запись в странице 0 | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Чтение/запись в странице 8 | R | R | R | R | R | R | R | R |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
В режиме измерений два старших байта счетчика B используются для накопления статистики количества замеров, которые прошли фильтр. Количество замеров, 2 байта, первым идет младший байт.
Адреса 0x008..0x00b и 0x108..0x10b
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес внутри страницы: 8 | Threshold falling A:[7..0] | |||||||
Адрес внутри страницы: 9 | Threshold rising A:[7..0] | |||||||
Адрес внутри страницы: 10 | Threshold falling B:[7..0] | |||||||
Адрес внутри страницы: 11 | Threshold rising B:[7..0] | |||||||
Чтение/запись в странице 0 | R | R | R | R | R | R | R | R |
Чтение/запись в странице 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 |
Threshold - пороговые значения, используемые для преобразования оцифрованого аналогового сигнала в логический:
Значение оцифрованого аналогового сигнала V | Логическое состояние входа после преобразования |
Threshold falling >= Threshold rising | преобразование выключено, состояние читается со входа |
V < Threshold falling | низкий уровень |
V > Threshold rising | высокий уровень |
Threshold falling <= V <= Threshold rising | предыдущее состояние |
Адреса 0x00c и 0x10c
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес внутри страницы: 12 | PINCA | PINCB | PUDA | PUDB | SPWR1 | SPWR0 | PUT1 | PUT0 |
Чтение/запись в странице 0 | R | R | R | R | R | R | R | R |
Чтение/запись в странице 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 |
PINCA/PINCB - включение режима инкремента счетчика A/B по обоим фронтам (см. таблицу состояний в описании бит EDGEA/EDGEB).
PUDA/PUDB - запрет подключения резистора подтяжки к питанию для входа A/B:
PUD | Режим |
0 | Подтяжка разрешена |
1 | Подтяжка запрещена |
SPWR[1..0] - режим питания датчиков:
SPWR1 | SPWR0 | Режим |
0 | 0 | Напряжение на PWR всегда выключено |
0 | 1 | Напряжение на PWR подается импульсно |
1 | 0 | PWR используется как вход B, напряжение на B подается импульсно |
1 | 1 | Напряжение на PWR всегда включено |
PUT[1..0] - задержка после включения подтяжек и питания датчиков и перед замером:
PUT1 | PUT0 | Режим |
0 | 0 | 25 мкс |
0 | 1 | 50 мкс |
1 | 0 | 125 мкс |
1 | 1 | 425 мкс |
Адреса 0x00d и 0x10d
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес внутри страницы: 13 | EDGEA | EDGEB | MSRP | MSRL | MSRA | MSRB | SMP1 | SMP0 |
Чтение/запись в странице 0 | R | R | R | R | R | R | R | R |
Чтение/запись в странице 8 | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Начальное значение | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
EDGEA/EDGEB - фронт для инкремента счетчика A/B:
PINC | EDGE | Режим |
0 | 0 | Инкремент по падающему фронту (переход с высокого уровня в низкий) |
0 | 1 | Инкремент по растущему фронту (переход с низкого уровня в высокий) |
1 | не имеет значения | Инкремент по обоим фронтам |
MSRP - фильтр режима питания устройства для режима измерений:
MSRP | Режим |
0 | Накапливать статистику только при работе от батареи |
1 | Накапливать статистику только при работе от внешнего питания |
MSRL - фильтр текущего уровня со входа, для которого включен режим измерений:
MSRL | Режим |
0 | Накапливать статистику только при низком уровне |
1 | Накапливать статистику только при высоком уровне |
MSRA,MSRB - включение режима измерений для входа A/B:
MSRA | MSRB | Режим |
0 | 0 | Режим измерений отключен |
0 | 1 | Режим измерений включен для входа B |
1 | 0 | Режим измерений включен для входа A |
1 | 1 | Зарезервировано |
SMP[1..0] - интервал между замерами:
SMP1 | SMP0 | Режим |
0 | 0 | 19 мс |
0 | 1 | 38 мс |
1 | 0 | 75 мс |
1 | 1 | 150 мс |
Адреса 0x011 и 0x111
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес внутри страницы: 17 | Level A | Level B | Зарезервировано | |||||
Чтение/запись в странице 0 | R | R | R | R | R | R | R | R |
Чтение/запись в странице 8 | R | R | R | R | R | R | R | R |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Level A/B - текущее значение логического состояния входов A и B, 0 - низкий, 1 - высокий.
Адреса 0x0d8 и 0x1d8
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Адрес внутри страницы: 24 | Battery:[7..0] | |||||||
Чтение/запись в странице 6 | R | R | R | R | R | R | R | R |
Чтение/запись в странице 14 | R | R | R | R | R | R | R | R |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Battery - текущее значение представляющее уровень напряжения батареи CR2032. Напряжение на батарее в Вольтах можно вычислить по формуле Vbat = (Vcc - 0.68V) * Battery / 256. В режиме измерений значение Battery не определено.
Данные пользователя
Байты 0..23 страниц 6 и 14 (обе страницы являются отображением друг друга) доступны для хранения данных пользователя.
Всю страницу Scratchpad также можно использовать для хранения данных пользователя, но перед записью любой другой страницы памяти состояние Scratchpad необходимо считывать и запоминать, а после записи восстанавливать сохрененное состояние. Таким образом для данных пользователя может быть доступно 56 байт.