Лекция: Прерывания (INTERRUPTS)

Система прерываний – одна из важнейших частей микроконтроллера. Все микроконтроллеры AVR имеют многоуровневую систему прерываний. Прерывание прекращает нормальный ход программы для выполнения приоритетной задачи, определяемой внутренним или внешним событием.

Для каждого такого события разрабатывается отдельная программа, которую называют подпрограммой обработки запроса на прерывание (для краткости — подпрограммой прерывания), и размещается в памяти программ.

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

После выполнения подпрограммы прерывания осуществляется восстановление предварительно сохраненного счетчика команд и процессор возвращается к выполнению прерванной программы.

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

 

Обработка прерываний

Микроконтроллер ATmega8515 содержит два специальных 8-разрядных регистра масок прерываний: регистр масок внешних прерываний GICR и регистр масок прерываний по таймеру/счетчику TIMSK (Timer/Counter Interrupt Mask). Кроме того, в регистрах управления периферией могут быть организованы и другие биты разрешения и биты масок.

При возникновении прерывания бит I разрешения глобального прерывания (Global Interrupt Enable) очищается и все прочие прерывания запрещаются. Пользовательское ПО, с тем, чтобы разрешить вложенные прерывания, может установить бит I внутри подпрограммы обработки прерывания. Выход из подпрограммы обработки прерывания происходит по команде RETI, при этом бит I устанавливается в состояние 1.

Время отклика на прерывание

Отклик на выполнение всех разрешенных прерываний AVR составляет минимум 4 тактовых цикла. В течение 4 тактовых циклов после установки флага прерывания выполняется переход по адресу вектора прерывания для выполнения подпрограммы прерывания. В течение этих 4 циклов содержимое счетчика команд (2 байта) опускаются в стек и указатель стека декрементируется на 2. Вектор указывает переход в подпрограмму обработки прерывания и этот переход занимает 3 тактовых цикла. Если прерывание возникнет во время выполнения многоцикловой команды, то команда завершается до начала обслуживания прерывания. Возврат из подпрограммы обработки прерывания (как и вызов подпрограммы) занимает 4 тактовых цикла. В течение этих 4 циклов состояние счетчика команд (2 байта) извлекается из стека и указатель стека инкрементируется на 2. Когда AVR выходит из прерывания, он всегда возвращается в основную программу и выполняет еще одну команду, прежде, чем начать обслуживание какого либо отложенного прерывания.

Отметим, что регистр статуса SREG не обрабатывается аппаратными средствами AVR, ни для прерываний, ни для подпрограмм.

При обработке подпрограмм прерываний, требующих сохранения в SREG, запись должна выполняться программными средствами пользователя. Для прерываний, запускаемых статическими событиями (например совпадение содержимого регистра сравнения 1A с состоянием счетного регистра таймера/счетчика1) флаг прерывания устанавливается в момент наступления события. Если флаг очищен, но условия возникновения прерывания продолжают существовать, флаг не будет устанавливаться до тех пор, пока это событие не наступит вновь.

 

Обработка прерываний и сброса

Микроконтроллер ATmega8515 использует 16 источников прерывания. Эти прерывания и вектор сброса располагают отдельными программными векторами в пространстве памяти программ. Каждому прерыванию присвоен свой бит разрешения который должен быть установлен совместно с битом I регистра статуса SREG.

Младшие адреса пространства памяти программ автоматически определяются как векторы сброса и прерываний.

Полный перечень векторов представлен в Таблице 5. Перечень представляет также уровень приоритета для каждого прерывания. Прерывания с младшими адресами имеют больший уровень приоритета. RESET имеет наивысший уровень приоритета, следующим является INT0 – Запрос внешнего прерывания 0 и т.д.

Таблица 5. Векторы сброса и прерываний

