LPC
Таймеры в микроконтроллерах LPC11xx
Таймеры в микроконтроллерах LPC11xx разделены на две группы, по два 16- и 32-разрядных. Структура всех вариантов практически аналогична и отличаются они в основном разрядностью счетных регистров. Модули таймеров позволяют реализовать функции непосредственно таймера, счетчика внешних событий, а также функции захвата и ШИМ.
Структурная схема таймера в LPC1114 |
В режиме счетчика LPC1114 допускает подключение к каждому таймеру только одного внешнего входа. В других, старших моделях микроконтроллеров, количество входных линий таймера увеличено. Для формирования необходимых сигналов счета, в структуре устройства, предусмотрено 4 регистра сравнения. Фактически это означает, что каждый таймер способен одновременно формировать 4 временных интервала или 4 сигнала с различной частотой без перенастройки. Для формирования внешних сигналов, к схеме управления таймером могут быть подключены выходные линии, количество которых отличается для каждого таймера. Максимальное количество выходных линий - 4, реализовано в 32 разрядных моделях.
Регистры 16-разрядных таймеров 0 и 1.
Регистр прерываний TMR16BxIR.
Адреса регистров: TMR16B0IR - 0x4000C000, TMR16B1IR - 0x40010000
Данный регистр предназначен для индикации и сброса прерываний по событиям счета. Каждый тип прерывания устанавливает в 1 соответствующий бит. Для сброса в этот же бит необходимо записать 1. Запись 0 состояние не меняет.
Регистр | Регистр прерываний TMR16BxIR | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Бит | 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 |
Поле | Не используются | CR0I | MR3I | MR2I | MR1I | MR0I |
MR0I – прерывание по совпадению с регистром сравнения 0
MR1I – прерывание по совпадению с регистром сравнения 1
MR2I – прерывание по совпадению с регистром сравнения 2
MR3I – прерывание по совпадению с регистром сравнения 3
CR0I – прерывание по захвату сигнала CAP0
Регистр управления TMR16BxTCR
Адреса регистров: TMR16B0TCR - 0x4000C004, TMR16B1TCR - 0x40010004
РЕГИСТР | Регистр управления TMR16BxTCR | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
БИТ | 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 |
ПОЛЕ | Не используются | CRst | CEn |
CEn – Разрешение работы. При установке в 1, запускает работу счетчика в одном из выбранных режимов. Значение 0 соответственно, приводит к останову счета.
CRst – сброс таймера. При установке в 1, производит одновременный сброс счетчика и предделителя.
Регистр счетчика TMR16BxTC
Адреса регистров: TMR16B0TC - 0x4000C008, TMR16B1TC - 0x40010008
32 разрядный регистр, младшие 16 бит которого используются в качестве инкрементного счетчика событий, при работе таймера. Старшие 16 бит не используются. После достижения максимального значения, регистр обнуляется. Формирование прерывания при этом не происходит.
Регистр установки предделителя TMR16BxPR
Адреса регистров: TMR16B0PR- 0x4000C00C, TMR16B1PR - 0x4001000C
32 разрядный регистр, младшие 16 бит которого используются для задания значения предделителя тактовой частоты таймера. Старшие 16 бит не используются.
Регистр счетчика предделителя TMR16BxPC
Адреса регистров: TMR16B0PC - 0x4001C010, TMR16B1PC 0x40010010
Младшие 16 бит данного регистра используются в качестве инкрементного счетчика предделителя таймера. Каждый тактовый импульс системной шины увеличивает значение регистра 1. После достижения счетчиком значения, заданного в TMR16BxPR, происходит сброс счетчика и инкремент регистра TMR16BxTC
Регистр управления сравнением TMR16BxMCR
Адреса регистров: TMR16B0MCR - 0x4000C014, TMR16B1MCR - 0x40010014
Данный регистр выполняет настройку реакции таймера на совпадение значения счетчика (регистр TMR16BxTC) и одного из четырех регистров сравнения. 1 в соответствующем бите активирует событие, 0 – запрещает.
РЕГИСТР | Регистр управления сравнением TMR16BxMCR | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
БИТ | 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 |
ПОЛЕ | Не используется | MR3S | MR3R | MR3I | MR2S | MR2R | MR2I | MR1S | MR1R | MR1I | MR0S | MR0R | MR0I |
MRnI – прерывание. При достижении счетчиком значения, равного значению в регистре TMR16BxMRn, генерируется прерывание.
MRnR – сброс счетчика. После достижения счетчиком значения, равного TMR16BxMRn, производится сброс счетчика.
MRnS – останов счета. При достижении счетчиком значения, равного TMR16BxMRn, останавливает счет. В регистр управления TCR заносится 0.
Регистры сравнения TMR16BxMR0/1/2/3
Адреса регистров:
TMR16B0MR0 - 0x4000C018, TMR16B0MR1 - 0x4000C020, TMR16B0MR2 - 0x4000C022, TMR16B0MR3 - 0x4000C024
TMR16B1MR0 - 0x40010018, TMR16B1MR1 - 0x40010020, TMR16B1MR2 - 0x40010022, TMR16B1MR3 - 0x40010024
В четыре регистра сравнения для каждого таймера могут быть записаны значения, по которым происходит формирование событий, установленных в регистре управления сравнением TMR16BxMCR. В каждом регистре используются только младшие 16 бит.
Регистр внешних операция для режима сравнения TMR16BxEMR
Адреса регистров: TMR16B0EMR - 0x4000C03C, TMR16B1EMR - 0x4001003C
РЕГИСТР | Регистр внешних операций TMR16BxEMR | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
БИТ | 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 |
ПОЛЕ | Не используются | EMC3 | EMC2 | EMC1 | EMC0 | EM3 | EM2 | EM1 | EM0 |
Данный регистр позволяет отследить изменение состояния внешних выходов, при выполнении операции сравнения, а также настроить тип их работы. Выходы должны быть сконфигурированы для работы с таймером в регистрах IOCON.
EM0 - Бит отражает состояние выхода CT16Bx_MAT0. Данный выход изменяет свое состояние в случае события по каналу 0 сравнения. Тип реакции настраивается полем EMC0, данного регистра.
EM1 - Отражает состояние выхода CT16Bx_MAT1, изменяющего свое состояние по событию в канале сравнения 1.
EM2 - Данный бит отражает состояние события сравнения по каналу 2. Для таймера 0, также может быть использован выход CT16B0_MAT2.
EM3 - Отражает состояние события сравнения по каналу 3. Выходные линии к данному каналу у 16-разрядных счетчиков не подключаются.
EMC0 Настройка типа срабатывания выхода, в случае события по каналу 0.
EMC1 Настройка типа срабатывания выхода, в случае события по каналу 1.
EMC2 Настройка типа срабатывания выхода, в случае события по каналу 2.
EMC3 Настройка типа срабатывания выхода, в случае события по каналу 3.
Возможные значения полей EMC
00 - Выход не изменяется
01 - Выход сбрасывается
10 - Выход устанавливается в высокое состояние
11 - Выход переключается в противоположное состояние
Регистр управления захватом TMR16BxCCR
Адреса регистров: TMR16B0CCR - 0x4000C028, TMR16B1CCR - 0x40010028
РЕГИСТР | Регистр управления захватом TMR16BxCCR | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
БИТ | 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 |
ПОЛЕ | Не используются | CAP0I | CAP0FE | CAP0RE |
Регистр настраивает правила записи значения счетчика в регистр захвата, относительно изменения сигнала на входе CT16Bx_CAP0. Вход CT16Bx_CAP0 должен быть настрое на работу в качестве входа таймера в регистре IOCON. 1 – в бите разрешает событие, 0 – запрещает.
CAP0RE – положительный фронт на входе CT16Bx_CAP0 приводит к загрузке значения счетчика в регистр захвата CR0.
CAP0FE – отрицательный фронт на входе CT16Bx_CAP0 приводит к загрузке значения счетчика в регистр захвата CR0.
CAP0I – 1 в данном бите приводит к формированию прерывания по событию на входе CT16Bx_CAP0
Регистр захвата CT16BxCR0
Адреса регистров: TMR16B0CR0 - 0x4000C02C, TMR16B1CR0 - 0x4001002C
Регистр, доступный только для чтения. Содержит загруженное значение счетчика по одному из событий на входе CT16Bx_CAP0.
Регистр режима работы таймера TMR16BxCTCR
Адреса регистров: TMR16B0CTCR - 0x4000C070, TMR16B1CTCR - 0x40010070
Регистр выполняет переключение режима работы модуля таймера.
РЕГИСТР | Регистр режима работы таймера TMR16BxCTCR | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
БИТ | 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 |
ПОЛЕ | Не используются | CIS | CTM |
CTM – режим работы. Доступны следующие варианты:
00 – режим таймера
01 – режим счетчика по переднему фронту
10 – режим работы счетчика по заднему фронту
11 – режим счета по обоим фронтам
CIS – выбор входа внешнего сигнала.
Для микроконтроллеров LPC11xx значение данного поля всегда 00, что соответствует подключенному входу CAP0.
Еще о программировании микроконтроллеров LPC11xx
Функционирование и программирование таймеров в LPC11xx:
Работа с потами ввода вывода: