Таймер/счетчик микроконтроллера AT91SAM7X Печать
Добавил(а) microsin   

Здесь переведен перевод раздела даташита [1], посвященного таймеру/счетчику (Timer Counter, сокращенно TC).

TC включает три идентичных 16-битных канала таймера/счетчика. Каждый канал можно программировать независимо от других, чтобы они выполняли широкий спектр прикладных функций, таких как измерение частоты, подсчет событий, измерение интервалов времени, генерация импульсов, формирование задержек и генерация ШИМ (pulse width modulation, PWM).

У каждого канала имеется три внешних тактовых входа, пять внутренних тактовых входов и два многофункциональных входных/выходных сигнала, которые можно конфигурировать пользователем. Каждый канал управляет внутренним сигналом прерывания, который можно программировать для генерации прерываний процессора.

Блок TC имеет два глобальных регистра, который относится ко всем трем каналам TC. Block Control Register позволяет трем каналам запуститься одновременно одной инструкцией. Block Mode Register определяет внешние входы тактов для каждого канала, позволяя соединять их в цепочку.

Таблица 32-1 показывает присвоение входов тактов TC каналам 0..2.

Таблица 32-1. Назначение тактов для каналов TC.

Имя Определение
TIMER_CLOCK1 MCK/2
TIMER_CLOCK2 MCK/8
TIMER_CLOCK3 MCK/32
TIMER_CLOCK4 MCK/128
TIMER_CLOCK5 MCK/1024

На рисунке показана блок-схема внутреннего устройства TC.

AT91SAM7X TC block diagram fig32 01

Рис. 32-1. Блок-схема Timer Counter.

Таблица 32-2. Описание имен сигналов.

Блок/канал Имя сигнала Описание
Сигнал канала XC0, XC1, XC2 Входы внешнего тактирования
TIOA Capture Mode: вход таймера/счетчика
Waveform Mode: выход таймера/счетчика
TIOB Capture Mode: вход таймера/счетчика
Waveform Mode: вход или выход таймера/счетчика
INT Выход сигнала прерывания
SYNC Вход сигнала синхронизации

Таблица 32-3. Список выводов TC.

Имя вывода Описание Тип
TCLK0-TCLK2 Вход внешних тактов Вход
TIOA0-TIOA2 I/O Line A I/O (вход/выход)
TIOB0-TIOB2 I/O Line B I/O (вход/выход)

[Зависимости TC]

Сигналы I/O. Эти ножки используются для подключения совместимых внешних устройств, которые могут мультиплексироваться с сигналами PIO. Программист сначала должен настроить контроллеры PIO, чтобы присвоить выводы TC их периферийным функциям [4].

Микроконтроллеры AT91SAM7X поставляются в корпусах LQFP100 и TFBGA100.

Мультиплексирование ножек TC на PIO-контроллере A:

Имя порта Номер вывода Peripheral A Peripheral B
LQFP100 TFBGA100
PA15 23 C10 SPI0_NPCS3 TCLK2

Мультиплексирование ножек TC на PIO-контроллере B:

Имя порта Номер вывода Peripheral A Peripheral B
LQFP100 TFBGA100
PB12 39 B5 ETXER TCLK0
PB19 64 D5 PWM0 TCLK1
PB23 69 F2 TIOA0 DCD1
PB24 70 G2 TIOB0 DSR1
PB25 71 F3 TIOA1 DTR1
PB26 72 F4 TIOB1 RI1
PB27 9 D9 TIOA2 PWM0
PB28 10 E8 TIOB2 PWM1

Пример настройки аппаратной функции сигнала TIOA10, чтобы он формировался на выводе корпуса микроконтроллера:

//Ножка TIOA0 управляется настройкой контроллера PBx:
AT91PS_PIO pPio = AT91C_BASE_PIOB;
//Ножка TIOA0 привязана к порту PB23 и периферийной функции A:
u32 periphAenable = AT91C_PB23_TIOA0;
u32 periphBenable = 0;
//Настройка регистров PIO:
pPio->PIO_ASR = periphAenable;                  //Разрешение функции Peripheral A
pPio->PIO_BSR = periphBenable;                  //Запрет функции Peripheral B
pPio->PIO_PDR = (periphAenable | periphBenable);//Установка режима периферии

Управление питанием. TC тактируется через Power Management Controller (PMC) [2], поэтому программист должен предварительно сконфигурировать PMC, чтобы разрешить подачу тактов на Timer Counter.

Прерывание. У TC есть сигнал прерывания, подключенный к Advanced Interrupt Controller (AIC) [3]. Обработка прерывания TC требует программирования AIC перед конфигурированием TC.

[Функциональное описание TC]

Все три канала TC независимы друг от друга и работают идентично. Регистры для программирования канала описаны ниже в соответствующих врезках.

16-bit Counter. Каждый канал организован вокруг 16-разрядного счетчика. Значение этого счетчика инкрементируется на каждом положительном перепаде выбранного сигнала тактов. Когда счетчик достигает значения 0xFFFF и переваливает к значению 0x0000, происходит событие переполнения, и при этом устанавливается бит COVFS в регистре TC_SR (Status Register).