Vector No. Program Address Source Interrupt Definition
1 $0000 RESET Сброс по выводу и сторожевому таймеру (Hardware Pin and Watchdog Reset)
$0001 INT0 Запрос внешнего прерывания 0 (External Interrupt Request 0)
$0002 INT1 Запрос внешнего прерывания 1 (External Interrupt Request 1)
$0003 TIMER1 CAPT Захват таймера/счетчика 1 (Timer/Counter1 Capture Event)
$0004 TIMER1 COMPA Совпадение A при сравнении таймера/счетчика 1 (Timer/Counter1 Compare Match A)
$0005 TIMER1 COMPB Совпадение B при сравнении таймера/счетчика 1 (Timer/Counter1 Compare Match B)
$0006 TIMER1 OVF Переполнение таймера/счетчика 1 (Timer/Counter1 Overflow)
$0007 TIMER0 OVF Переполнение таймера/счетчика 0 (Timer/Counter0 Overflow)
$0008 SPI, STC Завершение пересылки SPI (SPI Serial Transfer Complete)
$0009 USART, RXC Завершение приема USART (USART, Rx Complete)
$000A USART, UDRE Регистр данных USART пуст (USART Data Register Empty)
$000B USART, TX Завершение передачи USART (USART, Tx Complete)
$000C ANALOG COMP Срабатывание аналогового компаратора (Analog Comparator)
$000D INT2 Запрос внешнего прерывания 2 (External Interrupt Request 2)
$000E TIMER0 COMP Совпадение при сравнении таймера/счетчика 0 (Timer/Counter0 Compare Match)
$000F EE READY Готовность EEPROM (EEPROM Ready)
$0010 SPM RDY Готовность SPM

Регистр флагов прерываний – GIFR (General Interrupt Flag Register)

Регистр GIFR расположен по адресу ($3А($5А)), формат регистра:

Таблица 6. Формат регистра GIFR

Биты

 

 
$3А ($5А)
INTF1 INTF0 INTF2  

 

GIFR
Чтение/Запись
R/W R/W R/W R R R R R

 

 
Начальное состояние

 

 

Bits 7..5 – INTF2 – INTF0: External Interrupt 2-0 Flags – Флаги внешних прерываний с 0 по 2. В случае поступления запроса на прерывание на какой либо из выводов INT2 – INT0, будет установлен в 1 соответствующий флаг прерывания (INTF2 – INTF0). Если бит I регистра SREG и соответствующий бит разрешения (INT2 – INT0) в GIСR будут установлены, то MCU перейдет к вектору прерывания. По завершению подпрограммы прерывания флаг очищается. Кроме того, его можно очистить, записав в него логическую 1.

Bits 4..0 – Res: Reserved Bits – Зарезервированные биты. Эти биты зарезервированы и при считывании всегда покажут состояние 0.

 

Регистр управления внешними прерываниями – GICR

(General Interrupt Control Register)

Регистр GICR расположен по адресу ($3B($5B)), формат регистра:

Таблица 7. Формат регистра GIСR

Биты

 

 
$3B ($5B)
INT1 INT0 INT2       * *

 

GICR
Чтение/Запись
R/W R/W R/W R R R R/W R/W

 

 
Начальное состояние

 

 

Bits 7..5 – INT0… INT2: Биты разрешения внешнего прерывания. Внешние прерывания 2 – 0 активируются по выводам INT2 – INT0, если установлен флаг I в SREG и установлена соответствующий бит в GICR.

Bits 4..0 – не используются для управления внешними прерываниями.

 

Регистр масок прерывания по таймерам/счетчикам — TIMSK (Timer/Counter Interrupt Mask Register)

Регистр TIMSK расположен по адресу ($39($59)), формат регистра:

Таблица 8. Формат регистра TIMSK

Биты

 

 
$39 ($59)
TOIE1 OCIE1A OCIE1B   TICIE1   TOIE0 OCIE0

 

TIMSK
Чтение/Запись
R/W R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние

 

 

Bit 7 — TOIE1: Timer/Counter1 Overflow Interrupt Enable — Разрешение прерывания по переполнению таймера/счетчика1. При установленном бите OCIE1B и установленном бите I регистра статуса разрешается прерывание по переполнению таймера/счетчика1. Соответствующее прерывание (с вектором $0006) выполняется если произойдет переполнение таймера/счетчика1. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг переполнения таймера/счетчика1.При нахождении таймера/счетчика1 в PWM режиме флаг переполнения счетчика устанавливается когда счетчик изменит направление счета при $0000.

