ATMEL |
|
|
|
|
|
|
|
ÊÒÖ-ÌÊ |
|
РЕГИСТР МАСОК ПРЕРЫВАНИЯ ПО ТАЙМЕРАМ/СЧЕТЧИКАМ- |
|
||||||||
TIMSK (Timer/Counter Interrupt Mask Register) |
|
|
|
|
|||||
Áèò |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$37 ($57) |
OCIE2 |
TOIE2 |
TICIE1 |
OCIE1A |
OCIE1B |
TOIE1 |
OCIE0 |
TOIE0 |
TIMSK |
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
•Bit 7 - OCIE2: Timer/Counter2 Output Compare Interrupt Enable - Разрешение
прерывания по совпадению таймера/счетчика2
При установленном бите OCIE2 и установленном бите I регистра с татуса разрешается прерывание по совпадению содержимого регистра сравнени я и состояния таймера/ счетчика2. Соответствующее прерывание (с вектором $0012) выпо лняется если произойдет совпадение при сравнении содержимого регист ра сравнения и состояния таймера/счетчика2. В регистре флагов прерывания TIFR (Timer/Counter Interrupt Fl ag Register) устанавливается флаг совпадения таймера/счетчика2.
•Bit 6 - TOIE2: Timer/Counter2 Overflow Interrupt Enable - Разрешение прерывания по переполнению таймера/счетчика2
При установленном бите TOIE2 и установленном бите I регистра с татуса разрешается прерывание по переполнению таймера/счетчика2. Соответств ующее прерывание (с вектором $0014) выполняется если произойдет переполнение та ймера/счетчика2. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг переполнения таймера/счетчика2.
•Bit 5 - TICIE1: Timer/Counter1 Input Capture Interrupt Enable - Разрешение прерывания
по захвату таймера/счетчика1
При установленном бите TICIE1 и установленном бите I регистра с татуса разрешается прерывание по захвату таймера/счетчика1. Соответствующее прерывание (с вектором $0016) выполняется если произойдет запуск захвата по выводу 29 , PD4(IC1). В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг захвата таймера/счетчика1.
•Bit 4 - OCE1A: Timer/Counter1 Output CompareA Match Interrupt Enable - Разрешение
прерывания по совпадению регистра A с таймером/счетчиком1
При установленном бите OCIE1A и установленном бите I регистра с татуса разрешается прерывание по совпадению регистра A с состоянием таймера/ счетчика1. Соответствующее прерывание (с вектором $0018) выполняется ес ли произойдет совпадение содержимого регистра A сравнения выхода с сост оянием таймера/ счетчика1. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливаетс я флаг совпадения регистра A с таймером/счетчиком1.
•Bit 3 - OCIE1B: Timer/Counter1 Output CompareB Match Interrupt Enable - Разрешение
прерывания по совпадению регистра B с таймером/счетчиком1
При установленном бите OCIE1B и установленном бите I регистра с татуса разрешается прерывание по совпадению регистра B с состоянием таймера/ счетчика1. Соответствующее прерывание (с вектором $001A) выполняется ес ли произойдет совпадение содержимого регистра B сравнения выхода с сост оянием таймера/счетчика1. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг совпадения регистра B с таймером/счетчиком1.
•Bit 2 - TOIE1: Timer/Counter1 Overflow Interrupt Enable - Разрешение прерывания по переполнению таймера/счетчика1
При установленном бите OCIE1B и установленном бите I регистра с татуса разрешается
8 4
ÊÒÖ-ÌÊ
прерывание по переполнению таймера/счетчика1. Соответств ующее прерывание (с вектором $001C) выполняется если произойдет переполнение та ймера/счетчика1. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг переполнения таймера/счетчика1.При нахождении таймера/сч етчика1 в PWM режиме флаг переполнения счетчика устанавливается когда счетч ик изменит направление счета при $0000.
•Bit 1 - OCIE0: Timer/Counter0 Output Compare Interrupt Enable - Разрешение прерывания по совпадению таймера/счетчика0
При установленном бите OCIE0 и установленном бите I регистра с татуса разрешается прерывание по совпадению содержимого регистра сравнени я и состояния таймера/ счетчика0. Соответствующее прерывание (с вектором $001E) выпо лняется если произойдет совпадение при сравнении содержимого регист ра сравнения и состояния таймера/счетчика0. В регистре флагов прерывания TIFR (Timer/Counter Interrupt Fl ag Register) устанавливается флаг совпадения таймера/счетчика0.
•Bit 0 - TOIE0: Timer/Counter0 Overflow Interrupt Enable - Разрешение прерывания по переполнению таймера/счетчика0
При установленном бите TOIE0 и установленном бите I регистра с татуса разрешается прерывание по переполнению таймера/счетчика0. Соответств ующее прерывание (с вектором $0020) выполняется если произойдет переполнение та ймера/счетчика0. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг переполнения таймера/счетчика0.
РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ ПО ТАЙМЕРАМ/СЧЕТЧИКАМ TIFR (Timer/Counter Interrupt Flag Register)
Áèò |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$36 ($56) |
OCF2 |
TOV2 |
ICF1 |
OCF1A |
OCF1B |
TOV1 |
OCF0 |
TOV0 |
TIFR |
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
•Bit 7 - OCF2: Output Compare Flag 2:- Флаг 2 совпадения таймера/счетчика2 и
данных OCR2
Бит OCF2 устанавливается при совпадении состояния таймера/с четчика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. Бит очища ется аппаратно при
8 5
ATMEL |
ÊÒÖ-ÌÊ |
обработке соответствующего вектора прерывания. Возможн а очистка бита записью во флаг логической 1.
• Bit 4 - OCF1A: Output Compare Flag 1A - Флаг 1A совпадения выхода
Бит OCF1A устанавливается при совпадении состояния таймера/с четчика1 и содержимого регистра OCR1A (Output Compare Register 1A). Бит OCF1A аппаратно очищается при обработке соответствующего вектора преры вания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных OCIE1A (Timer/Counter1 Compare Interrupt Enable) и OCF1A выполняется прерывание по совпадению выхода таймера/счетчика1.
• Bit 3 - OCF1B: Output Compare Flag 1B - Флаг 1B совпадения выхода
Бит OCF1B устанавливается при совпадении состояния таймера/с четчика1 и содержимого регистра OCR1B (Output Compare Register 1B). Бит OCF1B аппаратно очищается при обработке соответствующего вектора преры вания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных OCIE1B (Timer/Counter1 Compare InterruptB Enable) и OCF1B выполняется прерывание по совпадению выхода таймера/счетчика1.
•Bit 2 - TOV1: Timer/Counter1 Overflow Flag - Флаг переполнения таймера/счетчика1
Бит TOV1 устанавливается при переполнении таймера/счетчика 1. Он аппаратно очищается при обработке соответствующего вектора преры вания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных TOIE1(Timer/Counter1 Overflow Interrupt Enable) и TOV1 выполняется прерывание по переполнению таймера/счетчика1. В режиме PWM э тот бит устанавливается при смене таймером/счетчиком1 направлен ия счета при $0000.
•Bit 1 - OCF0: Output Compare Flag 0 - Флаг 0 совпадения выхода
Бит OCF0 устанавливается при совпадении состояния таймера/с четчика0 и содержимого регистра OCR0 (Output Compare Register 0). Бит OCF0 аппаратно очищается при обработке соответствующего вектора прерывания. Возможн а очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, у становленных OCIE0 (Timer/Counter0 Output Compare Interrupt Enable) и OCF0 выполняется прерывание по совпадению выхода таймера/счетчика1.
• Bit 0 - TOV0: Timer/Counter0 Overflow Flag - Флаг переполнения таймера/счетчика0
Бит TOV0 устанавливается при переполнении таймера/счетчика 0. Он аппаратно очищается при обработке соответствующего вектора преры вания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных TOIE0(Timer/Counter0 Overflow Interrupt Enable) и TOV0 выполняется прерывание по переполнению таймера/счетчика0. В режиме PWM э тот бит устанавливается при смене таймером/счетчиком1 направлен ия счета при $00.
ВРЕМЯ ОТКЛИКА НА ПРЕРЫВАНИЕ
Отклик на выполнение всех разрешенных прерываний AVR соста вляет минимум 4 тактовых цикла. В течение 4 тактовых циклов после установк и флага прерывания выполняется переход по адресу вектора прерывания для вып олнения подпрограммы прерывания. В течение этих 4 циклов содержимое счетчика команд (2 байта) опускаются в стек и указатель стека декрементируется на 2. Вектор указ ывает переход в подпрограмму обработки прерывания и этот переход занима ет 3 тактовых цикла. Если прерывание возникнет во время выполнения многоцикловой команды, то команда завершается до начала обслуживания прерывания.
Возврат из подпрограммы обработки прерывания (как и вызо в подпрограммы) занимает
8 6
ÊÒÖ-ÌÊ
4 тактовых цикла. В течение этих 4 циклов состояние счетчика команд (2 байта) извлекается из стека и указатель стека инкрементируется на 2. Когда AVR выходит из прерывания, он всегда возвращается в основную программу и выполняет еще одну команду, прежде, чем начать обслуживание какого либо отло женного прерывания.
Отметим, что регистр статуса SREG не обрабатывается аппаратн ыми средствами AVR, ни для прерываний, ни для подпрограмм.
При обработке подпрограмм прерываний, требующих сохране ния в SREG, запись должна выполняться программными средствами пользовател я. Для прерываний, запускаемых статическими событиями (например совпадени е содержимого регистра сравнения 1A с состоянием таймера/счетчика1) флаг прерывани я устанавливается в момент наступления события. Если флаг очищен, но условия в озникновения прерывания продолжают существовать, флаг не будет устанавливаться до тех пор, пока это событие не наступит вновь.
Режимы энергосбережения (Sleep Modes)
Для перевода в любой из трех режимов энергосбережения бит SE в регистре MCUCR должен быть установлен в состояние1. Биты SM1 и SM0 регистра MCUCR определяют какой из режимов Idle, Power Down или Power Save будет запущен ком андой SLEEP.
При возникновении разрешенного прерывания во время нахо ждения MCU в режиме энергосбережения, MCU активируется, выполняет подпр ограмму обработки прерывания и продолжает работу до следующей команды SLEEP. Ес ли во время режима энергосбережения происходит сброс, MCU активируется и начи нает работу по вектору сброса. Содержимое регистрового файла, SRAM и памяти I/O в проце ссе активации не изменяется. В Таблице 4 представлен выбор режима энерго сбережения.
Отметим, что если для возврата из режима энергосбережения Power Down или Power Save, используется запуск прерывания по уровню, то низкий уровень должен удерживаться несколько дольше, чем время задержки сброса t TOUT, иначе микроконтроллер не активируется.
РЕЖИМ Idle
Если биты SM1/SM0 находятся в состоянии 00 команда SLEEP переводит MCU в режим Idle, останавливая CPU но оставляя активными таймеры/сч етчики, сторожевой таймер и систему прерываний. Это обеспечивает активацию M CU внешними прерываниями и такими внутренними прерываниями, как пере полнение таймера и завершение приема UART. Если активация по аналоговому компар атору не требуется, то аналоговый компаратор может быть отключен установкой бита ACD в регистре управления и статуса аналогового компаратора ACSR. Это позво лит дополнительно снизить потребление в Idle режиме. При активации MCU из Idle режима CPU начинает выполнять программу незамедлительно.
РЕЖИМ Power Down
При установке битов SM1/SM0 в состояние 10 команда SLEEP переводит MCU в режим Power Down. В этом режиме останавливается внешний генерат ор. Пользователь может разрешить работу сторожевого таймер а. Если сторожевой таймер разрешен, то активация MCU произойдет по завершении установ ленного в сторожевом таймере периода времени. Если внешний источник тактового сигнала подключен к выводу XTAL1, то активация MCU из режима Power Down может происходить бе з
8 7
ATMEL |
ÊÒÖ-ÌÊ |
задержки, обычно необходимой для стабилизации XTAL генерато ра. Режим такой активации разрешается программированием перемычек SUT0/SUT1 в Flash памяти. См. раздел Режим параллельного программирования.
РЕЖИМ Power Save
При установке битов SM1/SM0 в состояние 11 команда SLEEP переводит MCU в режим Power Save. Этот режим, за одним исключением, аналогичен ре жиму Power Down. Если таймер/счетчик0 тактируется асинхронно, т.е. бит AS0 в р егистре ASSR установлен, таймер/счетчик0 будет работать в режиме Power Save.
MCU будет активироваться прерываниями по переполнению или совпадению выхода таймера/счетчика0.
Таймеры/счетчики
Микроконтроллеры ATmega603/103 оснащены тремя таймерами/счетчика ми общего назначения - двумя 8-разрядными и одним 16-разрядным. Т аймер/счетчик0, в дополнение к обычному режиму, может тактироваться асинхр онно от внешнего генератора. Этот генератор оптимизирован под использова ние кварцевого кристалла на частоту 32768 кГц, что позволяет использовать таймер/счетч ик0 как часы реального времени (Real Time Clock - RTC).
Таймер/счетчик0 оснащен своим собственным предварительн ым делителем. Таймеры/счетчики 1 и 2 используют выходы ступеней деления о бщего 10-разрядного предварительного делителя. Эти два таймера/счетчика можн о использовать как таймеры с встроенной временной базой или как счетчики, переключае мые по состоянию на внешнем выводе.
Предварительные делители таймеров/счетчиков |
||||
CK |
10-разрядный предварительный делитель |
|||
|
CK/8 |
CK/64 |
CK/256 |
CK/1024 |
EXT1 |
|
|
|
|
EXT2 |
|
|
|
|
|
0 |
|
0 |
|
|
|
|
|
|
CS20 |
|
CS10 |
|
|
CS21 |
|
CS11 |
|
|
CS22 |
|
CS12 |
|
|
|
Тактовый сигнал таймера/счетчика2 |
Тактовый сигнал таймера/счетчика1 |
||
Рис. 30 Предварительный делитель таймера/счетчика1 и таймера/счетчика2 |
||||
Предварительный делитель таймеров/счетчиков 1и 2 содержит четыре ступени |
||||
деления: CK/8, CK/64, CK/256 и CK/1024, где CK входной тактовый сигнал. Кроме тог о, |
||||
в качестве источников тактовых сигналов могут быть испол ьзованы сигналы от внешних |
||||
источников, тактовый сигнал CK и нулевой тактовый сигнал (stop ). |
|
|||
8 8