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 */