Bit 6 – OCE1A: Timer/Counter1 Output CompareA Match Interrupt Enable — Разрешение прерывания по совпадению регистра A с таймером/счетчиком1. При установленном бите OCIE1A и установленном бите I регистра статуса разрешается прерывание по совпадению регистра A с состоянием таймера/счетчика1. Соответствующее прерывание (с вектором $0004) выполняется если произойдет совпадение содержимого регистра A сравнения выхода с состоянием таймера/ счетчика1. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг совпадения регистра A с таймером/счетчиком1.

Bit 5 – OCIE1B: Timer/Counter1 Output CompareB Match Interrupt Enable — Разрешение прерывания по совпадению регистра B с таймером/счетчиком1. При установленном бите OCIE1B и установленном бите I регистра статуса разрешается прерывание по совпадению регистра B с состоянием таймера/счетчика1. Соответствующее прерывание (с вектором $0005) выполняется если произойдет совпадение содержимого регистра B сравнения выхода с состоянием таймера/счетчика1. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг совпадения регистра B с таймером/счетчиком1.

Bit 4 – не используется.

Bit 3 – TICIE1: Timer/Counter1 Input Capture Interrupt Enable — Разрешение прерывания по захвату таймера/счетчика. При установленном бите TICIE1 и установленном бите I регистра статуса разрешается прерывание по захвату таймера/счетчика1. Соответствующее прерывание (с вектором $0003) выполняется если произойдет запуск захвата по выводу PЕ0(ICР). В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг захвата таймера/счетчика1.

Bit 2 – не используется.

Bit 1 — TOIE0: Timer/Counter0 Overflow Interrupt Enable — Разрешение прерывания по переполнению таймера/счетчика0. При установленном бите TOIE0 и установленном бите I регистра статуса разрешается прерывание по переполнению таймера/счетчика0. Соответствующее прерывание (с вектором $0007) выполняется если произойдет переполнение таймера/счетчика0. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг переполнения таймера/счетчика 0.

Bit 0 — OCIE0: Timer/Counter0 Output Compare Interrupt Enable — Разрешение прерывания по совпадению таймера/счетчика 0. При установленном бите OCIE0 и установленном бите I регистра статуса разрешается прерывание по совпадению содержимого регистра сравнения и состояния таймера/ счетчика0. Соответствующее прерывание (с вектором $000E) выполняется если произойдет совпадение при сравнении содержимого регистра сравнения и состояния таймера/счетчика0. В регистре флагов прерывания TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг совпадения таймера/счетчика0.

 

Регистр флагов прерываний по таймерам/счетчикам TIFR

(Timer/Counter Interrupt Flag Register)

Регистр TIFR расположен по адресу ($38($58)), формат регистра:

Таблица 9. Формат регистра TIFR

Биты

 

 
$38 ($58)
TOV1 OCF1A OCF1B   ICF1   TOV0 OCF0

 

TIFR
Чтение/Запись
R/W R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние

 

 

Bit 7 – TOV1: Timer/Counter1 Overflow Flag – Флаг переполнения таймера/счетчика1. Бит TOV1 устанавливается при переполнении таймера/счетчика1. Он аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных TOIE1(Timer/Counter1 Overflow Interrupt Enable) и TOV1 выполняется прерывание по переполнению таймера/счетчика1. В режиме PWM этот бит устанавливается при смене таймером/счетчиком1 направления счета при $0000.

Bit 6 – 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 5 – 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 4 – не используется.

Bit 3 – ICF1: Input Capture Flag 1 – Флаг 1 захвата входа. Бит ICF1устанавливается в случае захвата входа, показывающего, что состояние таймера/счетчика1 переслано в входной регистр захвата ICR1. Бит очищается аппаратно при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1.

Bit 2 – не используется.

