Сторожевой таймер. Рисунок 5.16 - Регистр состояния асинхронного режима (ASSR)

Рисунок 5.16 - Регистр состояния асинхронного режима (ASSR)

Asyncronous Status Register (ASSR)

Бит $22($42) R/W Нач.знач.                 ASSR
- - - - AS2 TCN2UB OCR2UB TCR2UB
R R R R R/W R/W R/W R/W
               

Биты 7,4 - Зарезервированы, читаются как «0».

Бит 3 – AS2 (Asyncronous Timer/Counter2). Переключение режима работы. Если разряд установлен в «1», на вход прсдделитсля таймера/счетчика Т2 по­ступают импульсы с вывода TOSC1 микроконтроллера (асинхронный режим). В этом режиме выводы TOSC1 и TOSC2 используются для подключения кварцево­го резонатора и. соответственно, не могут использоваться как контакты ввода/вы­вода общего назначения.

Если разряд сброшен в «0», на вход предделителя поступает внутренний так­товый сигнал микроконтроллера. В этом случае выводы TOSC1 и TOSC2 являют­ся контактами ввода/вывода общего назначения.

При изменении состояния этого разряда содержимое регистров TCNT2, OCR2 и TCCR2 может быть повреждено.

Бит 2 – TCN2UB (Timer/Counter2 Update Busy). Состояние обновления регистра TCNT2. При записи в регистр TCNT2 этот флаг устанавливается в «1», а после пере­сылки записываемого значения в этот регистр флаг аппаратно сбрасывается в «0». Таким образом, сброшенный флаг TCN2UB означает, что регистр TCNT2 готов для записи в него нового значения.

Запись в регистр TCNT2 при установленном флаге TCN2UB может привести к повреждению прежнего содержимого регистра и к генерации прерывания.

Бит 1 – OCR2UB (Output Compare Register2 Update Busy). Состояние обновления регистра OCR2. При записи в регистр OCR2 этот флаг устанавливается в «1», а после пере­сылки записываемого значения в этот регистр флаг аппаратно сбрасывается в «О». Таким образом, сброшенный флаг OCR2UB означает, что регистр OCR2 готов для записи в него нового значения.

Запись в регистр OCR2 при установленном флаге OCR2UB можег привести к повреждению прежнего содержимого регистра и к генерации прерывания.

Бит 0 – TCR2UB (Timer/Counter Control Register2 Update Busy). Состояние обновления регистра TCCR2. При записи в регистр TCCR2 этот флаг устанавливается в «I», а после пере­сылки записываемого значения в этот регистр флаг аппаратно сбрасывается в «О». Таким образом, сброшенный флаг TCR2UB означает, чго регистр TCCR2 готов для записи в него нового значения.

Запись в регистр TCCR2 при установленном флаге TCR2UB может привести к повреждению прежнего содержимого регистра и к генерации прерывания.

Необходимо отметить, что при переключении между синхронным и асинхронным режимами, содержимое регистров таймера/счетчика может быть повреждено. Чтобы этого избежать, рекомендуется придерживаться следующей последовательности действий:

1. Запретить прерывания от таймера/счетчика Т2 (разряды TOIE2 и
OCIE2 регистра TIMSK).

2. Переключить таймер/счетчик в требуемый режим.

3. Записать новые значения в регистры TCNT2, OCR2 и TCCR2.

4. В случае переключения в асинхронный режим — ждать, пока флаги
TCN2UB, OCR2UB и TCR2UB не будут сброшены.

5. Разрешить прерывания (если требуется).

При работе таймера/счетчика Т2 в асинхронном режиме установка флагов прерываний от него производится синхронно с тактовым сигналом ми­кроконтроллера. Для синхронизации требуется 3 машинных цикла плюс один период тактового сигнала таймера/счетчика. Поэтому к моменту, когда микроконтроллер сможет прочитать состояние счетчика, вызвавшее ус­тановку флага прерывания, оно изменится по меньшей мере на единицу. Изменение состояния вывода ОС2 производится по тактовому сигналу таймера/счетчика и не синхронизируется с тактовым сигналом микроконтроллера.

Отдельно следует сказать о «взаимодействии» асинхронного режима таймера/счетчика Т2 с режимами пониженного энергопотребления микро­контроллера Power Down и Power Save.

Первое замечание касается использования прерываний от тайме­ра/счетчика Т2 для «пробуждения» микроконтроллера. В этом случае при переводе микроконтроллера в режим Power Save после записи в регистры таймера/счетчика необходимо убедиться, что операция записи завершена (флаги TCN2UB, OCR2UB и TCR2UB сброшены). Наиболее важно это в случае, когда для «пробуждения» микроконтроллера используется прерывание от схемы сравнения. Дело в том, что во время записи в регистры TCNT2 и OCR2 функция сравнения выключена. Соответственно, если пе­реход в режим Power Save произойдет до окончания операции записи в указанные регистры, прерывания от схемы сравнения никогда не произойдет и микроконтроллер не сможет выйти из спящего режима.

Вторая особенность связана с синхронизацией установки флагов пре­рываний от таймера/счетчика. При выходе микроконтроллера из режима Power Save по прерыванию от таймера/счетчика флаг соответствующего прерывания устанавливается только спустя 3 машинных цикла после запу­ска тактового генератора микроконтроллера. Во время этих циклов про­цессор выполняет команды, следующие за командой SLEEP, и только по­том переходит к обработке прерывания (если оно разрешено).

Кроме того, необходимо быть осторожным при повторном переходе в режим Power Save после выхода из него по прерыванию от таймера/счет­чика Т2. Дело в том, что в этом случае для запуска схемы прерываний требуется промежуток времени, равный одному периоду сигнала на выводе TOSC1. Если же промежуток времени между «пробуждением» и повтор­ным переходом в режим Power Save будет меньше указанного, генерации прерывания и, соответственно, «пробуждения» микроконтроллера не произойдет. Для формирования задержки требуемой длительности реко­мендуется после «пробуждения» микроконтроллера выполнить запись в какой-либо из регистров таймера/счетчика и дождаться завершения этой операции.

После подачи напряжения питания, а также после «пробуждения» ми­кроконтроллера из режима Power Down таймер/счетчик рекомендуется ис­пользовать только спустя секунду после указанных событий. Эта задерж­ка необходима для запуска тактового генератора таймера/счетчика. Соот­ветственно при выходе из режима Power Down содержимое всех регистров таймера/счетчика Т2 можно считать потерянным (из-за нестабильности тактового сигнала во время запуска генератора).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: