Управляющий регистр таймера (tcr).
Управлящий регистр таймера (TCR), находящийся по адресу $12, содержит 5 управляющих битов, из которых три бита (ICIE, OCIE и TOIE) отвечают за разрешение прерываний от таймера (соответственно ICI, OCI и TOI), бит IEDG используется в функции входной фиксации, а бит OLVL применяется при выходном сравнении. Каждому из трех бит управления прерываниями соответствует флаг статуса ICF, OCF и TOF в регистре статуса таймера TSR.
Управляющий регистр TCR.
Название |
ICIE |
OCIE |
TOIE |
0 |
0 |
0 |
IEDG |
OLVL |
Установка после RESET |
0 |
0 |
0 |
0 |
0 |
0 |
- |
0 |
ICIE-бит запрета/разрешения прерывания при входной фиксации,
·-при ICIE=1-прерывание разрешено,
·-при ICIE=0-прерывание запрещено,
OCIE-бит запрета/разрешения прерывания при выходном сравнении,
·-при ОCIE=1-прерывание разрешено,
·-при OCIE=0-прерывание запрещено,
TOIE-бит запрета/разрешения прерывания при переполнении таймера,
·-при TOIE=1-прерывание разрешено,
·-при TOIE=0-прерывание запрещено,
IEDG-бит определяет, по фронту или по спаду импульса на TCAP будет запоминаться содержимое счетчика в регистре входной фиксации,
·-при IEDG=1-фронт,
·-при IEDG=0-спад
OLVL-бит определяет, какой уровень появится на выводе TCMP при очередном выходном сравнении.
·-при OLVL=1-высокий уровень,
·-при OLVL=0-низкий уровень.
Регистр статуса таймера (tsr).
Регистр статуса таймера находится по адресу $13, предназначен только для чтения и содержит три флага, каждый из которых относится к определенному прерыванию.
Регистр статуса TSR.
Назначение |
ICF |
OCF |
TOF |
0 |
0 |
0 |
0 |
0 |
Установка после RESET |
U* |
U |
U |
0 |
0 |
0 |
0 |
0 |
* U-состояние не определено
ICF-флаг входной фиксации,
·-флаг устанавливается, когда зафиксирован входной сигнал соответствующей полярности;
·-флаг сбрасывается при чтении регистра TSR ($13) с последующим считыванием младшего байта регистра ICR ($15);
OCF-флаг выходного сравнения,
·-флаг устанавливается, когда значение в регистре выходного сравнения совпадает со значением в счетчике;
·-флаг сбрасывается при чтении регистра TSR ($13) с последующей записью в младший байт регистра OCR ($17);
TOF-флаг переполнения таймера,
·-флаг устанавливается при переходе счетчика со значения $FFFF на $0000;
·-флаг сбрасывается при чтении регистра TSR ($13) с последующим считыванием младшего байта cчетчика ($19);
Для того, чтобы сбросить какой-либо из битов статуса, необходимо произвести две операции: во-первых, обратиться к регистру статуса TSR, во-вторых, обратиться к регистру, соответствующему определенному биту статуса (например, для бита ICF это регистр ICR).
При использовании функции переполнения таймера и обращениях к счетчику в различное время могут возникнуть проблемы, связанные со сбросом флага переполнения. Это может произойти в одном из двух случаев: либо регистр статуса был прочитан в тот момент, когда флаг TOF был установлен, либо младший бит счетчика был прочитан без цели воздействовать на флаг переполнения. Эти возможности необходимо отслеживать при написании программ.
Особо следует подчеркнуть, что в микроконтроллере предусмотрен только один вектор прерывания от таймера, расположенный по адресам $1FF8 (старший байт) и $1FF9 (младший байт). Тем не менее, если все прерывания в блоке таймера будут разрешены, возможна передача управления по этому вектору по трем событиям:
прерывание по переполнению счетчика таймера;
прерывание от устройства входной фиксации;
прерывание от устройства выходного сравнения.
Следовательно, задача определения события, которое привело к инициированию прерывания, ложится на программиста.Это можно определить посредством проверки соответствующих битов в регистре статуса таймера TSR.