МИКРОКОНТРОЛЛЕРЫ
РЛ
ния таймера/счетчикаО. В регистре флагов прерывания TIFR (Timer/
Counter Interrupt Flag Register) устанавливается флаг совпадения
таймера/счетчикаО.
Bit 0 - TOIEO: Timer/CounterO Overflow Interrupt Enable
-
Разреше-
ние прерывания no переполнению таймера/счетчикаО
При установленном бите TOIEO и установленном бите I регистра
статуса разрешается прерывание по переполнению таймера/счет-
чикаО. Соответствующее прерывание (с вектором $0020) выполня-
ется, если произойдет переполнение таймера/счетчикаО. В регистре
флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается
флаг переполнения таймера/счетчикаО.
Регистр флагов прерываний по таймерам/счетчикам TIFR
(Timer/Counter Interrupt Flag Register)
Bit
7 -
OCF2: Output Compare Flag 2 - Флаг 2 совпадения тайме-
ра/счетчика2 и данных OCR2
БитОСБ2 устанавливается при совпадении состояния таймера/
счетчика2 и содержимого регистра OCR2 (Output Compare Register
2). Бит OCF2 аппаратно очищается при обработке соответствующе-
го вектора прерывания. Возможна очистка бита записью во флаг ло-
гической 1. При установленном бите I в регистре SREG, установлен-
ных OCIE2 (Timer/Counter2 Output Compare Interrupt Enable) и OCF2
выполняется прерывание по совпадению выхода таймера/счетчика2.
Bit 6 - TOV2: Timer/Counter2 Overflow Flag - Флаг переполнения
таймера/счетчика2
Бит TOV2 устанавливается при переполнении таймера/счетчи-
ка2. Он аппаратно очищается при обработке соответствующего век-
тора прерывания. Возможна очистка бита записью во флаг логичес-
кой 1. При установленном бите I в регистре SREG, установленных
OCIE2 (Timer/Counter2 Overflow Interrupt Enable) и TOV2 выполняет-
ся прерывание по переполнению таймера/счетчика2. В режиме PWM
этот бит устанавливается при смене направления счета при $00.
Bit 5 - ICF1: Input Capture Flag 1 - Флаг 1 захвата входа
Бит ICF1 устанавливается в случае захвата входа, показываю-
щего, что состояние таймера/счетчика1 переслано во входной ре-
гистр захвата ICR1. Бит очищается аппаратно при обработке соот-
ветствующего вектора прерывания. Возможна очистка бита записью
во флаг логической 1.
Bit 4
-
OCF1A: Output Compare Flag 1A
-
Флаг 1A совпадения
выхода
Бит OCF1А устанавливается при совпадении состояния тайме-
ра/счетчика1 и содержимого регистра OCR1A (Output Compare
Register 1А). Бит OCF1A аппаратно очищается при обработке соот-
ветствующего вектора прерывания. Возможна очистка бита записью
во флаг логической 1. При установленном бите I в регистре SREG,
установленных OCIE1A (Timer/Counterl Compare Interrupt Enable) и
OCF1A выполняется прерывание по совпадению выхода таймера/
счетчика!
Bit
3 -
OCF1B: Output Compare Flag 1B - Флаг 1В совпадения
выхода
Бит OCF1B устанавливается при совпадении состояния тайме-
ра/счетчика1 и содержимого регистра OCR1B (Output Compare
Register 1В). Бит OCF1B аппаратно очищается при обработке соот-
ветствующего вектора прерывания. Возможна очистка бита записью
во флаг логической ! При установленном бите I в регистре SREG,
установленных OCIE1В (Timer/Counterl Compare InterruptB Enable) и
OCF1B выполняется прерывание по совпадению выхода таймера/
счетчика!
Bit 2 - TOV1: Timer/Counterl Overflow Flag - Флаг переполнения
таймера/счетчика 1
Бит TOV1 устанавливается при переполнении таймера/счетчи-
к а ! Он аппаратно очищается при обработке соответствующего век-
тора прерывания. Возможна очистка бита записью во флаг логичес-
кой 1. При установленном бите I в регистре SREG, установленных
TOIE1 (Timer/Counterl Overflow Interrupt Enable) и TOV1 выполняет-
ся прерывание по переполнению таймера/счетчика1. В режиме PWM
этот бит устанавливается при смене таймером/счетчиком1 направ-
ления счета при $0000.
Bit 1 - OCFO: Output Compare Flag 0 - Флаг 0 совпадения выхода
Бит OCFO устанавливается при совпадении состояния тайме-
ра/счетчикаО и содержимого регистра OCRO (Output Compare
Register 0). Бит OCFO аппаратно очищается при обработке соответ-
ствующего вектора прерывания. Возможна очистка бита записью
во флаг логической Т При установленном бите I в регистре SREG,
установленных OCIEO (Timer/CounterO Output Compare Interrupt
Enable) и OCFO выполняется прерывание по совпадению выхода
таймера/счетчика!
Bit 0
-
TOVO: Timer/CounterO Overflow Flag - Флаг переполнения
таймера/счетчикаО
Бит TOVO устанавливается при переполнении таймера/счетчи-
каО. Он аппаратно очищается при обработке соответствующего век-
тора прерывания. Возможна очистка бита записью во флаг
логической 1. При установленном бите I в регистре SREG,
установленных TOIEO (Timer/CounterO Overflow Interrupt
Enable) и TOVO выполняется прерывание по переполне-
нию таймера/счетчикаО. В режиме PWM этот бит устанав-
ливается при смене таймером/счетчиком1 направления
счета при $00.
Время отклика на прерывание
Отклик на выполнение всех разрешенных прерываний AVR со-
ставляет минимум 4 тактовых цикла. В течение 4 тактовых циклов
после установки флага прерывания выполняется переход по адре-
су вектора прерывания для выполнения подпрограммы прерыва-
ния. В течение этих 4 циклов содержимое счетчика команд (2 бай-
та) опускаются в стек, и указатель стека декрементируется на 2.
Вектор указывает переход в подпрограмму обработки прерывания,
и этот переход занимает 3 тактовых цикла. Если прерывание воз-
никнет во время выполнения многоцикловой команды, то команда
завершается до начала обслуживания прерывания. Возврат из
подпрограммы обработки прерывания (как и вызов подпрограм-
мы) занимает 4 тактовых цикла. В течение этих 4 циклов состоя-
ние счетчика команд (2 байта) извлекается из стека, и указатель
стека инкрементируется на 2. Когда AVR выходит из прерывания,
он всегда возвращается в основную программу и выполняет еще
одну команду прежде, чем начать обслуживание какого-либо от-
ложенного прерывания.
Отметим, что регистр статуса SREG не обрабатывается аппа-
ратными средствами AVR ни для прерываний, ни для подпрограмм.
При обработке подпрограмм прерываний, требующих сохра-
нения в SREG, запись должна выполняться программными сред-
ствами пользователя. Для прерываний, запускаемых статически-
ми событиями (например, совпадение содержимого регистра срав-
нения 1А с состоянием таймера/счетчика1) флаг прерывания ус-
танавливается в момент наступления события. Если флаг очи-
щен, но условия возникновения прерывания продолжают суще-
ствовать, флаг не будет устанавливаться до тех пор, пока это со-
бытие не наступит вновь.
Режимы энергосбережения (Sleep Modes)
Для перевода в любой из трех режимов энергосбережения бит
SE в регистре MCUCR должен быть установлен в состояние 1. Биты
SM1 и SM0 регистра MCUCR определяют, какой из режимов Idle,
Power Down или Power Save будет запущен командой SLEEP.
При возникновении разрешенного прерывания во время нахож-
дения MCU в режиме энергосбережения MCU активируется, выпол-
няет подпрограмму обработки прерывания и продолжает работу до
следующей команды SLEEP. Если во время режима энергосбере-
жения происходит сброс, MCU активируется и начинает работу по
вектору сброса. Содержимое регистрового файла, SRAM и памяти
I/O в процессе активации не изменяется. В табл. 5 представлен
выбор режима энергосбережения.
Отметим, что если для возврата из режима энергосбережения
Power Down или Power Save используется запуск прерывания по
уровню, то низкий уровень должен удерживаться несколько доль-
ше, чем время задержки сброса tTOUT, иначе микроконтроллер не
активируется.
Режим Idle
Если биты SM1/SM0 находятся в состоянии 00, команда SLEEP
переводит MCU в режим Idle, останавливая CPU, но оставляя актив-
ными таймеры/счетчики, сторожевой таймер и систему прерываний.
Это обеспечивает активацию MCU внешними прерываниями и такими
внутренними прерываниями, как переполнение таймера и заверше-
7/2003
Биты
7
6
5
4
3
2
I
0
$36 ($56)
OCF2
TOV2
ICF1
OCF1A
OCF1B
TOV1
OCFO
TOVO
TIFR
Чтение/
Запись
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Начальное
состояние
и
0
0
0
0
0
0
0
предыдущая страница 34 Радиолюбитель 2003-07 читать онлайн следующая страница 36 Радиолюбитель 2003-07 читать онлайн Домой Выключить/включить текст