Перейти к содержанию
    

Настройка таймера на счет внешних событий.

Я хочу считать на таймере внешние события (пульсы).

LL_TIM_SetClockSource(TIMx, LL_TIM_CLOCKSOURCE_EXT_MODE1);
LL_TIM_SetTriggerInput(TIMx, LL_TIM_TS_TI1FP1);
LL_TIM_IC_SetFilter(TIMx, LL_TIM_CHANNEL_CH1, LL_TIM_IC_FILTER_FDIV1_N4);

но у меня определены только первые два пина TIMx_CH1 (TI1FP1) и TIMx_CH2 (TI2FP2)

#define LL_TIM_TS_ITR0                 0x00000000U                                          /*!< Internal Trigger 0 (ITR0) is used as trigger input */
#define LL_TIM_TS_ITR1                 TIM_SMCR_TS_0                                        /*!< Internal Trigger 1 (ITR1) is used as trigger input */
#define LL_TIM_TS_ITR2                 TIM_SMCR_TS_1                                        /*!< Internal Trigger 2 (ITR2) is used as trigger input */
#define LL_TIM_TS_ITR3                 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)                      /*!< Internal Trigger 3 (ITR3) is used as trigger input */
#define LL_TIM_TS_TI1F_ED              TIM_SMCR_TS_2                                        /*!< TI1 Edge Detector (TI1F_ED) is used as trigger input */
  
#define LL_TIM_TS_TI1FP1               (TIM_SMCR_TS_2 | TIM_SMCR_TS_0)                      /*!< Filtered Timer Input 1 (TI1FP1) is used as trigger input */
#define LL_TIM_TS_TI2FP2               (TIM_SMCR_TS_2 | TIM_SMCR_TS_1)                      /*!< Filtered Timer Input 2 (TI12P2) is used as trigger input */
  
//где   Filtered Timer Input 3 и Filtered Timer Input 4 ???
  
#define LL_TIM_TS_ETRF                 (TIM_SMCR_TS_2 | TIM_SMCR_TS_1 | TIM_SMCR_TS_0)      /*!< Filtered external Trigger (ETRF) is used as trigger input */

хотя по диаграмме их 4

timer.thumb.png.cdc07a8eb9660e05d68d4205cadb551d.png

получается TI3FP3 и TI4FP4 я не могу использовать аппаратно?

 

да. похоже на то. в документации упоминаются только первые два входа. очевидно разработчики решили что людям и двух хватит.

 

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю, вот ответ) Но получен он не их хидера, который могли и написать с ошибкой, а из доки на микроконтроллер)

image.thumb.png.97887d2ef8dd4bbf0f9ca7873f5b5013.png

image.thumb.png.d4071366b302888e7ab8008c1b121a74.png

31 minutes ago, jenya7 said:

Я хочу считать на таймере внешние события (пульсы).

И вы уже который раз не приводите название своего МК) У меня документация на STM32F091.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, haker_fox said:

Я думаю, вот ответ) Но получен он не их хидера, который могли и написать с ошибкой, а из доки на микроконтроллер)

И вы уже который раз не приводите название своего МК) У меня документация на STM32F091.

у меня STM32L475.

какие выводы из документации?

0111: External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter.

но этот TRGI - он или TRG1 или TRG2 - я так понимаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, jenya7 said:

какие выводы из документации?

Тактировать свой таймер вы можете со входа триггера. Триггером может быть либо внешний сигнал от другой периферии (где-то должна быть таблица), либо внешний сигнал с пинов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 hours ago, jenya7 said:

Я хочу считать на таймере внешние события (пульсы).

Знакомое дело: у меня на F051 два таймера считают импульсы (частоту) с LC-измерителя.
Я пользую вперемешку STL, а также прямой доступ к регистрам. Инициализация таймеров выглядит так:

 

   TIM_TimeBaseInitTypeDef
        TIM_TimeBaseInitStruct = {
            0,					// TIM_Prescaler
            TIM_CounterMode_Up,	// TIM_CounterMode
            DIV_Divider -1,     // TIM_Period, ARR register
            0,				   	// TIM_ClockDivision
            0					// TIM_RepetitionCounter
        };
    TIM_ICInitTypeDef
        TIM_IC1InitStructure = {
            TIM_Channel_1,
            TIM_ICPolarity_Rising,
            TIM_ICSelection_DirectTI,
            TIM_ICPSC_DIV1,
            DIV_EdgeFilter,     // setting
        };

