ÊÒÖ-ÌÊ
Прерывание по Прерывание по
Прерывание по |
совпадению |
совпадению |
Прерывание по |
переполнению T/C1 |
T/C1 ñ A |
T/C1 ñ B |
захвату входа T/C1 |
данных |
РегистрOCIE2 TOIE2 |
масокOCIE1B OCIE1A прерыванийTOIE1 OCIE0 TOIE0 |
OCF2 |
РегистрICF1 OCF1B |
флаговTOV1 |
TOV0 |
Регистр управления |
|
|
Регистр управления |
||||||
|
TICIE1 |
|
|
TOV2 |
OCF1A |
OCF0 |
|
|
|
|
|
|
|
|
|
|
разряднаяшина |
таймера (TIMSK) |
прерываний таймера (TIFR) |
A T/C1 (TCCR1A) |
|
|
|
B T/C1 (TCCR1B) |
|||||||||
|
|
|
ICF1 OCF1B |
OCF1A |
TOV1 |
|
COM1A1 COM1A0 COM1B1 |
COM1B0 |
PWM11 |
PWM10 |
ICNC1 |
ICES1 |
CTC1 CS12 |
CS11 |
CS10 |
|
15 |
8 |
7 |
|
Триггер |
|
|
|
|
|
|
||||||
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|||
|
Регистр захвата входа T/C1 (ICR1) |
|
|
ЛОГИКА УПРАВЛЕНИЯ |
|
CK |
||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||
8 |
|
|
|
|
захвата |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
15 |
8 |
7 |
|
|
0 |
|
Очистка T/C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таймер/счетчик1 (TCNT1) |
|
|
|
Тактовый сигнал T/C |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
Направл. счета (Up/Down) |
|
|
|
|
|
|
||
15 |
8 |
7 |
0 |
15 |
8 |
7 |
0 |
|
|
16-разрядный компаратор |
|
|
|
16-разрядный компаратор |
|
||
|
|
|
|
|
|
|
|
|
15 |
8 |
7 |
0 |
15 |
8 |
7 |
0 |
|
|
Регистр A сравнения выхода |
|
|
|
Регистр B сравнения выхода |
|
||
|
таймера/счетчика1 |
|
|
|
таймера/счетчика1 |
|
||
|
|
|
|
|
|
|
|
|
Рис. 35 Блок-схема таймера/счетчика1
того, для переключения входа захвата может быть использов ан аналоговый компаратор. Подробнее данная функция описана в разделе Аналоговый компаратор.
Если разрешена функция подавления шума, действительные у словия переключения события захвата тестируются четырьмя выборками, прежде ч ем захват будет активирован. Тестирование сигнала на входном выводе производится с ча стотой XTAL.
РЕГИСТР УПРАВЛЕНИЯ A ТАЙМЕРА/СЧЕТЧИКА1 -
TCCR1A - (Timer/Counter1 Control Register A)
Áèòû |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$2F ($4F) |
|
COM1A1COM1A0COM1B1COM1B0 |
|
- |
- |
PWM11 |
PWM10 |
TCCR1A |
|
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R |
R |
R/W |
R/W |
|
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
• Bits 7,6 - COM1A1, COM1A0: Compare Output Mode1A, bits 1 and 0 - Режим1A
сравнения выхода, биты 1 и 0
Управляющие биты COM1A1 и COM1A0 определяют характер сигнала выход а, следующего за совпадением при сравнении таймера/счетчика1. Сигнал выхода
9 9
ATMEL |
ÊÒÖ-ÌÊ |
поступает на вывод OC1A (Output CompareA). Поскольку это альтернативная ф ункция порта I/O, то соответствующий бит управления направлением д олжен быть установлен в 1 (вывод работает на выход). Конфигурирование управления представлено в таблице 15.
Таблица 15. Выбор режима сравнения 1
COM1X1 |
COM1X0 |
Описание |
0 |
0 |
Таймер/счетчик1 отключен от вывода выхода OC1X |
0 |
1 |
Переключение выходной линии OC1X. |
1 |
0 |
Очистка выходной линии OC1X (на линии низкий уровень). |
1 |
1 |
Установка выходной линии OC1X (на линии высокий уровень). |
Примечание: X = A или B
•Bits 5,4 - COM1B1, COM1B0: Compare Output Mode1B, bits 1 and 0 - Режим1B
сравнения выхода, биты 1 и 0
Управляющие биты COM1B1 и COM1B0 определяют характер сигнала выход а, следующего за совпадением при сравнении таймера/счетчика1. Сигнал выхода поступает на вывод OC1B (Output CompareB). Поскольку это альтернативная ф ункция порта I/O, то соответствующий бит управления направлением д олжен быть установлен в 1 (вывод работает на выход). Конфигурирование управления представлено в таблице 15.
ÂШИМ режиме функции этих битов отличаются. Подробное опи сание приведено в таблице 19.
При изменении битов COM1X1/COM1X0 прерывания по сравнению выхода1 должны быть запрещены очисткой битов разрешения прерыва ния в регистре TIMSK. В противном случае при изменении битов может произойти пр ерывание
•Bits 3..2 - Res: Reserved bits - Зарезервированные биты
Эти биты в микроконтроллерах ATmega603/103 зарезервированы и при с читывании всегда будут 0.
• Bits 1..0 - PWM11, PWM10: Pulse Width Modulator Select Bits - Биты выбора режима
ØÈÌ
Данные биты определяют установку режима ШИМ, как это пока зано в таблице 16. Подробности см. в разделе Таймер/счетчик1 в ШИМ режиме.
Таблица 16. Выбор ШИМ режима
PWM11 |
PWM10 |
Description |
0 |
0 |
Работа таймера/счетчика1 в ШИМ режиме запрещена |
0 |
1 |
Работа таймера/счетчика1 в 8-разрядном ШИМ режиме |
1 |
0 |
Работа таймера/счетчика1 в 9-разрядном ШИМ режиме |
1 |
1 |
Работа таймера/счетчика1 в 10-разрядном ШИМ режиме |
|
|
|
100
ÊÒÖ-ÌÊ
РЕГИСТР УПРАВЛЕНИЯ B ТАЙМЕРА/СЧЕТЧИКА1 -
TCCR1B - (Timer/Counter1 Control Register B)
Áèòû |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$2E ($4E) |
ICNC1 |
ICES1 |
- |
- |
CTC1 |
CS12 |
CS11 |
CS10 |
TCCR1B |
Чтение/Запись |
R/W |
R/W |
R |
R |
R/W |
R/W |
R/W |
R/W |
|
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
•Bit 7 - ICNC1: Input Capture1 Noise Canceler (4 CKs) - Установка режима подавления шума на входе захвата 1
При сброшенном в состояние 0 бите ICNC1 функция подавления шум а входного триггера захвата запрещена. Вход захвата переключается по первому нарастающему/ падающему фронту, поступившему на вывод входа захвата PD4(IC1) . При установленном в состояние 1 бите ICNC1 выполняются четыре последовательных опроса состояния вывода PD4(IC1) и все четыре выборки должны иметь одинаковый (в ысокий/низкий), определяемый битом ICES1, уровень. Частота опроса соответств ует частоте XTAL.
•Bit 6 - ICES1: Input Capture1 Edge Select - Выбор фронта срабатывания на входе
захвата 1
При сброшенном в состояние 0 бите ICES1 содержимое таймера/сче тчика1, по падающему фронту на выводе входа захвата PD4( IC1), пересылаетс я в регистр захвата входа ICR1. При установленном в 1 бите ICES1 содержимое таймера/сч етчика1 пересылается в регистр захвата входа ICR1 по нарастающему фр онту на выводе входа захвата PD4( IC1).
•Bits 5, 4 - Res: Reserved bits - Зарезервированные биты
Эти биты в микроконтроллерах ATmega603/103 зарезервированы и при с читывании всегда будут 0.
•Bit 3 - CTC1: Clear Timer/Counter1 on Compare Match - Очистка таймера/счетчика1
по совпадению
При установленном в состояние 1 бите CTC1 таймер/счетчик1 сбра сывается в состояние $0000 в течение тактового цикла, следующего за совпадением пр и сравненииA. Если бит CTC1 очищен, таймер/счетчик1 продолжает отсчет и не реагир ует на совпадение при сравнении. Поскольку совпадение при сравнении детект ируется в течение тактового цикла CPU следующего за совпадением, то поведение функции бу дет отличаться при установке коэффициента предварительного деления таймер а/счетчика1 большем 1. При коэффициенте предварительного деления 1 и установлен ном в регистре сравненияA состоянии C таймер будет считать в соответствии с установ кой CTC1:
... | C-1 | C | C+1 | 0 | 1 | ...
При установленном коэффициенте предварительного делени я 8 таймер будет считать подобно:
... | C-1, C-1, C-1, C-1, C-1, C-1, C-1, C-1 | C, C, C, C, C,C, C, C | C+1, 0, 0, 0, 0, 0, 0, 0, 0 | ...
В ШИМ режиме состояние бита CTC1 значения не имеет.
•Bits 2,1,0 - CS12, CS11, CS10: Clock Select1, bit 2,1 and 0 - Выбор источника тактовой
частоты, биты 2,1 и 0
Установкой состояния данных битов производится выбор ис точника тактового сигнала ( в том числе коэффициента предварительного деления)
Stop условие выполняет функцию разрешения/запрещения тайме ра/счетчика1 В режимах с предварительным делением на соответствующий коэффициент делится частота CK тактового генератора. При использовании внешнего тактирования
101
ATMEL |
ÊÒÖ-ÌÊ |
необходимо выполнить соответствующие установки в регис тре управления направлением (очистка переводит вывод в режим входа).
Таблица 17. Выбор источника тактового сигнала таймера/счетчика1
CS12 |
CS11 |
CS10 |
Описание |
0 |
0 |
0 |
Stop условие - таймер/счетчик1 остановлен. |
0 |
0 |
1 |
CK |
0 |
1 |
0 |
CK / 8 |
0 |
1 |
1 |
CK / 6 4 |
1 |
0 |
0 |
CK / 256 |
1 |
0 |
1 |
CK / 1024 |
1 |
1 |
0 |
Внешний тактирующий сигнал на выводе T1, нарастающий фронт |
|
|
|
|
1 |
1 |
1 |
Внешний тактирующий сигнал на выводе T1, падающий фронт. |
|
|
|
|
ТАЙМЕР/СЧЕТЧИК1 - TCNT1H и TCNT1L |
|
|
|
|
|
||||
Áèòû |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
|
$2D ($4D) |
MSB |
|
|
|
|
|
|
|
TCNT1H |
$2C ($4C) |
|
|
|
|
|
|
|
LCB |
TCNT1L |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
16-разрядный регистр содержит текущее значение 16-разрядног о таймера/ счетчика1. С тем, чтобы CPU могло считывать/записывать и старш ий и младший байты этого регистра одновременно, обращение реализовано поср едством 8-разрядного регистра временного хранения(TEMP). Этот регистр использует ся также при обращении к OCR1A, OCR1B и ICR1. Если основная программа и подпрограммы обработк и прерываний используют обращение к регистрам посредство м TEMP, то прерывания должны быть запрещены на время обращения из основной прог раммы
• Запись в таймер/счетчик1 - TCNT1
Когда CPU производит запись в старший байт (TCNT1H) записываемые данные размещаются в регистре TEMP. Затем, когда CPU производит запись в младший байт (TCNT1L) данные младшего байта объединяются с байтом данн ых регистра TEMP и все 16 битов одновременно переписываются в регистр тайм ера/счетчика TCNT1. Следовательно, при 16-разрядных операциях обращение к ст аршему байту (TCNT1H) должно выполняться первым. При использовании та ймера/ счетчика1 в качестве 8-разрядного таймера достаточно прои зводить запись только младшего байта.
• Чтение таймера/счетчика1 - TCNT1
Когда CPU считывает младший байт (TCNT1L), то содержимое TCNT1L направ ляются непосредственно в CPU, содержимое старшего байта (TCNT1H) размещ ается в регистре TEMP и при считывании CPU старшего байта (TCNT1H) его содерж имое CPU принимает из регистра TEMP. Следовательно, при 16-разрядных оп ерациях первым должно выполняться обращение к младшему байту (TCNT1L) . При
102
ÊÒÖ-ÌÊ
использовании таймера/счетчика1 в качестве 8-разрядного т аймера достаточно производить запись только младшего байта.
Таймер/счетчик1 выполнен в виде счетчика с нарастанием ил и реверсивного счетчика (в ШИМ режиме) и возможностью чтения/записи. Если в таймер/с четчик1 занесено некоторое значение и выбран источник тактового сигнала, т о таймер/счетчик1 продолжит отсчет через один тактовый цикл после установки в нем зап исанного значения.
РЕГИСТРА СРАВНЕНИЯ A ВЫХОДА ТАЙМЕРА/СЧЕТЧИКА1 - OCR1AH и OCR1AL - (Timer/Counter1 Output Compare Register)
Áèòû |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
|
|
$2B ($4B) |
MSB |
|
|
|
|
|
|
|
|
OCR1AH |
$2A ($4A) |
|
|
|
|
|
|
|
|
LSB |
OCR1AL |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Чтение/Запись |
R/W |
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
|
R/W |
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
РЕГИСТРЫ СРАВНЕНИЯ B ВЫХОДА ТАЙМЕРА/СЧЕТЧИКА1 - OCR1BH и |
||||||||||
OCR1BL - (Timer/Counter1 Output Compare Register) |
|
|
|
|||||||
Áèòû |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
|
|
$29 ($49) |
MSB |
|
|
|
|
|
|
|
|
OCR1BH |
$28 ($48) |
|
|
|
|
|
|
|
|
LSB |
OCR1BL |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Чтение/Запись |
R/W |
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
|
R/W |
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
16-разрядные регистры сравнения выхода обеспечивают и чте ние и запись. Регистры сравнения выхода таймера/счетчика1 хранят данны е постоянно
сравниваемые с состоянием таймера/счетчика1. Действие, за пускаемое совпадением при сравнении определяется содержимым регистра управле ния и состояния таймера/ счетчика1. Совпадение при сравнении может произойти тольк о если таймер/счетчик1 досчитает до значения содержимого OCR. Если в TCNT1 и OCR1A или OCR1B программно будут записаны одинаковые значения, то значен ия, то совпадение при сравнении сгенерировано не будет.
Совпадение при сравнении устанавливает флаг прерывания по совпадению в тактовом цикле CPU следующем за самим совпадением.
Поскольку регистры сравнения выхода OCR1A и OCR1B являются 16-разр ядными, то для обеспечения одновременного занесения старшего и м ладшего байтов данных в регистры OCR1A/B используется регистр временного хранения TEMP. К огда CPU записывает старший байт, то данные временно сохраняются в регистре TEMP. Когда же CPU записывает младший байт в OCR1AL или OCR1BL, то одновременно сод ержимое регистра OCR1BH переписывается в OCR1AH или OCR1BH. Следовательно, при 16разрядных операциях старшие байты регистров OCR1A/B должны за писываться первыми.
103