Bit 1 – TOV0: Timer/Counter0 Overflow Flag – Флаг переполнения таймера/счетчика0. Бит TOV0 устанавливается при переполнении таймера/счетчика0. Он аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных TOIE0(Timer/Counter0 Overflow Interrupt Enable) и TOV0 выполняется прерывание по переполнению таймера/счетчика0. В режиме PWM этот бит устанавливается при смене таймером/счетчиком1 направления счета при $00.

Bit 0 – 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 выполняется прерывание по совпадению выхода таймера/счетчика 0.

 

1.10. Таймеры/счетчики (TIMER/COUNTERS)

Микроконтроллеры AVR имеют в своем составе от 1 до 4 таймеров/счетчиков с разрядностью 8 или 16 бит, которые могут работать и как таймеры от внутреннего источника тактовой частоты, и как счетчики внешних событий.

Их можно использовать для точного формирования временных интервалов, подсчета импульсов на выводах микроконтроллера, формирования последовательности импульсов, тактирования приемопередатчика последовательного канала связи. В режиме ШИМ (PWM) таймер/счетчик может представлять собой широтно-импульсный модулятор и используется для генерирования сигнала с программируемыми частотой и скважностью. Таймеры/счетчики способны вырабатывать запросы прерываний, переключая процессор на их обслуживание по событиям и освобождая его от необходимости периодического опроса состояния таймеров. Поскольку основное применение микроконтроллеры находят в системах реального времени, таймеры/счетчики являются одним из наиболее важных элементов.

Микроконтроллер ATmega8515 оснащен двумя таймерами/счетчиками – 8(T/C0) и 16 (T/C1)-разрядным.

 

1.10.1. Таймер/счетчик T/C0

В состав T/C0 входят три регистра спецфункций:

– счетный регистр TCNT0,

– регистр управления TCCR0,

– регистр сравнения OCR0.

8-разрядный таймер/счетчик0 получает тактовый сигнал или непосредственно от TCK0 или после прохождения его через предварительный делитель.

В регистре флагов прерывания таймеров/счетчиков TIFR хранятся различные флаги состояния регистров (переполнения, совпадения при сравнении). Установки управляющих сигналов хранятся в регистрах управления таймерами/счетчиками TCCR0. Установка разрешения/запрещения прерываний производится в регистре масок прерываний таймеров/счетчиков TIMSK.

Таймер/счетчик поддерживает функцию сравнения выхода OCR0 как источник данных, сравниваемых с содержимым таймера/счетчика. В функции сравнения выхода входит и опция очистки счетчика при совпадении и формирование, при совпадении, сигнала на выводах сравнения выхода – PB0(OC0).

Таймер/счетчик 0 можно использовать как 8-разрядный широтно-импульсный модулятор (PWM). В этом режиме таймер/счетчик, совместно с регистром совпадения выхода работают как автономный ШИМ с центрированными импульсами и без ложных выбросов.

Рис. 20. Блок-схема таймера/счетчика 0

Регистр управления Т/С0 — TCCR0 (The Timer/Counter0 Control Register)

Регистр TCCR0 предназначен для управления модулем Т/C0. Формат регистра TCCR0:

Таблица 10. Формат регистра TCCR0

Биты

 

 
$33 ($53)
FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00

 

TCCR0
Чтение/Запись
R R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние

 

 

Bit 7 –FOC0 – Принудительное изменение состояния вывода ОС0. При записи в этот разряд логической 1 состояние вывода ОС0 изменяется в соответствии с разрядами СОМ00, СОМ01. Прерывания при этом не генерируются.

Bits 6,3 – WGM00, WGM01 – Определяют режим работы таймер/счетчика0.

Таблица 11. Режимы работы T/C0

№ режима WGM01 WGM00 Режим работы
Normal
Phase correct PWM
CTC
Fast PWM

Bits 5,4 – СОМ01: СОМ00 – Определяют режим работы блока сравнения. Определяется поведение вывода ОС0 при наступлении события «совпадение».

Bits 2..,0 – CS02,..CS00 – Управление тактовым сигналом. Разряды определяют источник тактового сигнала МК.

Счетный регистр – Таймер/счетчик0 – TCNT0