Текущее значение счетчика доступно в реальном времени путем чтения Counter Value Register, TC_CV. Счетчик может быть сброшен триггером. В этом случае значение счетчика перейдет к 0x0000 на следующем достоверном такте выбранного сигнала тактирования.

Выбор тактирования. На уровне блока входные сигналы тактов для каждого канала можно подключить ко внешним входам TCLK0, TCLK1 или TCLK2, или их можно подключить к внутренним сигналам ввода/вывода TIOA0, TIOA1 или TIOA2, чтобы каналы соединялись в цепочку. Это осуществляется программированием TC_BMR (Block Mode), см. рис. 32-2.

AT91SAM7X TC clock chaining selection fig32 02

Рис. 32-2. Выбор соединения каналов в цепочку (Clock Chaining Selection).

Каждый канал независимо от других может быть настроен для выбора внутреннего или внешнего источника тактирования:

• Внутренние сигналы тактов: TIMER_CLOCK1, TIMER_CLOCK2, TIMER_CLOCK3, TIMER_CLOCK4, TIMER_CLOCK5.
• Внешние сигналы тактов: XC0, XC1 или XC2.

Этот выбор осуществляется битами TCCLKS в регистре TC_CMR (Channel Mode Register).

Выбранный тактовый сигнал может быть проинвертирован битом CLKI в регистре TC_CMR. Это позволяет подсчитывать противоположные перепады тактового сигнала.

Burst-функция позволяет управлять тактовым сигналом с помощью внешней лог. 1. Параметр BURST в регистре TC_CMR определяет этот сигнал (none, XC0, XC1, XC2), см. рис. 32-3.

Примечание: в любых случаях, если используется внешний тактовый сигнал, длительность каждого из этих уровней должна быть больше, чем период главной тактовой частоты (master clock, MCK [2]). Внешняя тактовая частота должна быть как минимум в 2.5 раз ниже частоты master clock.

AT91SAM7X TC clock selection fig32 03

Рис. 32-3. Выбор тактовой частоты.

Управление тактированием. Тактовый сигнал для каждого счетчика может управляться двумя разными способами: его можно разрешить/запретить и запустить/остановить, см. рис. 32-4.

• Тактовая частота может быть разрешена или запрещена пользователем с помощью команд CLKEN и CLKDIS в регистре TC_CCR (TC Channel Control Register). В режиме захвата (Capture Mode) он может быть запрещен событием загрузки RB (RB load event), если установлен в 1 бит LDBDIS регистра TC_CMR. В режиме генерации сигнала (Waveform Mode) это может быть запрещено событием сравнения RC (RC Compare event), если установлен в 1 бит CPCDIS регистра TC_CMR. При запрете действия запуска или останова (start/stop actions) не дают никакого эффекта: только команда CLKEN в TC_CCR может повторно разрешить тактирование. Когда тактирование разрешено, устанавливается бит CLKSTA в регистре состояния таймера/счетчика TC_SR (TC Status Register).

• Тактирование может быть также запущено или остановлено событием, триггер (software, synchro, external или compare) всегда запускает тактирование. Тактирование может быть остановлено RB load event в Capture Mode (LDBSTOP = 1 в регистре TC_CMR) или событием RC Compare в Waveform Mode (CPCSTOP = 1 в регистре TC_CMR). Команды start и stop работают только когда тактирование разрешено.

AT91SAM7X TC clock control fig32 04

Рис. 32-4. Управление тактированием.

Режимы работы TC. Каждый канал может независимо работать в двух разных режимах:

• Режим захвата Capture Mode, который может измерять длительности сигналов.
• Режим генерации сигнала Waveform Mode.

Рабочий режим TC программируется битом WAVE в регистре TC_CMR (TC Channel Mode Register).

В Capture Mode сигналы TIOA и TIOB конфигурируются как входы. В Waveform Mode сигнал TIOA всегда конфигурируется как выход, и если TIOB не выбран как внешний триггер, он тоже конфигурируется как выход.

Триггер. Триггер сбрасывает счетчик и запускает тактирование счетчика. Три типа триггеров являются общими для обоих режимов Capture/Waveform, и для каждого из этих режимов четвертый внешний триггер.

Следующие триггеры являются общими для обоих режимов:

• Software Trigger: на каждом канале есть программный триггер, доступный установкой бита SWTRG в регистре TC_CCR.
• SYNC: у каждого канала есть сигнал синхронизации SYNC. Когда этот сигнал выставлен, то он дает тот же эффект, что и программный триггер. Сигналы SYNC всех каналов устанавливаются одновременно записью TC_BCR (Block Control) с установленным битом SYNC.
• Compare RC Trigger: на каждом канале реализовано сравнение RC, и это может предоставить триггер, когда значение счетчика совпадает со значением регистра RC, если в регистре TC_CMR установлен бит CPCTRG.

