TIMx capture/compare mode register 1 (TIMx_CCMR1) - Output compare mode

Первый регистр режимов захвата/сравнения таймеров TIM2-TIM5 - режим сравнения выходных данных

Смещение (Address offset): 0x18

Reset value: 0x0000

15141312111098
OC2CE OC2M[2:0] OC2PE OC2FE CC2S[1:0]
rwrwrwrwrwrwrwrw
00000000
76543210
OC1CE OC1M OC1PE OC1FE CC1S
rwrwrwrwrwrwrwrw
00000000


Каждый канал может быть настроен на ввод - режим захвата (capture mode) или на вывод - режим сравнения (compare mode). Направление работы канала определяется настройкой битов CCxS[1:0]. Остальные биты этого регистра выполняют разные функции в режимах ввода или вывода.

Ниже описаны функции битов регистра при настройке канала на вывод - режим сравнения выходных данных (compare mode).

Bit 15
OC2CE
Output compare 2 clear enable
Сброс выходного сигнала сравнения канала 2 (OC2REF) внешним событием на выводе TIMx_ETR (сигналом ETRF)

 0 : нет действий

 1 : OC2REF сбрасывается при высоком уровне сигнала ETRF

Bits 14:12
OC2M[2:0]
Output compare 2 mode
Способ формирования выходного сигнала OC2REF

 000 : Frosen - "застывший". Сравнение счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR2 не оказывает влияние на выходной сигнал OC2REF. Этот режим применяется для формирования и использования временных промежутков в программе без управления внешними устройствами.

 001 : Set channel to active level - устанавливает высокий уровень сигнала OC2REF при совпадении счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR2.

 010 : Set channel to inactive level - устанавливает низкий уровень сигнала OC2REF при совпадении счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR2.

 011 : Toggle - переключает уровень сигнала OC2REF на противоположный при совпадении счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR2.

 100 : Force inactive level - принудительно устанавливает низкий уровень сигнала OC2REF независимо от значений счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR2.

 101 : Force active level - принудительно устанавливает высокий уровень сигнала OC2REF независимо от значений счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR2.

 110 : PWM mode 1 - При счете вверх высокий уровень сигнала OC2REF пока TIMx_CNT < TIMx_CCR2. При достижении равенства OC2REF сбрасывается. При обратном счете низкий уровень сигнала OC2REF пока TIMx_CNT > TIMx_CCR2. При достижении равенства устанавливается высокий уровень сигнала OC2REF.

 111 : PWM mode 2 - При счете вверх низкий уровень сигнала OC2REF пока TIMx_CNT < TIMx_CCR2. При достижении равенства устанавливается высокий уровень сигнала OC2REF. При обратном счете высокий уровень сигнала OC2REF пока TIMx_CNT > TIMx_CCR2. При достижении равенства OC2REF сбрасывается.

В PWM mode уровень OC2REF изменяется только при изменении результата сравнения счетчика TIMx_CNT и регистра TIMx_CCR2, или при переключении из режима Frosen в PWM mode.

Bit 11
OC2PE
Output compare 2 preload enable
Буферизация регистра TIMx_CCR2.

 0 : буферизация отключена. Записанное в регистр TIMx_CCR2 значение начинает использоваться немедленно.

 1 : буферизация включена. Записанное в регистр TIMx_CCR2 значение будет использовано после события обновления (UEV).

Bit 10
OC2FE
Output compare 2 fast enable
Разрешение быстрого сравнения.

Ускорение эффекта на выходе канала от воздействия триггерного события на входе.

 0 : обычное функционирование канала. Уровень сигнала на выходе определяется сравнением значений счетчика TIMx_CNT и регистра сравнения TIMx_CCR2. При работе в подчинённом режиме минимальная задержка в установке сигнала на выходе от активного фронта на входе составляет 5 периодов тактового сигнала.

 1 : активный фронт сигнала на триггерном входе устанавливает на выходе уровень, соответствующий срабатыванию схемы сравнения независимо от фактического результата сравнения. Задержка в установке сигнала на выходе от активного фронта на входе сокращается до 3 тактов. Работает только в режимах PWM1 или PWM2.

Bits 9:8
CC2S[1:0]
Capture/Compare 2 selection
Определяет направление канала и используемый входной сигнал

 00 : канал настроен на выход

 01 : канал настроен на вход, входной сигнал TI2

 10 : канал настроен на вход, входной сигнал TI1

 11 : канал настроен на вход, входной сигнал TRC. Этот режим работает если выбран вход внутреннего триггера (биты TS[2:0] регистра TIMx_SMCR)

Биты CC2S[1:0] доступны для записи только при выключенном канале (CC2E=0 в TIMx_CCER)

Bit 7
OC1CE
Output compare 1 clear enable
Сброс выходного сигнала сравнения канала 1 (OC1REF) внешним событием на выводе TIMx_ETR (сигналом ETRF)

 0 : нет действий

 1 : OC1REF сбрасывается при высоком уровне сигнала ETRF

