РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ ОТ ТАЙМЕРОВ/СЧЕТЧИКОВ – TIFR
TIFR H(58h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||||||
TOV1 | OCF1 | - | - | ICF1 | - | TOV0 | - | ||||||||||
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R \ W | ||||||||||
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит 7 - TOV1: Флаг переполнения таймера/счетчика 1: Флаг TOV1 устанавливается ("1") при возникновении переполнения таймера/счетчика 1. Флаг TOV1 сбрасывается аппаратно при выполнении соответствующего вектора обработки прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу. Если установлены бит I в SREG и бит TOIE1 в TIMSK, при установке бита TOV1 выполняется прерывание по переполнению таймера/счетчика 1. В режиме ШИМ этот бит устанавливается, когда таймер/счетчик 1 изменяет направление счета при значении 0000h.
Бит 6 - OCF1A: Флаг выхода совпадения 1А: флаг устанавливается в "1" если происходит совпадение значения таймера/счетчика 1 и данных в регистре OCR1A. Флаг очищается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно сбросить записав в него логическую единицу. Если установлены бит I в SREG и бит OCIE1A в TIMSK, при установке бита OCF1A выполняется прерывание.
Биты 5,4 - зарезервированы; в AT90S2333/4433 эти биты зарезервированы и всегда читаются как 0.
Бит 3 - ICF1: флаг входа захвата 1: бит устанавливается ("1") при возникновении события захвата по входу, он индицирует, что значение таймера/счетчика 1 скопировано в регистр захвата по входу ICR1. ICF1 очищается при выполнении соответствующего вектора обработки прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.
Бит 2 - зарезервирован; в AT90S2333/4433 этот бит зарезервирован и всегда читается как 0.
Бит 1 - TOV0: Флаг переполнения таймера счетчика 1: Флаг TOV0 устанавливается ("1") при переполнении таймера/счетчика 0. Флаг сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно очистить записав в него логическую единицу. Если установлены бит I в SREG и бит TOIE0 в TIMSK, при установке бита TOV0 выполняется прерывание по переполнению таймера/счетчика 0.
Бит 0 - зарезервирован; в AT90S2333/4433 этот бит зарезервирован и всегда читается как 0.
ВНЕШНИЕ ПРЕРЫВАНИЯ
Внешние прерывания управляются выводами INT0 и INT1. Заметим, что прерывания обрабатываются даже когда выводы сконфигурированы как выходы. Это позволяет генерировать программные прерывания. Внешние прерывания могут возникать по спадающему или нарастающему фронту, а также по низкому уровню. Это устанавливается в регистре управления процессором MCUCR. Если внешние прерывания разрешены и сконфигурированы на отработку по уровню, прерывание будет вырабатываться до тех пор, пока вывод удерживается в низком состоянии.
Управление работой внешних прерываний рассмотрено при описании регистра управления процессором MCUCR.
ВРЕМЯ РЕАКЦИИ НА ПРЕРЫВАНИЕ
Минимальное время реакции на любое из предусмотренных в процессоре прерываний - 4 периода тактовой частоты. После четырех циклов вызывается программный вектор обрабатывающий данное прерывание. За эти 4 цикла программный счетчик записывается в стек, указатель стека уменьшается на 2. Программный вектор представляет собой относительный переход на подпрограмму обслуживания прерывания и этот переход занимает 2 периода тактовой частоты. Если прерывание происходит во время выполнения команды длящейся несколько циклов, перед вызовом прерывания завершается выполнение этой команды. Выход из программы обслуживания прерывания занимает 4 периода тактовой частоты. За эти 4 периода из стека восстанавливается программный счетчик. После выхода из прерывания процессор всегда выполняет еще одну команду прежде чем обслужить любое отложенное прерывание. Заметим, что регистр состояния SREG аппаратно не обрабатывается процессором, как при вызове подпрограмм, так и при обслуживании прерываний. Если программа требует сохранения SREG, оно должно производиться программой пользователя. Для прерываний включаемых статическими событиями (напр. совпадение значения счетчика/таймера 1 с регистром совпадения) флаг прерывания взводится при возникновении события. Если флаг прерывания очищен и присутствует условие возникновения прерывания, флаг не будет установлен, пока не произойдет следующее событие.
РЕГИСТР УПРАВЛЕНИЯ МИКРОКОНТРОЛЛЕРОМ – MCUCR
Этот регистр содержит биты общего управления микроконтроллером.
MCUCR
H(55h)
Биты 7,6 - зарезервированы. В AT90S2333/4433 эти биты зарезервированы и всегда читаются как 0.
Бит 5 - SE: Разрешение режима Sleep: Этот бит должен быть установлен в 1, чтобы при выполнении команды SLEEP процессор переходил в режим пониженного энергопотребления. Для устранения нежелательного перехода в режим пониженного энергопотребления рекомендуется устанавливать этот бит непосредственно перед выполнением команды SLEEP.
Бит 4 - SM: Режим Sleep: Этот бит выбирает один из двух режимов пониженного энергопотребления. Если бит сброшен (0), в качестве режима Sleep выбирается холостой режим (Idle mode). Если бит установлен, - выбирается экономичный режим (Power down). Особенности каждого из режимов будут рассмотрены ниже.
Биты 3,2 - ISC11, ISC10: биты управления срабатыванием прерывания 1: Внешнее прерывание активируется выводом INT1 если установлен флаг I регистра состояния SREG и установлена соответствующая маска в регистре GIMSK. Срабатывание по уровню и фронтам задается следующим образом:
Биты 1,0 - ISC01, ISC00: биты управления срабатыванием прерывания 0: Внешнее прерывание активируется выводом INT0 если установлен флаг I регистра состояния SREG и установлена соответствующая маска в регистре
GIMSK. В таблице 6 приведена установка битов для задания срабатывания по уровню и фронтам.
Таблица 5. Управление срабатыванием прерывания 1.
ISC11 | ISC10 | Описание |
0 | 0 | Запрос на прерывание генерируется по низкому уровню напряжения на входе INT1 |
0 | 1 | Запрос по изменению уровня на входе INT1 |
1 | 0 | Запрос на прерывание по спадающему фронту на входе INT1 |
1 | 1 | Запрос на прерывание по нарастающ. фронту на входе INT1 |
ПРИМЕЧАНИЕ: При изменении битов ISC11/ISC10 прерывание INT1 должно быть запрещено очисткой соответствующего бита в регистре GIMSK. Иначе прерывание может возникнуть во время изменения битов.
Таблица 6. Управление срабатыванием прерывания 0.
ISC01 | ISC0 | Описание |
0 | 0 | Запрос на прерывание генерируется по низкому уровню напряжения на входе INT0 |
0 | 1 | Запрос по изменению уровня на входе INT0 |
1 | 0 | Запрос на прерывание по спадающему фронту на входе INT0 |
1 | 1 | Запрос на прерывание по нарастающ. фронту на входе INT0 |
ПРИМЕЧАНИЕ: При изменении битов ISC01 и ISC00, прерывания по входу INT0 должны быть запрещены сбросом бита разрешения прерывания в регистре GIMSK. Иначе прерывание может произойти при изменении значения битов.
РЕЖИМЫ ПОНИЖЕННОГО ЭНЕРГОПОТРЕБЛЕНИЯ.
Для запуска режима пониженного энергопотребления должен быть установлен (1) бит SE регистра MCUCR, и должна быть исполнена команда SLEEP. Если во время нахождения в режиме пониженного потребления происходит одно из разрешенных прерываний, процессор начинает работать, исполняет подпрограмму обработки прерывания и продолжает выполнение программы с команды следующей за SLEEP. Содержимое регистрового файла и памяти ввода/вывода не изменяется. Если в режиме пониженного потребления происходит сброс, процессор начинает выполнение программы с вектора сброса.
Если для вывода из экономичного режима используется прерывание по уровню, низкий уровень должен удерживаться дольше времени отработки сброса. Иначе процессор не начнет работу.
Режим холостого хода.
Когда бит SM сброшен (0), команда SLEEP переводит процессор в режим холостого хода (Idle mode). ЦПУ останавливается, но Таймеры/Счетчики, сторожевой таймер и система прерываний продолжают работать. Это позволяет процессору возобновлять работу как от внешних прерываний, так и по переполнению таймеров/счетчиков или по сбросу от сторожевого таймера. Если прерывание от аналогового компаратора не требуется, аналоговый компаратор может быть отключен установкой бита ACD регистра ACSR. Это уменьшает потребляемую мощность в режиме холостого хода. При выходе из режима холостого хода процессор запускается без задержки.
Экономичный режим.
Когда бит SM установлен (1), команда SLEEP переводит процессор в экономичный режим (Power Down Mode). В этом режиме останавливается внешний генератор тактовых импульсов. Пользователь может разрешить работу сторожевого таймера в этом режиме. Если сторожевой таймер разрешен, процессор выходит из экономичного режима после отработки периода сторожевого таймера. Если сторожевой таймер запрещен, выход из экономичного режима может произойти только по внешнему сбросу, brown-out
сбросу или внешнему прерыванию по уровню.
Если для вывода из экономичного режима используется прерывание по уровню, низкий уровень должен удерживаться на время достаточное для запуска процессора. Это увеличивает устойчивость процессора к помехам. Изменение уровня дважды проверятся с периодом генератора сторожевого таймера, если обе выборки сигнала имеют необходимый уровень, процессор включается. Номинальный период сторожевого таймера 1uS при 5В питания и температуре 25 градусов Цельсия.
При выходе из экономичного режима, от времени появления условия выхода до включения процессора проходит некоторое время необходимое для запуска кварцевого генератора. Задержка включения определяется теми же битами CKSEL, что и время сброса. Длительность задержки на включение приведена в таблице 7.
Если условие включения исчезнет до того, как процессор запустится, например, низкий уровень на входе прерывания продержится недостаточно долго, процессор не выйдет из экономичного режима.
Таблица 7. Установка задержки включения
CKSEL [2:0] | Время запуска |
000 | 6CK |
001 | 6CK |
010 | 16K CK |
011 | 16K CK |
100 | 16K CK |
101 | 1K CK |
110 | 1K CK |
111 | 1K CK |
ТАЙМЕРЫ/СЧЕТЧИКИ
В AT90S2333/4433 предусмотрены два таймера/счетчика общего назначения. 8-разрядный и 16-разрядный. Каждый из таймеров индивидуально подключается к одному из выходов 10-разрядного предварительного делителя частоты. Оба таймера могут использоваться как таймеры с внутренним источником импульсов или счетчики импульсов поступающих извне. В качестве источника импульсов для таймеров можно выбрать сигнал с тактовой частотой процессора (CK), импульсы предварительного делителя (CK/8, CK/64, CK/256 или CK/1024) или импульсы с соответствующего внешнего вывода. Кроме того, таймеры могут быть остановлены, запретом прохождения импульсов на них.
2019-10-11 | 249 | Обсуждений (0) |
5.00
из
|
Обсуждение в статье: РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ ОТ ТАЙМЕРОВ/СЧЕТЧИКОВ – TIFR |
Обсуждений еще не было, будьте первым... ↓↓↓ |
Почему 1285321 студент выбрали МегаОбучалку...
Система поиска информации
Мобильная версия сайта
Удобная навигация
Нет шокирующей рекламы