Канал может быть также сконфигурирован для внешнего триггера. В Capture Mode внешний триггер может быть выбран между сигналами TIOA и TIOB. В Waveform Mode внешнее событие может программироваться следующими сигналами: TIOB, XC0, XC1 или XC2. Это внешнее событие затем может быть запрограммировано для триггера путем установки ENETRG в регистре TC_CMR.

Если используется внешний триггер, то для надежного его детектирования длительность внешнего импульса должна быть больше, чем период master clock.

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

Capture Mode (режим захвата). В этот режим входят очисткой бита WAVE в регистре TC_CMR (Channel Mode Register). Capture Mode позволяет каналу TC измерять длительности и частоты импульсов сигналов TIOA и TIOB, их период, скважность и фазу. В этом режиме сигналы TIOA и TIOB обрабатываются как входы.

Рис. 32-5 показывает конфигурацию канала TC, когда он запрограммирован в Capture Mode.

AT91SAM7X TC Capture Mode fig32 05

Рис. 32-5. Capture Mode.

Регистры захвата A и B. Регистры RA и RB используются как регистры захвата. Это означает, что они могут быть загружены значением из счетчика, когда произошло настроенное событие на сигнале TIOA.

Параметр LDRA в регистре TC_CMR определяет перепад TIOA для загрузки регистра A, и параметр LDRB определяет перепад TIOA для загрузки регистра B.

RA будет загружен только если он не был загружен последними триггером, или если RB был загружен после последней загрузки RA.

RB будет загружен только если RA был загружен последним триггером или последней загрузкой RB.

Загрузка RA или RB перед чтением последнего загруженного значения установит флаг переполнения LOVRS (Overrun Error) в регистре TC_SR (Status Register). В этом случае старое значение будет перезаписано.

События триггера. В дополнение к сигналу SYNC, программному триггеру и триггеру сравнения RC Compare также можно определить внешний триггер.

Бит ABETRG в регистре TC_CMR выбирает в качестве внешнего триггера входные сигналы TIOA или TIOB. Параметр ETRGEDG определяет детектируемый перепад (нарастание уровня, его спад, или оба этих перепада) для генерации внешнего триггера. Если ETRGEDG = 0 (none), то внешний триггер запрещен.

Waveform Mode. В режим генерации сигнала входят установкой в 1 бита WAVE регистра TC_CMR (Channel Mode Register). Этот режим канала TC генерирует 1 или 2 сигнала PWM с одинаковой частотой и независимо программируемой скважностью, либо генерирует разные типы одиночных или повторяющихся импульсов.

В этом режиме сигнал TIOA конфигурируется как выход, и если сигнал TIOB не используется как внешнее событие (параметр EEVT в TC_CMR), то он тоже конфигурируется как выход.

На рис. 32-6 показана конфигурация канала TC, когда он запрограммирован в режиме генерации сигнала (Waveform Operating Mode).

AT91SAM7X TC Waveform Mode fig32 06

Рис. 32-6. Waveform Mode.

Выбор формы генерируемого сигнала. В зависимости от параметра WAVSEL в регистре TC_CMR (Channel Mode Register) меняется поведение TC_CV.

С любым выбором все регистры RA, RB и RC могут использоваться как регистры сравнения.

RA Compare используется для управления выходом TIOA, RB используется для управления выходом TIOB (если он корректно сконфигурирован), и RC Compare используется для управления выходами TIOA и/или TIOB.

WAVSEL = 00

При WAVSEL = 00 значение TC_CV инкрементируется от 0x0000 к 0xFFFF. Как только достигнуто значение 0xFFFF, TC_CV сбрасывается. Инкремент TC_CV начинается заново, и цикл повторяется, см. рис. 32-7.

AT91SAM7X TC WAVSEL00 without trigger fig32 07

Рис. 32-7. WAVSEL= 00 без триггера.

Событие внешнего или программного триггера может сбросить значение TC_CV. Важно отметить, что триггер может произойти в любой момент времени, см. рис. 32-8.

AT91SAM7X TC WAVSEL00 with trigger fig32 08

Рис. 32-8. WAVSEL= 00 с триггером.

В этой конфигурации RC Compare не может быть запрограммировано для генерации триггера. В то же время RC Compare может остановить тактирование счетчика (CPCSTOP = 1 в регистре TC_CMR) и/или запретить тактирование счетчика (CPCDIS = 1 в регистре TC_CMR).

WAVSEL = 10

При WAVSEL = 10 значение TC_CV инкрементируется о 0 до значения RC, затем автоматически сбрасывается при при RC Compare. Как только TC_CV был сброшен, он начинает инкрементироваться снова, и так далее. См. рис. 32-9.

AT91SAM7X TC WAVSEL10 without trigger fig32 09

Рис. 32-9. WAVSEL= 10 без триггера.

Важно отметить, что TC_CV может быть сброшен в любой момент внешним событием или программным триггером, если они оба правильно запрограммированы. См. рис. 32-10.