Bits 6:4
OC1M[2:0]
Output compare 1 mode
Способ формирования выходного сигнала OC1REF

 000 : Frosen - "застывший". Сравнение счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR1 не оказывает влияние на выходной сигнал OC1REF. Этот режим применяется для формирования и использования временных промежутков в программе без управления внешними устройствами.

 001 : Set channel to active level - устанавливает высокий уровень сигнала OC1REF при совпадении счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR1.

 010 : Set channel to inactive level - устанавливает низкий уровень сигнала OC1REF при совпадении счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR1.

 011 : Toggle - переключает уровень сигнала OC1REF на противоположный при совпадении счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR1.

 100 : Force inactive level - принудительно устанавливает низкий уровень сигнала OC1REF независимо от значений счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR1.

 101 : Force active level - принудительно устанавливает высокий уровень сигнала OC1REF независимо от значений счетчика TIMx_CNT и регистра захвата/сравнения TIMx_CCR1.

 110 : PWM mode 1 - При счете вверх высокий уровень сигнала OC1REF пока TIMx_CNT < TIMx_CCR1. При достижении равенства OC1REF сбрасывается. При обратном счете низкий уровень сигнала OC1REF пока TIMx_CNT > TIMx_CCR1. При достижении равенства устанавливается высокий уровень сигнала OC1REF.

 111 : PWM mode 2 - При счете вверх низкий уровень сигнала OC1REF пока TIMx_CNT < TIMx_CCR1. При достижении равенства устанавливается высокий уровень сигнала OC1REF. При обратном счете высокий уровень сигнала OC1REF пока TIMx_CNT > TIMx_CCR1. При достижении равенства OC1REF сбрасывается.

В PWM mode уровень OC1REF изменяется только при изменении результата сравнения счетчика TIMx_CNT и регистра TIMx_CCR1, или при переключении из режима Frosen в PWM mode.

Bit 3
OC1PE
Output compare 1 preload enable
Буферизация регистра TIMx_CCR1.

 0 : буферизация отключена. Записанное в регистр TIMx_CCR1 значение начинает использоваться немедленно.

 1 : буферизация включена. Записанное в регистр TIMx_CCR1 значение будет использовано после события обновления (UEV).

Bit 2
OC1FE
Output compare 1 fast enable
Разрешение быстрого сравнения.

Ускорение эффекта на выходе канала от воздействия триггерного события на входе.

 0 : обычное функционирование канала. Уровень сигнала на выходе определяется сравнением значений счетчика TIMx_CNT и регистра сравнения TIMx_CCR1. При работе в подчинённом режиме минимальная задержка в установке сигнала на выходе от активного фронта на входе составляет 5 периодов тактового сигнала.

 1 : активный фронт сигнала на триггерном входе устанавливает на выходе уровень, соответствующий срабатыванию схемы сравнения независимо от фактического результата сравнения. Задержка в установке сигнала на выходе от активного фронта на входе сокращается до 3 тактов. Работает только в режимах PWM1 или PWM2.

Bits 1:0
CC1S[1:0]
Capture/Compare 1 selection
Определяет направление канала и используемый входной сигнал

 00 : канал настроен на выход

 01 : канал настроен на вход, входной сигнал TI2

 10 : канал настроен на вход, входной сигнал TI1

 11 : канал настроен на вход, входной сигнал TRC. Этот режим работает если выбран вход внутреннего триггера (биты TS[2:0] регистра TIMx_SMCR)

Биты CC1S[1:0] доступны для записи только при выключенном канале (CC1E=0 в TIMx_CCER)




/******************  Bit definition for TIM_CCMR1 register  *******************/
#define  TIM_CCMR1_CC1S                      ((uint16_t)0x0003)            /* CC1S[1:0] bits (Capture/Compare 1 Selection) */
#define  TIM_CCMR1_CC1S_0                    ((uint16_t)0x0001)            /* Bit 0 */
#define  TIM_CCMR1_CC1S_1                    ((uint16_t)0x0002)            /* Bit 1 */

#define  TIM_CCMR1_OC1FE                     ((uint16_t)0x0004)            /* Output Compare 1 Fast enable */
#define  TIM_CCMR1_OC1PE                     ((uint16_t)0x0008)            /* Output Compare 1 Preload enable */

#define  TIM_CCMR1_OC1M                      ((uint16_t)0x0070)            /* OC1M[2:0] bits (Output Compare 1 Mode) */
#define  TIM_CCMR1_OC1M_0                    ((uint16_t)0x0010)            /* Bit 0 */
#define  TIM_CCMR1_OC1M_1                    ((uint16_t)0x0020)            /* Bit 1 */
#define  TIM_CCMR1_OC1M_2                    ((uint16_t)0x0040)            /* Bit 2 */

#define  TIM_CCMR1_OC1CE                     ((uint16_t)0x0080)            /* Output Compare 1Clear Enable */

#define  TIM_CCMR1_CC2S                      ((uint16_t)0x0300)            /* CC2S[1:0] bits (Capture/Compare 2 Selection) */
#define  TIM_CCMR1_CC2S_0                    ((uint16_t)0x0100)            /* Bit 0 */
#define  TIM_CCMR1_CC2S_1                    ((uint16_t)0x0200)            /* Bit 1 */

#define  TIM_CCMR1_OC2FE                     ((uint16_t)0x0400)            /* Output Compare 2 Fast enable */
#define  TIM_CCMR1_OC2PE                     ((uint16_t)0x0800)            /* Output Compare 2 Preload enable */

#define  TIM_CCMR1_OC2M                      ((uint16_t)0x7000)            /* OC2M[2:0] bits (Output Compare 2 Mode) */
#define  TIM_CCMR1_OC2M_0                    ((uint16_t)0x1000)            /* Bit 0 */
#define  TIM_CCMR1_OC2M_1                    ((uint16_t)0x2000)            /* Bit 1 */
#define  TIM_CCMR1_OC2M_2                    ((uint16_t)0x4000)            /* Bit 2 */

#define  TIM_CCMR1_OC2CE                     ((uint16_t)0x8000)            /* Output Compare 2 Clear Enable */