Скачиваний:
25
Добавлен:
01.05.2014
Размер:
2.09 Mб
Скачать

5. Таймер

Ключевым элементом таймера является 16-разрядный счетчик, работающий в непрерывном режиме. На вход счетчика поступают импульсы с предделителя (с коэффициентами деления 1, 4 8 или 16), тактируемого внутренней частотой синхронизации E. Таймер обеспечивает функции входного захвата, которые переписывают состояние счетчика при наступлении заданного события в соответствующий регистр захвата, и функции выходного сравнения, которые генерируют заданное событие на одном из выводов выходного сравнения при совпадении значений счетчика и соответствующего регистра выходного сравнения. На рис.5.1 показаны регистры данных таймера.

Регистр TCNT хранит текущее состояние счетчика, при чтении этого регистра необходимо сначала читать старший байт (при этом содержимое младшего байта автоматически сохраняется в отдельной ячейке) а затем младший байт (будет прочитано сохраненное значение). Также можно использовать команды двухбайтового чтения.

Регистры входного захвата TIC1-TIC3 доступны только для чтения и сохраняют свое значение при системном сбросе. Для чтения этих регистров рекомендуется использовать команды двухбайтового чтения.

$100E

Бит 15

Бит 14

Бит 13

Бит 12

Бит 11

Бит 10

Бит 9

Бит 8

TCNT

$100F

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

$1010

Бит 15

Бит 14

Бит 13

Бит 12

Бит 11

Бит 10

Бит 9

Бит 8

TIC1

$1011

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

$1012

Бит 15

Бит 14

Бит 13

Бит 12

Бит 11

Бит 10

Бит 9

Бит 8

TIC2

$1013

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

$1014

Бит 15

Бит 14

Бит 13

Бит 12

Бит 11

Бит 10

Бит 9

Бит 8

TIC3

$1015

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

$1016

Бит 15

Бит 14

Бит 13

Бит 12

Бит 11

Бит 10

Бит 9

Бит 8

TOC1

$1017

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

$1018

Бит 15

Бит 14

Бит 13

Бит 12

Бит 11

Бит 10

Бит 9

Бит 8

TOC2

$1019

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

$101A

Бит 15

Бит 14

Бит 13

Бит 12

Бит 11

Бит 10

Бит 9

Бит 8

TOC3

$101B

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

$101C

Бит 15

Бит 14

Бит 13

Бит 12

Бит 11

Бит 10

Бит 9

Бит 8

TOC4

$101D

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

$101E

Бит 15

Бит 14

Бит 13

Бит 12

Бит 11

Бит 10

Бит 9

Бит 8

TI4O5

$101F

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

Рис.5.1

Регистры выходного сравнения TOC1-TOC4 доступны для чтения и записи, во время сброса в эти регистры заносится значение $FFFF. Для модификации этих регистров рекомендуется использовать команды двухбайтовой записи (если необходимо изменить все 16 бит).

Регистр TI4O5 может выполнять функции как регистра захвата, так и регистра сравнения. Во время сброса конфигурируется как регистр выходного сравнения, при переводе этого регистра в режим захвата запись в него запрещается.

Регистры управления и состояния подсистемы таймера показаны на рис.5.2. Далее подробно описывается их назначение.

CFORC - регистр форсирования сравнения. Этот регистр используется для принудительного выполнения функции выходного сравнения раньше, чем таймер достигнет заданного в регистре выходного сравнения значения. Восьмиразрядный регистр CFORC доступен только для записи, считывание из него всегда возвращает нуль.

FOC1-FOC5 - биты форсирования выходного сравнения OCx: 0 - не имеют никакого значения, 1 - вызывают заданное событие выходного сравнения OCx, флаг OCxF не устанавливается.

Биты 2-0 - не используются, при чтении всегда возвращают нуль.

OC1M - регистр маски выходного сравнения OC1. Используется совместно с выходным сравнением OC1 для задания тех битов порта A, на которые будет оказывать влияние успешное выполнение выходного сравнения OC1.

OC1M7-OC1M3 - соответствуют линиям порта A с 7 по 3. Установка в единицу одного или нескольких из этих битов приведет к выполнению заданного действия над соответствующими линиями порта A при успешном выходном сравнении OC1.