AT91SAM7X TC WAVSEL10 with trigger fig32 10

Рис. 32-10. WAVSEL= 10 с триггером.

Дополнительно RC Compare может остановить тактирование счетчика (CPCSTOP = 1 в регистре TC_CMR) и/или запретить тактирование счетчика (CPCDIS = 1 в регистре TC_CMR).

WAVSEL = 01

При WAVSEL = 00 значение TC_CV инкрементируется от 0x0000 к 0xFFFF. Как только достигнуто значение 0xFFFF, TC_CV декрементируется до 0x0000, затем снова переходит к инкременту, и так далее. См. рис. 32-11.

AT91SAM7X TC WAVSEL01 without trigger fig32 11

Рис. 32-11. WAVSEL = 01 без триггера.

Такой триггер, как внешнее событие или программный триггер, может в любой момент времени модифицировать TC_CV. Если триггер сработал при инкременте TC_CV, то TC_CV начнет декрементироваться. Если триггер произошел при декременте TC_CV, то TC_CV начнет инкрементироваться. См. рис. 32-12.

AT91SAM7X TC WAVSEL01 with trigger fig32 12

Рис. 32-12. WAVSEL = 01 с триггером.

В этой конфигурации RC Compare не может быть запрограммировано.

В то же время RC Compare может остановить тактирование счетчика (CPCSTOP = 1 в регистре TC_CMR) и/или запретить тактирование счетчика (CPCDIS = 1 в регистре TC_CMR).

WAVSEL = 11

При WAVSEL = 11 значение TC_CV инкрементируется от 0 до RC. Как только достигнуто значение RC, значение TC_CV начинает декрементироваться до 0, затем снова начинает инкрементироваться до RC и так далее. См. рис. 32-13.

AT91SAM7X TC WAVSEL11 without trigger fig32 13

Рис. 32-13. WAVSEL = 11 без триггера.

Такой триггер, как внешнее событие или программный триггер, может в любой момент времени модифицировать TC_CV. Если триггер сработал при инкременте TC_CV, то TC_CV начнет декрементироваться. Если триггер произошел при декременте TC_CV, то TC_CV начнет инкрементироваться. См. рис. 32-14.

AT91SAM7X TC WAVSEL11 with trigger fig32 14

Рис. 32-14. WAVSEL = 11 с триггером.

RC Compare может остановить тактирование счетчика (CPCSTOP = 1 в регистре TC_CMR) и/или запретить тактирование счетчика (CPCDIS = 1 в регистре TC_CMR).

Внешние события, условия триггера. Внешнее событие может быть запрограммировано для детектирования одного из источников тактирования (XC0, XC1, XC2) или TIOB. Тогда выбранное внешнее событие может использоваться как триггер.

Параметр EEVT в регистре TC_CMR выбирает внешний триггер. Параметр EEVTEDG определяет перепад триггера для каждого из возможных внешних триггеров (нарастание уровня, спад уровня, или оба этих перепада). Если EEVTEDG очищен (none), то внешнее событие не определено.

Если TIOB определен как внешний сигнал события (EEVT = 0), то TIOB больше не используется как выход, и регистр сравнения B не используется для генерации сигналов и соответственно не генерирует запросов прерываний (IRQ). В этом случае этот канал TC может генерировать сигнал только на TIOA.

Когда внешнее событие определено, оно может использоваться в качестве триггера путем установки бита ENETRG в регистре TC_CMR.

В Capture Mode сигнал SYNC и программный триггер также доступны как триггеры. RC Compare также можно использовать как триггер, в зависимости от параметра WAVSEL.

Контроллер выхода. Контроллер выхода определяет изменения выходного уровня на TIOA и TIOB в соответствии с событием. Управление TIOB используется только если TIOB настроен как выход (не как источник внешнего события).

Следующие события управляют выходами TIOA и TIOB: программный триггер, внешнее событие или RC Compare. RA Compare управляет TIOA, и RB Compare управляет TIOB. Каждое из этих событий может быть запрограммировано для установки, очистки или переключения выхода, как это определено соответствующим параметром в TC_CMR.

[Интерфейс программирования TC (регистры)]

Таблица 32-4. Отображение регистров таймера/счетчика на адресное пространство(1).

Смещение Регистр Имя Доступ Сброс
0x00 + channel · 0x40 + 0x00 Регистр управления каналом TC_CCR WO -
0x00 + channel · 0x40 + 0x04 Регистр режима канала TC_CMR RW 0
0x00 + channel · 0x40 + 0x08 Зарезервировано      
0x00 + channel · 0x40 + 0x0C      
0x00 + channel · 0x40 + 0x10 Значение счетчика TC_CV RO 0
0x00 + channel · 0x40 + 0x14 Регистр A TC_RA RW(2) 0
0x00 + channel · 0x40 + 0x18 Регистр B TC_RB RW(2) 0
0x00 + channel · 0x40 + 0x1C Регистр C TC_RC RW 0
0x00 + channel · 0x40 + 0x20 Регистр состояния TC_SR RO 0
0x00 + channel · 0x40 + 0x24 Регистр разрешения прерываний TC_IER WO -
0x00 + channel · 0x40 + 0x28 Регистр запрета прерываний TC_IDR WO -
0x00 + channel · 0x40 + 0x2C Регистр маски прерываний TC_IMR RO 0
0xC0 Регистр управления блоком TC_BCR WO -
0xC4 Регистр режима блока TC_BMR RW -
0xFC Зарезервировано      

