Страница 1 из 1
Управление состоянием таймера
Добавлено: Пн июн 09, 2025 05:24:43
DmitryR
Добрый день, хотел бы реализовать следующий функционал таймера:
Есть таймер 8 настроенный в режиме one pulse mode, который запускается от внешнего сигнала. Сам импульс генерируется спустя некоторое время с момента запуска таймера.
Есть временной промежуток TIM1, за пределами которого не допускается, чтобы был сгенерирован импульс TIM8.
Как можно разрешать и запрещать генерацию импульса one pulse mode таймера TIM8?
Запрещать и разрешать работу таймера не получится, так как запуск происходит до промежутка TIM1, менять постоянно назначение выходного пина TIM8 думаю тоже будет не совсем правильно
Re: Управление состоянием таймера
Добавлено: Пн июн 09, 2025 09:24:54
veso74
Поделитесь значениями времен применительно к работе таймеров (μs, ms, s ...). Допуск в параметрах событий? Также какая тактовая частота МК? Вижу варианты с прерываниями и флагами; с привязкой таймера на основе событий. (update: counter overflow/underflow, counter initialization). И остановка/запуск таймера X вполне применимы.
Re: Управление состоянием таймера
Добавлено: Пн июн 09, 2025 10:23:20
DmitryR
veso74, Частота мк 200 МГц, временные периоды десятки-сотни мксек. Но точность, с которой требуется управлять TIM8 максимальна, т.е. 5 нсек
Пока у меня идея зайти через ARR и CCR. Таймер TIM8 формирует импульс в режиме LOW потом HIGH. Т.е. стартует с LOW и при достижении CCR на выбранном канале он переключается в HIGH и считает до значения ARR.
Допустим изначально я выставляю нерабочую конфигурацию (CCR > ARR) по логике он не должен сформировать импульс. Но сам таймер при этом запустится и будет считать. Теперь при начале импульса TIM1, когда разрешается работа TIM8 я меняю CCR на рабочее значение и все срабатывает как надо. Ну и затем опять меняю CRR > ARR.
Не знаю насколько это правильно и допустимо, пока не тестировал.
И надо обработать ситуацию, когда выставляется нормальное положение CCR, но при этом счет таймера уже прошел нужную величину
Re: Управление состоянием таймера
Добавлено: Вт июн 10, 2025 11:46:56
GARMIN
У СТМ для таймеров есть возможность каскадного соединения, можно на один таймер завести разрешающий сигнал с другого, но не в произвольном порядке.
Re: Управление состоянием таймера
Добавлено: Вт июн 10, 2025 13:28:47
jcxz
[uquote="GARMIN",url="/forum/viewtopic.php?p=4723121#p4723121"]У СТМ для таймеров есть возможность каскадного соединения, можно на один таймер завести разрешающий сигнал с другого, но не в произвольном порядке.[/uquote]Автор даже не удосужился написать - про какой МК идёт речь? Видимо про дефолт-МК: STM32F103
В разных МК есть разные возможности межсоединений сигналов таймеров между собой. В МК XMC4xxx очень богатые настройки таких соединений. Можно с таймера на таймер передавать сигналы:
старта счёта;
стопа счёта;
захвата;
разрешения счёта;
переключения направления счёта;
перезагрузки счётчика таймера;
триггер сигналы (инкремент/декремент);
переполнения;
и т.п. Всё это настраивается соответствующими мультиплексорами в регистрах управления таймеров.
Re: Управление состоянием таймера
Добавлено: Ср июн 11, 2025 23:29:51
Alex-lab
Смотрите в сторону бланкирования Таймером 1 разрешающего сигнала для TIM8. Тут нет универсального решения, все зависит от конкретной модели контроллера.
Re: Управление состоянием таймера
Добавлено: Чт июн 12, 2025 03:33:43
Zelenyj111
F103 не может 200 МГц. Если STM32, то тогда H523.
Re: Управление состоянием таймера
Добавлено: Чт июн 12, 2025 17:46:44
jcxz
[uquote="Zelenyj111",url="/forum/viewtopic.php?p=4723482#p4723482"]F103 не может 200 МГц.[/uquote]Некоторые умеют заставить.
