Рабочий автомат
Модуль «Рабочий автомат» представляет собой 24-разрядный таймер. Данный таймер считает «вверх» на частоте системы. Начало работы данного модуля автоматически означает переход системы в режим «Глубокий сон» (более подробно смотрите пу нкт «Режим «SLEEP»»). По окончанию счета будет сформировано немаскируемое прерывание, которое выведет систему из режима «Глубокий сон».
Особенности работы
Актуальное значение периода счета обязательно должно быть записано перед включением модуля «Рабочий автомат». Таймер модуля «Рабочий автомат» работает на частоте системы. Это значит, что перед запуском данного модуля для снижения энергопотребления пользователь обязан переключить систему на частоту тактирования от RC-генератора в регистре CMM_CTRL.
Существует два способа запуска модуля «Рабочий автомат»:
- классический запуск;
- запуск с ожиданием.
При классическом запуске пользователь переключает частоту тактирования (модуль CMM). Пользователю необходимо узнать о завершении данного процесса по прерыванию, либо по чтению из статусного регистра CMM_ST (бит SWITCH). И только после этого пользователь может запустить модуль «Рабочий автомат». По записи сигнал а EN в регистр FSM_CTRL модуль начнет счет «вверх» на частоте системы и переведет микроконтроллер в режим «Глубокий сон».
Для запуска с ожиданием пользователь должен записать «1» в бит EN_WSW регистра FSM_CTRL. Модуль «Рабочий автомат» будет ожидать события переключения частоты (модуль CMM). Пользователю необходимо записать команду на переключение частоты в регистр CMM_CTRL. По окончанию процесса переключения модуль «Рабочий автомат» автоматически начнет счет и инициирует процесс перехода в режим «Глубокий сон».
По окончанию счета «Рабочий автомат» сформирует прерывание, по которому микроконтроллер начнет выход из режима «Глубокий сон».
Регистры «Рабочего автомата»
№ | Аббревиатура | Доступ | Описание |
---|---|---|---|
2600h | FSM_CTRL | W | Регистр управления |
2601h | FSM_PRDH | RW | Регистр периода счета 2 |
2602h | FSM_PRDM | RW | Регистр периода счета 1 |
2603h | FSM_PRDL | RW | Регистр периода счета 0 |
FSM_CTRL
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | EN_WSW | EN | |||||
Начальное значение | 0 |
EN_WSW (Enable Wait Switch and Work) – разрешение работы модуля по переключению частоты:
- 1 – ожидать переключения;
- 0 – модуль выключен.
EN – разрешение работы модуля:
- 1 – модуль включен;
- 0 – модуль выключен.
FSM_PRDH
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | PRD | |||||||
Начальное значение | 0 |
PRD – период счета таймера, старшая часть.
FSM_PRDM
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | PRD | |||||||
Начальное значение | 0 |
PRD – период счета таймера, средняя часть.
FSM_PRDL
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | PRD | |||||||
Начальное значение | 0 |
PRD – период счета таймера, младшая часть.
Значение, до которого будет считать модуль, определяется как:
где Nclk – количество тактов системной частоты.