Примечания:

1. Индекс канала (channel) может быть в диапазоне от 0 до 2.
2. Только для чтения (read-only, RO), если WAVE = 0.
3. WO (write-only) означает доступ только на запись, RW (read-write) означает полный доступ на чтение и запись, RO (read-only) означает доступ только на чтение.

Регистр управления блоком TC. Тип доступа: только запись (WO).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
-
- - - - - - - - - - - - - - SYNC

SYNC: Synchro Command (команда синхронизации каналов)

0 = не дает никакого эффекта.
1 = выставляет сигнал SYNC, который генерирует программный триггер одновременно для всех каналов.

Регистр режима блока TC. Тип доступа: полный (RW).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
-
- - - - - - - - - TC2XC2S TC1XC1S TC0XC0S

TC0XC0S: External Clock Signal 0 Selection (выбор сигнала для XC0)

TC0XC0S Сигнал, подключенный к XC0
0 0 TCLK0
0 1 none (ничего не подключено)
1 0 TIOA1
1 1 TIOA2

TC1XC1S: External Clock Signal 1 Selection (выбор сигнала для XC1)

TC1XC1S Сигнал, подключенный к XC1
0 0 TCLK1
0 1 none (ничего не подключено)
1 0 TIOA0
1 1 TIOA2

TC2XC2S: External Clock Signal 2 Selection (выбор сигнала для XC2)

TC2XC2S Сигнал, подключенный к XC2
0 0 TCLK2
0 1 none (ничего не подключено)
1 0 TIOA0
1 1 TIOA1

Регистр управления каналом TC. Тип доступа: только запись (WO).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
-
- - - - - - - - - - - - SWTRG CLKDIS CLKEN

CLKEN: Counter Clock Enable Command (команда разрешения тактирования счетчика)

0 = не дает никакого эффекта.
1 = разрешает тактирование, если CLKDIS не установлен в 1.

CLKDIS: Counter Clock Disable Command (команда запрета тактирования счетчика)

0 = не дает никакого эффекта.
1 = запрещает тактирование.

SWTRG: Software Trigger Command (команда программного триггера)

0 = не дает никакого эффекта.
1 = выполняется программный триггер: счетчик сбрасывается, и начинается его тактирование.

Регистр режима канала TC в режиме захвата (WAVE = 0). Тип доступа: полный (RW).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - LDRB LDRA
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
WAVE CPCTRG - - - ABETRG ETRGEDG LDBDIS LDBSTOP BURST CLKI TCCLKS

TCCLKS: Clock Selection (выбор тактирования)

TCCLKS Выбранный источник тактов
0 0 0 TIMER_CLOCK1
0 0 1 TIMER_CLOCK2
0 1 0 TIMER_CLOCK3
0 1 1 TIMER_CLOCK4
1 0 0 TIMER_CLOCK5
1 0 1 XC0
1 1 0 XC1
1 1 1 XC2

CLKI: Clock Invert (инверсия тактов)

0 = счетчик инкрементируется фронтом нарастания лог. уровня сигнала тактов.
1 = счетчик инкрементируется срезом спада лог. уровня сигнала тактов.

BURST: Burst Signal Selection (выбор внешнего сигнала управления тактированием)

BURST Как работает управление тактированием
0 0 Тактовая частота не подается постоянно (нет внешнего управления)
0 1 XC0 && выбранный сигнал тактов
1 0 XC1 && выбранный сигнал тактов
1 1 XC2 && выбранный сигнал тактов

LDBSTOP: Counter Clock Stopped with RB Loading (выбор остановки счета при загрузке RB)

0 = тактирование счетчика не останавливается при загрузке регистра RB.
1 = тактирование счетчика останавливается при загрузке регистра RB.

LDBDIS: Counter Clock Disable with RB Loading (выбор запрета счета при загрузке RB)

0 = тактирование счетчика не запрещается при загрузке регистра RB.
0 = тактирование счетчика запрещается при загрузке регистра RB.

ETRGEDG: External Trigger Edge Selection (выбор перепада внешнего триггера)

ETRGEDG Перепад
0 0 none (перепад не выбран)
0 1 Фронт нарастания уровня (0 -> 1)
1 0 Спад уровня (1 -> 0)
1 1 Любой перепад активен

ABETRG: TIOA or TIOB External Trigger Selection (выбор сигнала внешнего триггера)

0 = в качестве внешнего триггера используется TIOB.
1 = в качестве внешнего триггера используется TIOA.