// Input: an external signal at CH1 clocks the timer counter:
        TIM_INIT	          (tp, TIM_TimeBaseInitStruct);
        TIM_IC_INIT           (tp, TIM_IC1InitStructure);
        TIM_SelectSlaveMode   (tp, TIM_SlaveMode_External1);
        TIM_SelectInputTrigger(tp, TIM_TS_TI1FP1);
        TIM_ARRPreloadConfig  (tp, ENABLE);
        TIM_ENABLE            (tp);

TIM_INIT, TIM_IC_INIT, TIM_ENABLE - просто макросы, инкапсулирующие STL функции, плюс пара своих констант как DIV_Divider и DIV_EdgeFiler. tp - это у меня, например, TIM3.

Вы вроде так и делаете. Я надеюсь, мой код даст канву, что и как именно надо проинициализировать. Я приткнул к этому сообщению еще help file на STL для F051.

stm32f0xx_stdperiph_lib_um.chm

 

Еще следует не забыть сконфигурировать соответствующий GPIO на альтернативную функцию как вход таймера, т.к., в отличие от F1xx, которые были первой серией cortex от ST, для F0xx даже входы надо конфигурировать на альтернативные функции. Предполагаю, что для STM32L475 дело обстоит похоже.

Изменено пользователем KnightIgor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, KnightIgor said:

Знакомое дело: у меня на F051 два таймера считают импульсы (частоту) с LC-измерителя.
Я пользую вперемешку STL, а также прямой доступ к регистрам. Инициализация таймеров выглядит так:
 

 

спасибо. вопрос вот в чем - TIM_SelectInputTrigger(tp, TIM_TS_TI1FP1); - это выбор первого входа. а третий можно выбрать TIM_SelectInputTrigger(tp, TIM_TS_TI3FP3) ? - полагаю что нет.

мне нужно все четыре входа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, AHTOXA said:

Скорее всего, у этого таймера просто нет четырёх входов.

у моего то есть. я привел диаграмму.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, AHTOXA said:

На диаграмме TIMx - это, возможно, общая для нескольких таймеров диаграмма.

но дефайн то общий

#define LL_TIM_TS_TI1FP1               (TIM_SMCR_TS_2 | TIM_SMCR_TS_0)                      /*!< Filtered Timer Input 1 (TI1FP1) is used as trigger input */
#define LL_TIM_TS_TI2FP2               (TIM_SMCR_TS_2 | TIM_SMCR_TS_1)                      /*!< Filtered Timer Input 2 (TI12P2) is used as trigger input */
  
//ГДЕ  Filtered Timer Input 3 и Filtered Timer Input 4 ?????  ГДЕ 3 И 4 ????????
  

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, AHTOXA said:

Какой таймер-то?

да уж не важно. не до жиру :) какой разрешит использовать 4 входа такой и будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А, я понял. Вам надо чтобы таймер считал по этим входам. Тогда не выйдет. Вот, я отметил красным:

2020-06-22-150951_1421x1050_scrot.thumb.png.d7f15597f572587f8c2d3ed92a99ab4e.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, AHTOXA said:

А, я понял. Вам надо чтобы таймер считал по этим входам. Тогда не выйдет. Вот, я отметил красным:

печалька. не хотелось делать на прерываниях но видимо придеться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21.06.2020 в 12:25, jenya7 сказал:

Я хочу считать на таймере внешние события (пульсы).

но у меня определены только первые два пина TIMx_CH1 (TI1FP1) и TIMx_CH2 (TI2FP2)

хотя по диаграмме их 4

получается TI3FP3 и TI4FP4 я не могу использовать аппаратно?

Чего-то я вашу задачу понять не могу. Зачем вам 4 входа? Как мультиплексор?
Таймер все равно имеет только один счетный регистр (таймер это один таймер :)) и в один момент может считать импульсы  только от одного входа.
Если нужно одновременно считать импульсы на четырех входах - нужно четыре разных таймера.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...