Биты 2-0 - не используются.

OC1D - регистр данных выходного сравнения OC1. Биты этого регистра определяют значения, которые выставляются на соответствующих линиях порта A при успешном выполнении выходного сравнения OC1 (если установлены соответствующие биты регистра OC1M). Биты OC1D7-OC1D3 соответствуют линиям порта A с 7 по 3, биты 2-0 не используются.

TCTL1 - первый регистр управления таймера. Биты OM2-OM5определяют режим вывода, биты OL2-OL5 -выходной уровень для соответствующей функции выходного сравнения. В табл.6.1 показано, как сочетание пары битов OMx и OLx кодирует действия, которые будут предприняты в случае успешного выполнения выходного сравнения OCx.

7

6

5

4

3

2

1

0

$100B

FOC1

FOC2

FOC3

FOC4

FOC5

0

0

0

CFORC

RESET

0

0

0

0

0

0

0

0

$100C

OC1M7

OC1M6

OC1M5

OC1M4

OC1M3

0

0

0

OC1M

RESET

0

0

0

0

0

0

0

0

$100D

OC1D7

OC1D6

OC1D5

OC1D4

OC1D3

0

0

0

OC1D

RESET

0

0

0

0

0

0

0

0

$1020

OM2

OL2

OM3

OL3

OM4

OL4

OM5

OL5

TCTL1

RESET

0

0

0

0

0

0

0

0

$1021

EDG4B

EDG4A

EDG1B

EDG1A

EDG2B

EDG2A

EDG3B

EDG3A

TCTL2

RESET

0

0

0

0

0

0

0

0

$1022

OC1I

OC2I

OC3I

OC4I

I4O5I

IC1I

IC2I

IC3I

TMSK1

RESET

0

0

0

0

0

0

0

0

$1024

TOI

RTII

PAOVI

PAII

0

0

PR1

PR0

TMSK2

RESET

0

0

0

0

0

0

0

0

$1023

OC1F

OC2F

OC3F

OC4F

I4O5F

IC1F

IC2F

IC3F

TFLG1

RESET

0

0

0

0

0

0

0

0

$1025

TOF

RTIF

PAOVF

PAIF

0

0

0

0

TFLG2

RESET

0

0

0

0

0

0

0

0

$1026

DDRA7

PAEN

PAMOD

PEDGE

DDRA3

I4/O5

RTR1

RTR0

PACTL

RESET

0

0

0

0

0

0

0

0

Рис.5.2

Таблица 5.1

OMx

OLx

Действия, предпринимаемые в случае успешного сравнения

0

0

Таймер отключен от выходной логики

0

1

Инверсия состояния выходной линии OCx

1

0

Установить выходную линию OCx в нуль

1

1

Установить выходную линию OCx в единицу

TCTL2 - второй регистр управления таймера. Пары битов EDGxB и EDGxA задают событие на входе ICx, при наступлении которого будет срабатывать функция входного захвата IСx, как это показано в табл.5.2.

Таблица 5.2

EDGxB

EDGxA

Конфигурация

0

0

Функция входного захвата запрещена

0

1

Захват по фронту

1

0

Захват по спаду

1

1

Захват как по фронту, так и по спаду

TMSK1 - первый регистр маскирования прерываний таймера. Биты OC1I-OC4I разрешают прерывания по выходному сравнению, биты IC1-IC3 - прерывания по входному захвату. При установленном бите I4/O5 регистра PACTL бит I4O5I действует как бит IC4I, при сброшенном бите I4/O5 бит I4O5I действует как бит управления OC5I. Если бит OCxI установлен, при выставлении флага OCxF генерируется запрос на прерывание. Аналогично, если бит ICxI установлен, при выставлении флага ICxF генерируется запрос на прерывание.

TFLG1 - первый регистр флагов таймера. Флаги OC1F-OC4F выставляются при успешном выполнении соответствующей функции выходного сравнения, флаги IC1F-IC3F выставляются при выполнении соответствующей функции входного захвата. Флаг I4O5F соответствует выходному сравнению OC5 при сброшенном бите I4/O5 регистра PACTL и входному захвату IC4, если бит I4/O5 регистра PACTL установлен. Флаги состояния таймера сбрасываются путем записи единицы в соответствующий бит.