CPCTRG: RC Compare Trigger Enable (разрешение триггера сравнения RC)

0 = событие RC Compare не оказывает никакого эффекта на счетчик и его тактирование.
1 = событие RC Compare сбрасывает счетчик и запускает его тактирование.

WAVE

0 = разрешен режим сравнения (активен Capture Mode).
1 = запрещен режим сравнения (активен Waveform Mode).

LDRA: RA Loading Selection (выбор перепадов загрузки RA)

LDRA Перепад
0 0 none (перепад не выбран)
0 1 Фронт нарастания уровня TIOA (0 -> 1)
1 0 Спад уровня TIOA (1 -> 0)
1 1 Любой перепад TIOA активен

LDRB: RB Loading Selection (выбор перепадов загрузки RB)

LDRB Перепад
0 0 none (перепад не выбран)
0 1 Фронт нарастания уровня TIOA (0 -> 1)
1 0 Спад уровня TIOA (1 -> 0)
1 1 Любой перепад TIOA активен

Регистр режима канала TC в режиме генерации сигнала (WAVE = 1). Тип доступа: полный (RW).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
BSWTRG BEEVT BCPC BCPB ASWTRG AEEVT ACPC ACPA
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
WAVE WAVSEL ENETRG EEVT EEVTEDG CPCDIS CPCSTOP BURST CLKI TCCLKS

TCCLKS: Clock Selection (выбор тактирования)

TCCLKS Выбранный источник тактов
0 0 0 TIMER_CLOCK1
0 0 1 TIMER_CLOCK2
0 1 0 TIMER_CLOCK3
0 1 1 TIMER_CLOCK4
1 0 0 TIMER_CLOCK5
1 0 1 XC0
1 1 0 XC1
1 1 1 XC2

CLKI: Clock Invert (инверсия тактов)

0 = счетчик инкрементируется фронтом нарастания лог. уровня сигнала тактов.
1 = счетчик инкрементируется срезом спада лог. уровня сигнала тактов.

BURST: Burst Signal Selection (выбор внешнего сигнала управления тактированием)

BURST Как работает управление тактированием
0 0 Тактовая частота не подается постоянно (нет внешнего управления)
0 1 XC0 && выбранный сигнал тактов
1 0 XC1 && выбранный сигнал тактов
1 1 XC2 && выбранный сигнал тактов

CPCSTOP: Counter Clock Stopped with RC Compare (останавливать тактирование при RC Compare)

0 = тактирование счетчика не останавливается, когда счетчик достигает значения регистра RC.
1 = тактирование счетчика останавливается, когда счетчик достигает значения регистра RC.

CPCDIS: Counter Clock Disable with RC Compare (запрещать тактирование при RC Compare)

0 = тактирование счетчика не запрещается, когда счетчик достигает значения регистра RC.
1 = тактирование счетчика запрещается, когда счетчик достигает значения регистра RC.

EEVTEDG: External Event Edge Selection (выбор перепада внешнего события)

EEVTEDG Перепад
0 0 none (перепад не выбран)
0 1 Фронт нарастания уровня (0 -> 1)
1 0 Спад уровня (1 -> 0)
1 1 Любой перепад активен

EEVT: External Event Selection (выбор внешнего события)

EEVTEDG Сигнал, выбранный как внешнее событие Направление TIOB
0 0 TIOB Вход(1)
0 1 XC0 Выход
1 0 XC1
1 1 XC2

Примечание (1): если TIOB выбирается как сигнал внешнего события, то TIOB конфигурируется как вход, и не может больше использоваться для генерации сигналов, и следовательно для генерации запросов прерывания (IRQ).

ENETRG: External Event Trigger Enable (разрешение триггера внешнего события)

0 = внешнее событие никак не влияет на счетчик и его тактирование. В этом случае выбранное внешнее событие только лишь управляет выходом TIOA.
1 = внешнее событие сбрасывает счетчик и запускает его тактирование.

WAVSEL: Waveform Selection (выбор варианта генерации сигнала)

WAVSEL Эффект
0 0 Счет вверх (UP mode) без автоматического триггера при событии совпадения RC Compare
0 1 Счет вверх (UP mode) с автоматическим триггером при событии совпадения RC Compare
1 0 Счет вверх и вниз (UPDOWN mode) без автоматического триггера при событии совпадения RC Compare
1 1 Счет вверх и вниз (UPDOWN mode) с автоматическим триггером при событии совпадения RC Compare

WAVE

0 = запрещен режим генерации сигнала (активен Capture Mode).
1 = разрешен режим генерации сигнала (активен Waveform Mode).

ACPA: RA Compare Effect on TIOA (влияние события сравнения RA на сигнал TIOA)

ACPA Эффект
0 0 none (ничего не происходит)
0 1 set (установка в лог. 1)
1 0 clear (сброс в лог. 0)
1 1 toggle (переключение в противоположный уровень)

ACPC: RC Compare Effect on TIOA (влияние события сравнения RC на сигнал TIOA)

