TIMx slave mode control register (TIMx_SMCR)

Регистр управления таймерами TIM2 - TIM5 в подчинённом (slave) режиме

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

Reset value: 0x0000

15141312111098
ETP ECE ETPS[0:1] ETF[3:0]
rwrwrwrwrwrwrwrw
00000000
76543210
MSM TS[2:0] Reserved SMS[2:0]
rwrwrwrw---rwrwrw
00000000


Bit 15
ETP
External trigger polarity
Полярность внешнего триггера. Определяет, используется прямой или инверсный сигнал для триггерных операций.

 0 - ETR не инвертирован, активен на высоком уровне или нарастающим фронтом

 1 - ETR инвертирован, активен на низком уровне или убывающим фронтом

Bit 14
ECE
External clock enable
Разрешает внешнее тактирование в режиме 2.

 0 - режим внешнего тактирование в режиме 2 отключен.

 1 - режим внешнего тактирование в режиме 2 включен. Счетчик синхронизируется с любым активным фронтом сигнала ETRF.

- Установка бита ECE аналогична выбору режима внешнего тактирования в режиме 1 с TRGI подключенным к ETRF (SMS=111 и TS=111).

- Можно одновременно использовать внешнее тактирование в режиме 2 со следующими подчиненными режимами: режимом сброса (reset mode), стробирующим режимом (gated mode) и в режиме триггера (trigger mode). В этом случае TRGI не должен быть подключен к ETRF (биты TS не должен быть равны 111).

- Если одновременно включено внешнее тактирование в режиме 2 и в режиме 1, то вход внешнего тактового сигнала равен ETRF

Bits 13:12
ETPS[1:0]
External trigger prescaler
Предделитель ETRP.

Частота сигнала внешнего триггера должна быть не более 1/4 частоты CK_INT. Для высокочастотных внешних тактовых сигналов надо включить предделитель частоты ETRP:

 00 - предделитель отключен

 01 - Частота ETRP делится на 2

 10 - Частота ETRP делится на 4

 11 - Частота ETRP делится на 8

Bits 11:8
ETF[3:0]
External trigger filter
Определяет частоту выборки сигнала ETRP и длину цифрового фильтра, применяемого к ETRP. Цифровой фильтр состоит из счетчика событий, в котором для подтверждения перехода на выходе требуется N последовательных событий:

 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

Bit 7
MSM
Master/Slave mode
.Синхронизация нескольких таймеров в подчинённом режиме на одно внешнее событие.

 0 : нет синхронизации

 1 : реакция на событие на триггерном входе (TRGI) задерживается для синхронизации текущего таймера и его подчинённых устройств (через TRGO).

Bits 6:4
TS[2:0]
Trigger selection
Вход триггера, который используется для синхронизации счетчика:

 000 : Internal Trigger 0 (ITR0)

 001 : Internal Trigger 1 (ITR1)

 010 : Internal Trigger 2 (ITR2)

 011 : Internal Trigger 3 (ITR3)

 100 : TI1 Edge Detector (TI1F_ED)

 101 : Filtered Timer Input 1 (TI1FP1)

 110 : Filtered Timer Input 2 (TI2FP2)

 111 : External Trigger input (ETRF)

Эти биты следует изменять когда они не используются (например: SMS=000), чтобы избежать неправильного определения границ при переходе

Slave TIMITR0 (TS = 000)ITR1 (TS = 001)ITR2 (TS = 010)ITR3 (TS = 011)
TIM2TIM1TIM8TIM3TIM4
TIM3TIM1TIM2TIM5TIM4
TIM4TIM1TIM2TIM3TIM8
TIM5TIM2TIM3TIM4TIM8
Bit 3
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bits 2:0
SMS[2:0]
Slave mode selection
Выбор подчинённого режима.

 000 : Подчинённый режим отключен.

 001 : Режим энкодера 1 (Encoder mode 1). Счет вверх/вниз по фронту TI2FP1 в зависимости от уровня на TI1FP2.

 010 : Режим энкодера 2 (Encoder mode 2). Счет вверх/вниз по фронту TI2FP2 в зависимости от уровня на TI1FP1.

 011 : Режим энкодера 3 (Encoder mode 3). Счет вверх/вниз по фронту и TI2FP1 и TI2FP2 в зависимости от уровня на другом входе.

 100 : Режим сброса (Reset mode). Нарастающий фронт на выбранном триггерном входе TRGI повторно инициализирует счетчик и обновляет регистры.

 101 : Стробирующий режим (gated mode). Таймер счетчика работает при высоком значении входного сигнала триггера (TRGI). Счетчик останавливается, но не сбрасывается, как только значение на входе TRGI становится низким. Можно управлять как запуском, так и остановкой счетчика.

 110 : Режим триггера (trigger mode). Счетчик запускается на нарастающем фронте сигнала TRGI. Контролируется только запуск счетчика, но не его останов или сброс.

 111 : Режим внешней синхронизации (External Clock mode 1). Нарастающий фронт выбранного входа триггера TRGI тактирует счетчик.




/*******************  Bit definition for TIM_SMCR register  *******************/
#define  TIM_SMCR_SMS                   ((uint16_t)0x0007)            /* SMS[2:0] bits (Slave mode selection) */
#define  TIM_SMCR_SMS_0                 ((uint16_t)0x0001)            /* Bit 0 */
#define  TIM_SMCR_SMS_1                 ((uint16_t)0x0002)            /* Bit 1 */
#define  TIM_SMCR_SMS_2                 ((uint16_t)0x0004)            /* Bit 2 */

#define  TIM_SMCR_TS                    ((uint16_t)0x0070)            /* TS[2:0] bits (Trigger selection) */
#define  TIM_SMCR_TS_0                  ((uint16_t)0x0010)            /* Bit 0 */
#define  TIM_SMCR_TS_1                  ((uint16_t)0x0020)            /* Bit 1 */
#define  TIM_SMCR_TS_2                  ((uint16_t)0x0040)            /* Bit 2 */

#define  TIM_SMCR_MSM                   ((uint16_t)0x0080)            /* Master/slave mode */

#define  TIM_SMCR_ETF                   ((uint16_t)0x0F00)            /* ETF[3:0] bits (External trigger filter) */
#define  TIM_SMCR_ETF_0                 ((uint16_t)0x0100)            /* Bit 0 */
#define  TIM_SMCR_ETF_1                 ((uint16_t)0x0200)            /* Bit 1 */
#define  TIM_SMCR_ETF_2                 ((uint16_t)0x0400)            /* Bit 2 */
#define  TIM_SMCR_ETF_3                 ((uint16_t)0x0800)            /* Bit 3 */

#define  TIM_SMCR_ETPS                  ((uint16_t)0x3000)            /* ETPS[1:0] bits (External trigger prescaler) */
#define  TIM_SMCR_ETPS_0                ((uint16_t)0x1000)            /* Bit 0 */
#define  TIM_SMCR_ETPS_1                ((uint16_t)0x2000)            /* Bit 1 */

#define  TIM_SMCR_ECE                   ((uint16_t)0x4000)            /* External clock enable */
#define  TIM_SMCR_ETP                   ((uint16_t)0x8000)            /* External trigger polarity */