Регистр TCNT0 входит в состав основного блока модуля – блока реверсивного счетчика. В зависимости от режима работы модуля содержимое счетного регистра сбрасывается, инкрементируется, декрементируется по каждому импульсу тактового сигнала. После подачи питания начальное состояние счетного регистра нулевое.

Таблица 12. Формат регистра TCNT0

Биты

 

 
$32 ($42)
               

 

TCNT0
Чтение/Запись
R/W R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние

 

 

Регистр сравнения выхода Т/С0

OCR0 – (Timer/Counter0 Output Compare Register)

Регистр сравнения выходов является 8-разрядным регистром с возможностью чтения/записи. Регистр OCR0 расположен по адресу ($31($51)). Выполнение процедуры сравнения определяется регистром TCCR0. Совпадение при сравнении произойдет только тогда, когда таймер/счетчик досчитает до значения содержимого OCR. Программная запись одного и того же значения в таймер/счетчик и в регистр сравнения выхода не приведет к формированию совпадения при сравнении.

Совпадение при сравнении приведет к установке флага прерывания по совпадению в течение тактового цикла CPU следующего за совпадением.

 

Режимы работы Т/С0

Normal – наиболее простой режим работы Т/С. В этом режиме счетный регистр функционирует как обычный суммирующий счетчик. По каждому тактовому импульсу осуществляется инкремент регистра. При переходе через значение $FF возникает переполнение и счет продолжается со значения $00. В том же такте тактового сигнала, в котором обнуляется счетный регистр, устанавливается в «1» флаг переполнения – TOV0.

При равенстве счетного регистра и регистра сравнения устанавливается в «1» флаг прерывания по событию «совпадение» – OCF0.

Наряду с установкой флага при равенстве счетного регистра и регистра сравнения может изменяться состояние вывода ОС0 МК. Изменение состояния ОС0 определяется разрядами СОМ01: СОМ00 регистра TCCR0.

Таблица 13. Состояние вывода ОС0 МК

СОМ01 СОМ00 Описание состояния вывода ОС0
T/C отключен от вывода ОС0.
Состояние вывода изменяется на противоположное.
Вывод ОС0 сбрасывается в 0.
Вывод ОС0 устанавливается в1.

СТС (сброс при совпадении) – счетный регистр функционирует как обычный суммирующий счетчик, инкремент которого осуществляется по каждому импульсу тактового сигнала. Максимально возможное значение счетного регистра и разрешающая способность счетчика определяется регистром сравнения ОCR0. После достижения значения, записанного в регистре сравнения, счет продолжается со значения $00. В том же такте устанавливается флаг OCF0.

Изменение состояния ОС0 определяется разрядами СОМ01: СОМ00 регистра TCCR0 (состояние вывода ОС0 изменяется в соответствии с таблицей 11).

Fast PWM (быстродействующая ШИМ) в этом режиме генерируются сигналы с широтно-импульсной модуляцией. Режим используется в регулировании мощности, выпрямлении и др. Счетный регистр функционирует как суммирующий счетчик, инкрементирующий состояние по каждому тактовому импульсу. Состояние счетчика изменяется от $00 до $FF, после чего сбрасывается и цикл повторяется.

Особенностью схемы сравнения в этом режиме является двойная буферизация записи в регистр ОCR0 – записываемое число сохраняется в специальном буферном регистре. Изменение содержимого регистра сравнения происходит только в момент достижения счетчиком максимального значения $FF. Это исключает появление несимметричных импульсов сигнала на выходе модулятора (помех), которые были бы неизбежны при непосредственной записи в регистр сравнения. Изменение состояния ОС0 определяется разрядами СОМ01: СОМ00 регистра TCCR0:

Таблица 14. Состояние вывода ОС0 МК

СОМ01 СОМ00 Описание состояния вывода ОС0
T/C отключен от вывода ОС0.
Зарезервировано.
Вывод ОС0 сбрасывается в 0 при равенстве счетного регистра и регистра сравнения. Устанавливается в 1 при обнулении счетного регистра.
Вывод ОС0 устанавливается в1 при равенстве счетного регистра и регистра сравнения. Сбрасывается в 0 при обнулении счетного регистра.

