jenya7 0 21 июня, 2020 Опубликовано 21 июня, 2020 (изменено) · Жалоба Я хочу считать на таймере внешние события (пульсы). 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 получается TI3FP3 и TI4FP4 я не могу использовать аппаратно? да. похоже на то. в документации упоминаются только первые два входа. очевидно разработчики решили что людям и двух хватит. Изменено 21 июня, 2020 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 21 июня, 2020 Опубликовано 21 июня, 2020 · Жалоба Я думаю, вот ответ) Но получен он не их хидера, который могли и написать с ошибкой, а из доки на микроконтроллер) 31 minutes ago, jenya7 said: Я хочу считать на таймере внешние события (пульсы). И вы уже который раз не приводите название своего МК) У меня документация на STM32F091. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 21 июня, 2020 Опубликовано 21 июня, 2020 · Жалоба 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 - я так понимаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 21 июня, 2020 Опубликовано 21 июня, 2020 · Жалоба 3 minutes ago, jenya7 said: какие выводы из документации? Тактировать свой таймер вы можете со входа триггера. Триггером может быть либо внешний сигнал от другой периферии (где-то должна быть таблица), либо внешний сигнал с пинов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 21 июня, 2020 Опубликовано 21 июня, 2020 (изменено) · Жалоба 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 дело обстоит похоже. Изменено 21 июня, 2020 пользователем KnightIgor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба 12 hours ago, KnightIgor said: Знакомое дело: у меня на F051 два таймера считают импульсы (частоту) с LC-измерителя. Я пользую вперемешку STL, а также прямой доступ к регистрам. Инициализация таймеров выглядит так: спасибо. вопрос вот в чем - TIM_SelectInputTrigger(tp, TIM_TS_TI1FP1); - это выбор первого входа. а третий можно выбрать TIM_SelectInputTrigger(tp, TIM_TS_TI3FP3) ? - полагаю что нет. мне нужно все четыре входа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба Скорее всего, у этого таймера просто нет четырёх входов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба 2 hours ago, AHTOXA said: Скорее всего, у этого таймера просто нет четырёх входов. у моего то есть. я привел диаграмму. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба На диаграмме TIMx - это, возможно, общая для нескольких таймеров диаграмма. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба 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 ???????? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба Какой таймер-то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба 1 hour ago, AHTOXA said: Какой таймер-то? да уж не важно. не до жиру :) какой разрешит использовать 4 входа такой и будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба А, я понял. Вам надо чтобы таймер считал по этим входам. Тогда не выйдет. Вот, я отметил красным: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба 2 hours ago, AHTOXA said: А, я понял. Вам надо чтобы таймер считал по этим входам. Тогда не выйдет. Вот, я отметил красным: печалька. не хотелось делать на прерываниях но видимо придеться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 22 июня, 2020 Опубликовано 22 июня, 2020 · Жалоба 21.06.2020 в 12:25, jenya7 сказал: Я хочу считать на таймере внешние события (пульсы). но у меня определены только первые два пина TIMx_CH1 (TI1FP1) и TIMx_CH2 (TI2FP2) хотя по диаграмме их 4 получается TI3FP3 и TI4FP4 я не могу использовать аппаратно? Чего-то я вашу задачу понять не могу. Зачем вам 4 входа? Как мультиплексор? Таймер все равно имеет только один счетный регистр (таймер это один таймер :)) и в один момент может считать импульсы только от одного входа. Если нужно одновременно считать импульсы на четырех входах - нужно четыре разных таймера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться