Перейти к содержанию
    

режим LPM0

Использую режим засыпания LPM0 ->

В главном цикле есть процедуры, которые работают не по прерыванию:

Как разбудить проц, выйти из LPM0, выполнить процедуры главного цикла и опять уйти в спячку - Как это лучше сделать?

Прерывания есть по таймеру - 10мс тик, но перегружен процедурами, требующих точных временных отсчетов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выходить из LPMx можно только по прерыванию. Значит используем какое-либо из незадействованных на данный момент (список векторов прерываний и их источников в даташите на конкретный контроллер).

Прерывание должно перед своим завершением извлечь из стека сохранённый там регистр статуса SR, изменить флаг CPUOFF, и "положить" модифицированный SR на место. При завершении прерывания, по команде RETI, из стека считается изменённое состояние SR, и в основном цикле будет либо Active Mode, либо LPMx.

 

Например:

1. Если WDT не занят, то использовать его прерывание в режиме таймера. Можно настроить 4 скорости срабатывания.

 

2. Прерывание таймера A или B - добавить в конце уже имеющегося обработчика такие действия:

Перед выходом из прерывания, программа проверяет какой-то бит (или байт) в ОЗУ, и в зависимости от его значения модифицирует сохранённый в стеке регистр статуса SR.

Если к примеру в ОЗУ был 0, это значит что основной цикл должен "бодрствовать", и программа прерывания сбросит CPUOFF в 0.

Если в ОЗУ было <> 0, значит CPUOFF нужно установить в 1. И тогда после завершения прерывания, основной цикл будет "спать".

А в основном цикле нужно только менять ячейку ОЗУ, чтоб сообщать обработчику прерывания о своей "занятости работой", или наоборот - об отсутствии дел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...