TIMx capture/compare mode register 1 (TIMx_CCMR1) - Output compare mode
Первый регистр режимов захвата/сравнения таймеров TIM2-TIM5 - режим сравнения выходных данных
Смещение (Address offset): 0x18
Reset value: 0x0000
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
OC2CE | OC2M[2:0] | OC2PE | OC2FE | CC2S[1:0] | |||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
OC1CE | OC1M | OC1PE | OC1FE | CC1S | |||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Каждый канал может быть настроен на ввод - режим захвата (capture mode) или на вывод - режим сравнения (compare mode). Направление работы канала определяется настройкой битов CCxS[1:0]. Остальные биты этого регистра выполняют разные функции в режимах ввода или вывода.
Ниже описаны функции битов регистра при настройке канала на вывод - режим сравнения выходных данных (compare mode).
0 : нет действий
1 : OC2REF сбрасывается при высоком уровне сигнала ETRF
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.
0 : буферизация отключена. Записанное в регистр TIMx_CCR2 значение начинает использоваться немедленно.
1 : буферизация включена. Записанное в регистр TIMx_CCR2 значение будет использовано после события обновления (UEV).
Ускорение эффекта на выходе канала от воздействия триггерного события на входе.
0 : обычное функционирование канала. Уровень сигнала на выходе определяется сравнением значений счетчика TIMx_CNT и регистра сравнения TIMx_CCR2. При работе в подчинённом режиме минимальная задержка в установке сигнала на выходе от активного фронта на входе составляет 5 периодов тактового сигнала.
1 : активный фронт сигнала на триггерном входе устанавливает на выходе уровень, соответствующий срабатыванию схемы сравнения независимо от фактического результата сравнения. Задержка в установке сигнала на выходе от активного фронта на входе сокращается до 3 тактов. Работает только в режимах PWM1 или PWM2.
00 : канал настроен на выход
01 : канал настроен на вход, входной сигнал TI2
10 : канал настроен на вход, входной сигнал TI1
11 : канал настроен на вход, входной сигнал TRC. Этот режим работает если выбран вход внутреннего триггера (биты TS[2:0] регистра TIMx_SMCR)
Биты CC2S[1:0] доступны для записи только при выключенном канале (CC2E=0 в TIMx_CCER)
0 : нет действий
1 : OC1REF сбрасывается при высоком уровне сигнала ETRF
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.
0 : буферизация отключена. Записанное в регистр TIMx_CCR1 значение начинает использоваться немедленно.
1 : буферизация включена. Записанное в регистр TIMx_CCR1 значение будет использовано после события обновления (UEV).
Ускорение эффекта на выходе канала от воздействия триггерного события на входе.
0 : обычное функционирование канала. Уровень сигнала на выходе определяется сравнением значений счетчика TIMx_CNT и регистра сравнения TIMx_CCR1. При работе в подчинённом режиме минимальная задержка в установке сигнала на выходе от активного фронта на входе составляет 5 периодов тактового сигнала.
1 : активный фронт сигнала на триггерном входе устанавливает на выходе уровень, соответствующий срабатыванию схемы сравнения независимо от фактического результата сравнения. Задержка в установке сигнала на выходе от активного фронта на входе сокращается до 3 тактов. Работает только в режимах PWM1 или PWM2.
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 */