LPC

Таймеры в микроконтроллерах LPC11xx

Таймеры в микроконтроллерах LPC11xx разделены на две группы, по два 16- и 32-разрядных. Структура всех вариантов практически аналогична и отличаются они в основном разрядностью счетных регистров.  Модули таймеров позволяют реализовать функции непосредственно таймера, счетчика внешних событий, а также функции захвата и ШИМ.

Структурная схема таймера в LPC1114
Структурная схема таймера в LPC1114

В режиме счетчика LPC1114 допускает подключение к каждому таймеру только одного внешнего входа. В других, старших моделях микроконтроллеров, количество входных линий таймера увеличено. Для формирования необходимых сигналов счета, в структуре устройства, предусмотрено 4 регистра сравнения. Фактически это означает, что каждый таймер способен одновременно формировать 4 временных интервала или 4 сигнала с различной частотой без перенастройки. Для формирования внешних сигналов, к схеме управления таймером могут быть подключены выходные линии, количество которых отличается для каждого таймера. Максимальное количество выходных линий - 4, реализовано в 32 разрядных моделях. 


Регистры 16-разрядных таймеров 0 и 1.

Регистр прерываний TMR16BxIR.

Адреса регистров: TMR16B0IR - 0x4000C000, TMR16B1IR - 0x40010000

Данный регистр предназначен для индикации и сброса прерываний по событиям счета. Каждый тип прерывания устанавливает в 1 соответствующий бит. Для сброса в этот же бит необходимо записать 1. Запись 0 состояние не меняет.

Регистр Регистр прерываний TMR16BxIR
Бит31302928272625242322212019181716
Поле Не используются
Бит1514131211109876543210
Поле Не используются CR0I MR3I MR2I MR1I MR0I

MR0I – прерывание по совпадению с регистром сравнения 0

MR1I – прерывание по совпадению с регистром сравнения 1

MR2I – прерывание по совпадению с регистром сравнения 2

MR3I – прерывание по совпадению с регистром сравнения 3

CR0I – прерывание по захвату сигнала CAP0

 

Регистр управления TMR16BxTCR

Адреса регистров: TMR16B0TCR - 0x4000C004, TMR16B1TCR - 0x40010004 

РЕГИСТР Регистр управления TMR16BxTCR
БИТ31302928272625242322212019181716
ПОЛЕ Не используются
БИТ1514131211109876543210
ПОЛЕ Не используются 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
БИТ31302928272625242322212019181716
ПОЛЕ Не используются
БИТ1514131211109876543210
ПОЛЕ Не используется 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
БИТ31302928272625242322212019181716
ПОЛЕ Не используются
БИТ1514131211109876543210
ПОЛЕ Не используются 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
БИТ31302928272625242322212019181716
ПОЛЕ Не используются
БИТ1514131211109876543210
ПОЛЕ Не используются 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
БИТ31302928272625242322212019181716
ПОЛЕ Не используются
БИТ1514131211109876543210
ПОЛЕ Не используются CIS CTM

CTM – режим работы. Доступны следующие варианты:

00 – режим таймера

01 – режим счетчика по переднему фронту

10 – режим работы счетчика по заднему фронту

11 – режим счета по обоим фронтам

CIS – выбор входа внешнего сигнала.

Для микроконтроллеров LPC11xx значение данного поля всегда 00, что соответствует подключенному входу CAP0.

 

Еще о программировании микроконтроллеров LPC11xx

Функционирование и программирование таймеров в LPC11xx:

Работа с таймерами в LPC1114.

Работа с потами ввода вывода:

Работа с портами ввода/вывода LPC1114. Регистры.

Работа с портами ввода/вывода LPC1114. Пример.

You have no rights to post comments