ACPC Эффект
0 0 none (ничего не происходит)
0 1 set (установка в лог. 1)
1 0 clear (сброс в лог. 0)
1 1 toggle (переключение в противоположный уровень)

AEEVT: External Event Effect on TIOA (влияние внешнего события на сигнал TIOA)

AEEVT Эффект
0 0 none (ничего не происходит)
0 1 set (установка в лог. 1)
1 0 clear (сброс в лог. 0)
1 1 toggle (переключение в противоположный уровень)

ASWTRG: Software Trigger Effect on TIOA (влияние программного триггера на сигнал TIOA)

ASWTRG Эффект
0 0 none (ничего не происходит)
0 1 set (установка в лог. 1)
1 0 clear (сброс в лог. 0)
1 1 toggle (переключение в противоположный уровень)

BCPB: RB Compare Effect on TIOB (влияние события сравнения RB на сигнал TIOB)

BCPB Эффект
0 0 none (ничего не происходит)
0 1 set (установка в лог. 1)
1 0 clear (сброс в лог. 0)
1 1 toggle (переключение в противоположный уровень)

BCPC: RC Compare Effect on TIOB (влияние события сравнения RC на сигнал TIOB)

BCPC Эффект
0 0 none (ничего не происходит)
0 1 set (установка в лог. 1)
1 0 clear (сброс в лог. 0)
1 1 toggle (переключение в противоположный уровень)

BEEVT: External Event Effect on TIOB (влияние внешнего события на сигнал TIOB)

BEEVT Эффект
0 0 none (ничего не происходит)
0 1 set (установка в лог. 1)
1 0 clear (сброс в лог. 0)
1 1 toggle (переключение в противоположный уровень)

BSWTRG: Software Trigger Effect on TIOB (влияние программного триггера на сигнал TIOB)

BSWTRG Эффект
0 0 none (ничего не происходит)
0 1 set (установка в лог. 1)
1 0 clear (сброс в лог. 0)
1 1 toggle (переключение в противоположный уровень)

Регистр значения счетчика. Тип доступа: только чтение (RO).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
CV

CV: Counter Value (значение счетчика)

CV содержит значение счетчика в реальном времени.

Регистр A таймера/счетчика. Тип доступа: только чтение (RO) если WAVE = 0, или полный (RW) если WAVE = 1.

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
RA

RA: Register A

RA содержит значение регистра A в реальном времени.

Регистр B таймера/счетчика. Тип доступа: только чтение (RO) если WAVE = 0, или полный (RW) если WAVE = 1.

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
RB

RB: Register B

RB содержит значение регистра B в реальном времени.

Регистр C таймера/счетчика. Тип доступа: полный (RW).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
RC

RC: Register C

RC содержит значение регистра C в реальном времени.

Регистр состояния таймера/счетчика. Тип доступа: только чтение (RO).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - MTIOB MTIOA CLKSTA
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
-
- - - - - - - ETRGS LDRBS LDRAS CPCS CPBS CPAS LOVRS COVFS

COVFS: Counter Overflow Status (было ли переполнение счетчика)

0 = с момента последнего чтения Status Register не было переполнения счетчика.
1 = с момента последнего чтения Status Register было переполнение счетчика.

LOVRS: Load Overrun Status (был ли пропуск загрузки)

0 = не было пропуска загрузки с момента последнего чтения Status Register, или WAVE = 1.
1 = RA или RB был как минимум дважды загружен без чтения соответствующего регистра с момента последнего чтения Status, если WAVE = 0.

CPAS: RA Compare Status (состояние сравнения RA)

0 = не было RA Compare с момента последнего чтения Status Register, или WAVE = 0.
1 = произошло RA Compare с момента последнего чтения Status Register, если WAVE = 1.

CPBS: RB Compare Status (состояние сравнения RB)

0 = не было RB Compare с момента последнего чтения Status Register, или WAVE = 0.
1 = произошло RB Compare с момента последнего чтения Status Register, если WAVE = 1.

CPCS: RC Compare Status (состояние сравнения RC)

0 = не было RC Compare с момента последнего чтения Status Register, или WAVE = 0.
1 = произошло RC Compare с момента последнего чтения Status Register, если WAVE = 1.

LDRAS: RA Loading Status (состояние загрузки RA)

0 = не было загрузки RA с момента последнего чтения Status Register, или WAVE = 1.
1 = была загрузка RA с момента последнего чтения Status Register, если WAVE = 0.

LDRBS: RB Loading Status (состояние загрузки RB)

0 = не было загрузки RB с момента последнего чтения Status Register, или WAVE = 1.
1 = была загрузка RB с момента последнего чтения Status Register, если WAVE = 0.

ETRGS: External Trigger Status (состояние внешнего триггера)

0 = не было срабатывания внешнего триггера с момента последнего чтения Status Register.
1 = было срабатывание внешнего триггера с момента последнего чтения Status Register.

CLKSTA: Clock Enabling Status (состояние разрешения тактирования)

0 = такты запрещены.
1 = такты разрешены.