TMSK2 - второй регистр маскирования прерываний. Назначение отдельных битов приведено ниже:

TOI - разрешение прерывания по переполнению счетчика таймера: 0 - прерывания запрещены, 1 - при выставлении флага TOF генерируется запрос на прерывание.

RTII - разрешение прерываний реального времени: 0 - прерывания запрещены, 1 - при выставлении флага RTIF генерируется запрос на прерывание.

PAOVI - разрешение прерываний по переполнению счетчика импульсов: 0 - прерывания запрещены, 1 - при выставлении флага PAOVF генерируется запрос на прерывание.

PAII - разрешение прерываний по активизации входа счетчика импульсов: 0 - прерывания запрещены, 1 - при выставлении флага PAIF генерируется запрос на прерывание.

Биты 3 и 2 - не используются, при чтении всегда возвращают нуль.

PR1 и PR0 - выбирают коэффициент деления для предделителя, как показано в табл.5.3. Запись в эти биты в обычных режимах разрешена только в течении первых 64 циклов после сброса, в специальных режимах запись возможна в любое время.

Таблица 5.3

PR1

PR0

Коэффициент деления

0

0

1

0

1

4

1

0

8

1

1

16

TFLG2 - второй регистр флагов таймера. Флаги состояния таймера сбрасываются посредством записи единицы в соответствующий бит. Назначение отдельных флагов приведено ниже:

TOF - флаг прерывания по переполнению счетчика таймера: обнуляется во время сброса, затем выставляется при изменении значения счетчика таймера с $FFFF на $0000.

RTIF - флаг прерываний реального времени: обнуляется во время сброса, далее периодически выставляется через заданный интервал времени.

PAOVF - флаг прерываний по переполнению счетчика импульсов: обнуляется во время сброса, далее выставляется каждый раз при изменении значения счетчика импульсов с $FF на $00.

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

Биты 3-0 - не используются, при чтении всегда возвращают нуль.

PACTL - регистр управления счетчиком импульсов. Кроме того, биты этого регистра задают режим работы некоторых линий порта A и период прерываний реального времени:

DDRA7 - направление передачи данных для линии 7 порта A: 0 - ввод, 1 - вывод.

PAEN - разрешение счетчика импульсов: 0 - счетчик импульсов выключен, 1 - счетчик импульсов включен.

PAMOD - режим работы счетчика импульсов: 0 - счетчик внешних событий, 1 - измерение длины импульса.

PEDGE - задание активного изменения входного сигнала для счетчика импульсов. Режим работы определяется битами PAMOD и PEDGE, как показано в табл.5.4.

DDRA3 - направление передачи данных для линии 3 порта A: 0 - ввод, 1 - вывод.

I4/O5 - 0 - разрешает выходное сравнение OC5 (запрещается IC4), 1 - разрешает входной захват IC4 (запрещается OC5).

RTR1 и RTR0 - выбор периода прерываний реального времени, как показано в табл.5.5. Во время сброса эти биты обнуляются.

Таблица 5.4

PAMOD

PEDGE

Действия счетчика

0

0

Инкремент счетчика импульсов по фронту

0

1

Инкремент счетчика импульсов по спаду

1

0

Прекращение счета по нулю на входе PAI

1

1

Прекращение счета по единице на входе PAI

Таблица 5.5

RTR1

RTR0

Коэф-т деления E

XTAL=

XTAL=

8.0 МГц

XTAL=

4.9152 МГц

XTAL=

4.0 МГц

0

0

3.91 мс

4.10 мс

6.67 мс

8.19 мс

0

1

7.81 мс

8.19 мс

13.33 мс

16.38 мс

1

0

15.62 мс

16.38 мс

26.67 мс

32.77 мс

1

1

31.25 мс

32.77 мс

53.33 мс

65.54 мс

E =

2.1 МГц

2.0 МГц

1.2288 МГц

1.0 МГц

Соседние файлы в папке Материалы по микроконтроллерам