TIMx capture/compare mode register 1 (TIMx_CCMR1) - Input capture mode
Первый регистр режимов захвата/сравнения таймеров TIM2-TIM5 - режим захвата входных данных
Смещение (Address offset): 0x18
Reset value: 0x0000
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
IC2F[3:0] | IC2PSC[1:0] | 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 |
IC1F[3:0] | IC1PSC[1:0] | CC1S | |||||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Каждый канал может быть настроен на ввод - режим захвата (capture mode) или на вывод - режим сравнения (compare mode). Направление работы канала определяется настройкой битов CCxS[1:0]. Остальные биты этого регистра выполняют разные функции в режимах ввода или вывода.
Ниже описаны функции битов регистра при настройке канала на ввод - режим захвата входных данных (capture mode).
0000 : fsampling = fdts; фильтра нет
0001 : fsampling = fck_int; N = 2
0010 : fsampling = fck_int; N = 4
0011 : fsampling = fck_int; N = 8
0100 : fsampling = fdts/2; N = 6
0101 : fsampling = fdts/2; N = 8
0110 : fsampling = fdts/4; N = 6
0111 : fsampling = fdts/4; N = 8
1000 : fsampling = fdts/8; N = 6
1001 : fsampling = fdts/8; N = 8
1010 : fsampling = fdts/16; N = 5
1011 : fsampling = fdts/16; N = 6
1100 : fsampling = fdts/16; N = 8
1101 : fsampling = fdts/32; N = 5
1110 : fsampling = fdts/32; N = 6
1111 : fsampling = fdts/32; N = 8
Определяет коэффициент деления сигнала IC2 на входе регистра захвата/сравнения TIMx_CCR2. Коэффициент деления сбрасывается при отключении захвата входного сигнала:
00 : предделитель отключен. захват выполняется на каждом активном фронте (событии) входного сигнала.
01 : захват выполняется за 2 входных события
10 : захват выполняется за 4 входных события
11 : захват выполняется за 8 входных событий
00 : канал настроен на выход
01 : канал настроен на вход, входной сигнал TI2
10 : канал настроен на вход, входной сигнал TI1
11 : канал настроен на вход, входной сигнал TRC. Этот режим работает если выбран вход внутреннего триггера (биты TS[2:0] регистра TIMx_SMCR)
Биты CC2S[1:0] доступны для записи только при выключенном канале (CC2E=0 в TIMx_CCER)
0000 : fsampling = fdts; фильтра нет
0001 : fsampling = fck_int; N = 2
0010 : fsampling = fck_int; N = 4
0011 : fsampling = fck_int; N = 8
0100 : fsampling = fdts/2; N = 6
0101 : fsampling = fdts/2; N = 8
0110 : fsampling = fdts/4; N = 6
0111 : fsampling = fdts/4; N = 8
1000 : fsampling = fdts/8; N = 6
1001 : fsampling = fdts/8; N = 8
1010 : fsampling = fdts/16; N = 5
1011 : fsampling = fdts/16; N = 6
1100 : fsampling = fdts/16; N = 8
1101 : fsampling = fdts/32; N = 5
1110 : fsampling = fdts/32; N = 6
1111 : fsampling = fdts/32; N = 8
Определяет коэффициент деления сигнала IC1 на входе регистра захвата/сравнения TIMx_CCR1. Коэффициент деления сбрасывается при отключении захвата входного сигнала:
00 : предделитель отключен. захват выполняется на каждом активном фронте (событии) входного сигнала.
01 : захват выполняется за 2 входных события
10 : захват выполняется за 4 входных события
11 : захват выполняется за 8 входных событий
00 : канал настроен на выход
01 : канал настроен на вход, входной сигнал TI1
10 : канал настроен на вход, входной сигнал TI2
11 : канал настроен на вход, входной сигнал TRC. Этот режим работает если выбран вход внутреннего триггера (биты TS[2:0] регистра TIMx_SMCR)
Биты CC1S[1:0] доступны для записи только при выключенном канале (CC1E=0 в TIMx_CCER)
/****************** Bit definition for TIM_CCMR1 register *******************/
#define TIM_CCMR1_IC1PSC ((uint16_t)0x000C) /* IC1PSC[1:0] bits (Input Capture 1 Prescaler) */
#define TIM_CCMR1_IC1PSC_0 ((uint16_t)0x0004) /* Bit 0 */
#define TIM_CCMR1_IC1PSC_1 ((uint16_t)0x0008) /* Bit 1 */
#define TIM_CCMR1_IC1F ((uint16_t)0x00F0) /* IC1F[3:0] bits (Input Capture 1 Filter) */
#define TIM_CCMR1_IC1F_0 ((uint16_t)0x0010) /* Bit 0 */
#define TIM_CCMR1_IC1F_1 ((uint16_t)0x0020) /* Bit 1 */
#define TIM_CCMR1_IC1F_2 ((uint16_t)0x0040) /* Bit 2 */
#define TIM_CCMR1_IC1F_3 ((uint16_t)0x0080) /* Bit 3 */
#define TIM_CCMR1_IC2PSC ((uint16_t)0x0C00) /* IC2PSC[1:0] bits (Input Capture 2 Prescaler) */
#define TIM_CCMR1_IC2PSC_0 ((uint16_t)0x0400) /* Bit 0 */
#define TIM_CCMR1_IC2PSC_1 ((uint16_t)0x0800) /* Bit 1 */
#define TIM_CCMR1_IC2F ((uint16_t)0xF000) /* IC2F[3:0] bits (Input Capture 2 Filter) */
#define TIM_CCMR1_IC2F_0 ((uint16_t)0x1000) /* Bit 0 */
#define TIM_CCMR1_IC2F_1 ((uint16_t)0x2000) /* Bit 1 */
#define TIM_CCMR1_IC2F_2 ((uint16_t)0x4000) /* Bit 2 */
#define TIM_CCMR1_IC2F_3 ((uint16_t)0x8000) /* Bit 3 */