Phase correct PWM (ШИМ с точной фазой) – также используется для генерации сигналов с широтно-импульсной модуляцией. В этом режиме счетный регистр изменяет состояние по импульсу тактового сигнала от $00 до $FF, а затем обратно от $FF до $00. Максимальная частота тактового сигнала в этом режиме в 2 раза меньше максимальной частоты в режиме Fast PWM. Этот режим предпочтительнее использовать при решении задач управления двигателем. Изменение состояния ОС0 определяется разрядами СОМ01: СОМ00 регистра TCCR0:

Таблица 15. Состояние вывода ОС0 МК

СОМ01 СОМ00 Описание состояния вывода ОС0
T/C отключен от вывода ОС0.
Зарезервировано.
1 Вывод ОС0 сбрасывается в 0 при прямом счете. Устанавливается в 1 при обратном счете. (Вывод ОС0 изменяет состояние, если регистр сравнения равен регистру счета).
Вывод ОС0 устанавливается в1 при прямом счете. Сбрасывается в 0 при обратном счете. (Вывод ОС0 изменяет состояние, если регистр сравнения равен регистру счета).

В ШИМ режиме при записи содержимое регистра сравнения выхода пересылается на временное хранение. Содержимое фиксируется при достижении таймером/счетчиком состояния $FF. Такой прием предохраняет от появления ШИМ импульсов увеличенной ширины (ложных выбросов) в случае несинхронной записи OCR0 или OCR2. Пример (для состояния СОМ01: СОМ00=1:0) см. на рис.21.

Рис. 21. Эффект несинхронной фиксации OCR

1.10.2. Таймер/счетчик 1 – T/C1

16-разрядный таймер/счетчик 1 может получать тактовый сигнал от тактового генератора, после предварительного делителя и от внешнего вывода. Кроме того его можно остановить, как показано в описании регистра управления таймером/счетчиком 1 – TCCR1B (Timer/Counter1 Control Register). В регистрах управления TCCR1A и TCCR1B находятся различные флаги, указывающие на переполнение, совпадение при сравнении и случаи захвата событий. В регистре масок прерываний TIMSK (Timer/Counter Interrupt Mask Register) устанавливаются разрешения/запрещения прерываний таймера/счетчика 1. При внешнем тактировании таймера/счетчика 1 внешний сигнал синхронизируется частотой тактового генератора CPU. Для правильной работы таймера/счетчика 1 по внешнему тактовому сигналу минимальное время между двумя переключениями внешнего тактового сигнала должно быть не менее одного периода тактового сигнала CPU. Синхронизация внешнего тактового сигнала ведется нарастающим фронтом внутреннего тактового сигнала CPU.

Наилучшие точность и разрешение 16-разрядный таймер/счетчик 1 обеспечивает при наименьшем коэффициенте предварительного деления. С другой стороны, высокий коэффициент предварительного деления удобен при реализации таймером/счетчиком 1 низкоскоростных функций или точной синхронизации редко происходящих действий.

Таймер/счетчик 1 поддерживает две функции сравнения выхода, используя регистр1 сравнения выходов A и B –OCR1A и OCR1B в качестве источников данных, сравниваемых с содержимым таймера/счетчика1. Функции сравнения выхода включают очистку счетчика по совпадению сравнения A и воздействие на выводы сравнения выхода при обоих совпадениях сравнения.

Таймер/счетчик 1 может быть использован в качестве 8, 9 или 10-разрядного широтно-импульсного модулятора. В этом режиме счетчик и регистры OCR1A/OCR1B работают как сдвоенный самостоятельный ШИМ со сцентрированными импульсами, без формирования ложных импульсов.

Функция захвата входа таймера/счетчика 1 обеспечивает захват содержимого таймера/счетчика 1 в регистр захвата входа, запускаемый внешним событием на выводе входа захвата PD4/(IC1). Реальные установки захвата события определяются регистром управления таймером/счетчиком 1 TCCR1B (Timer/Counter1 Control Register). Подробно описание работы T/C1 в [1].

 

еще рефераты
Еще работы по информатике