MTIOA: TIOA Mirror (лог. уровень на TIOA)

0 = TIOA в лог. 0. Если WAVE = 0, то это означает, что ножка TIOA (вход) в лог. 0. Если WAVE = 1, то это означает, что на TIOA (выход) выведен уровень лог. 0.
1 = TIOA в лог. 1. Если WAVE = 0, то это означает, что ножка TIOA (вход) в лог. 1. Если WAVE = 1, то это означает, что на TIOA (выход) выведен уровень лог. 1.

MTIOB: TIOB Mirror (лог. уровень на TIOB)

0 = TIOB в лог. 0. Если WAVE = 0, то это означает, что ножка TIOB (вход) в лог. 0. Если WAVE = 1, то это означает, что на TIOB (выход) выведен уровень лог. 0.
1 = TIOB в лог. 1. Если WAVE = 0, то это означает, что ножка TIOB (вход) в лог. 1. Если WAVE = 1, то это означает, что на TIOB (выход) выведен уровень лог. 1.

Регистр разрешения прерывания TC. Тип доступа: только запись (WO).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
-
- - - - - - - ETRGS LDRBS LDRAS CPCS CPBS CPAS LOVRS COVFS

COVFS: Counter Overflow (переполнение счетчика)

0 = никакого эффекта.
1 = разрешает прерывание при переполнении счетчика.

LOVRS: Load Overrun

0 = никакого эффекта.
1 = разрешает прерывание пропуска загрузки Load Overrun.

CPAS: RA Compare

0 = никакого эффекта.
1 = разрешает прерывание RA Compare.

CPBS: RB Compare

0 = никакого эффекта.
1 = разрешает прерывание RB Compare.

CPCS: RC Compare

0 = никакого эффекта.
1 = разрешает прерывание RC Compare.

LDRAS: RA Loading

0 = никакого эффекта.
1 = разрешает прерывание при загрузке RA.

LDRBS: RB Loading

0 = никакого эффекта.
1 = разрешает прерывание при загрузке RB.

ETRGS: External Trigger

0 = никакого эффекта.
1 = разрешает прерывание внешнего триггера.

Регистр запрета прерывания TC. Тип доступа: только запись (WO).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
-
- - - - - - - ETRGS LDRBS LDRAS CPCS CPBS CPAS LOVRS COVFS

COVFS: Counter Overflow

0 = никакого эффекта.
1 = запрещает прерывание при переполнении счетчика.

LOVRS: Load Overrun

0 = никакого эффекта.
1 = запрещает прерывание пропуска загрузки Load Overrun (если WAVE=0).

CPAS: RA Compare

0 = никакого эффекта.
1 = запрещает прерывание RA Compare (если WAVE=1).

CPBS: RB Compare

0 = никакого эффекта.
1 = запрещает прерывание RB Compare (если WAVE=1).

CPCS: RC Compare

0 = никакого эффекта.
1 = запрещает прерывание RC Compare.

LDRAS: RA Loading

0 = никакого эффекта.
1 = запрещает прерывание при загрузке RA (если WAVE=0).

LDRBS: RB Loading

0 = никакого эффекта.
1 = запрещает прерывание при загрузке RB (если WAVE=0).

ETRGS: External Trigger

0 = никакого эффекта.
1 = запрещает прерывание внешнего триггера.

Регистр маски прерывания таймера/счетчика. Тип доступа: только чтение (RO).

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
-
- - - - - - - - - - - - - -
-
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
-
- - - - - - - ETRGS LDRBS LDRAS CPCS CPBS CPAS LOVRS COVFS

COVFS: Counter Overflow

0 = прерывание переполнения счетчика запрещено.
1 = прерывание переполнения счетчика разрешено.

LOVRS: Load Overrun

0 = прерывание пропуска загрузки Load Overrun запрещено.
1 = прерывание пропуска загрузки Load Overrun разрешено.

CPAS: RA Compare

0 = прерывание RA Compare запрещено.
1 = прерывание RA Compare разрешено.

CPBS: RB Compare

0 = прерывание RB Compare запрещено.
1 = прерывание RB Compare разрешено.

CPCS: RC Compare

0 = прерывание RC Compare запрещено.
1 = прерывание RC Compare разрешено.

LDRAS: RA Loading

0 = прерывание загрузки RA запрещено.
1 = прерывание загрузки RA разрешено.

LDRBS: RB Loading

0 = прерывание загрузки RB запрещено.
1 = прерывание загрузки RB разрешено.

ETRGS: External Trigger

0 = прерывание внешнего триггера запрещено.
1 = прерывание внешнего триггера разрешено.

[Ссылки]

1. AT91 ARM Thumb-based Microcontrollers AT91SAM7X512 AT91SAM7X256 AT91SAM7X128 site:microchip.com.
2. Power Management Controller микроконтроллера AT91SAM7X.
3. Advanced Interrupt Controller микроконтроллера AT91SAM7X.
4. AT91SAM7 Parallel Input/Output Controller (PIO).