Добрый день, хотел бы реализовать следующий функционал таймера:
Есть таймер 8 настроенный в режиме one pulse mode, который запускается от внешнего сигнала. Сам импульс генерируется спустя некоторое время с момента запуска таймера.
Есть временной промежуток TIM1, за пределами которого не допускается, чтобы был сгенерирован импульс TIM8.
Как можно разрешать и запрещать генерацию импульса one pulse mode таймера TIM8?
Запрещать и разрешать работу таймера не получится, так как запуск происходит до промежутка TIM1, менять постоянно назначение выходного пина TIM8 думаю тоже будет не совсем правильно
Управление состоянием таймера
Управление состоянием таймера
- Вложения
-
- 12345.png
- (5.29 КБ) 181 скачивание
- Реклама
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1906
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Управление состоянием таймера
Поделитесь значениями времен применительно к работе таймеров (μs, ms, s ...). Допуск в параметрах событий? Также какая тактовая частота МК? Вижу варианты с прерываниями и флагами; с привязкой таймера на основе событий. (update: counter overflow/underflow, counter initialization). И остановка/запуск таймера X вполне применимы.
Последний раз редактировалось veso74 Пн июн 09, 2025 10:36:49, всего редактировалось 1 раз.
Re: Управление состоянием таймера
veso74, Частота мк 200 МГц, временные периоды десятки-сотни мксек. Но точность, с которой требуется управлять TIM8 максимальна, т.е. 5 нсек
Пока у меня идея зайти через ARR и CCR. Таймер TIM8 формирует импульс в режиме LOW потом HIGH. Т.е. стартует с LOW и при достижении CCR на выбранном канале он переключается в HIGH и считает до значения ARR.
Допустим изначально я выставляю нерабочую конфигурацию (CCR > ARR) по логике он не должен сформировать импульс. Но сам таймер при этом запустится и будет считать. Теперь при начале импульса TIM1, когда разрешается работа TIM8 я меняю CCR на рабочее значение и все срабатывает как надо. Ну и затем опять меняю CRR > ARR.
Не знаю насколько это правильно и допустимо, пока не тестировал.
И надо обработать ситуацию, когда выставляется нормальное положение CCR, но при этом счет таймера уже прошел нужную величину
Пока у меня идея зайти через ARR и CCR. Таймер TIM8 формирует импульс в режиме LOW потом HIGH. Т.е. стартует с LOW и при достижении CCR на выбранном канале он переключается в HIGH и считает до значения ARR.
Допустим изначально я выставляю нерабочую конфигурацию (CCR > ARR) по логике он не должен сформировать импульс. Но сам таймер при этом запустится и будет считать. Теперь при начале импульса TIM1, когда разрешается работа TIM8 я меняю CCR на рабочее значение и все срабатывает как надо. Ну и затем опять меняю CRR > ARR.
Не знаю насколько это правильно и допустимо, пока не тестировал.
И надо обработать ситуацию, когда выставляется нормальное положение CCR, но при этом счет таймера уже прошел нужную величину
- GARMIN
- Держит паяльник хвостом
- Сообщения: 953
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Управление состоянием таймера
У СТМ для таймеров есть возможность каскадного соединения, можно на один таймер завести разрешающий сигнал с другого, но не в произвольном порядке.
Re: Управление состоянием таймера
[uquote="GARMIN",url="/forum/viewtopic.php?p=4723121#p4723121"]У СТМ для таймеров есть возможность каскадного соединения, можно на один таймер завести разрешающий сигнал с другого, но не в произвольном порядке.[/uquote]Автор даже не удосужился написать - про какой МК идёт речь? Видимо про дефолт-МК: STM32F103
В разных МК есть разные возможности межсоединений сигналов таймеров между собой. В МК XMC4xxx очень богатые настройки таких соединений. Можно с таймера на таймер передавать сигналы:
старта счёта;
стопа счёта;
захвата;
разрешения счёта;
переключения направления счёта;
перезагрузки счётчика таймера;
триггер сигналы (инкремент/декремент);
переполнения;
и т.п. Всё это настраивается соответствующими мультиплексорами в регистрах управления таймеров.
В разных МК есть разные возможности межсоединений сигналов таймеров между собой. В МК XMC4xxx очень богатые настройки таких соединений. Можно с таймера на таймер передавать сигналы:
старта счёта;
стопа счёта;
захвата;
разрешения счёта;
переключения направления счёта;
перезагрузки счётчика таймера;
триггер сигналы (инкремент/декремент);
переполнения;
и т.п. Всё это настраивается соответствующими мультиплексорами в регистрах управления таймеров.
- Реклама
- Alex-lab
- Потрогал лапой паяльник
- Сообщения: 308
- Зарегистрирован: Ср ноя 20, 2013 11:29:26
- Откуда: Манчестер
- Контактная информация:
Re: Управление состоянием таймера
Смотрите в сторону бланкирования Таймером 1 разрешающего сигнала для TIM8. Тут нет универсального решения, все зависит от конкретной модели контроллера.
При решение наиболее сложных задач, большинство, как правило, ошибается...
-
Zelenyj111
- Родился
- Сообщения: 13
- Зарегистрирован: Пт янв 05, 2024 13:43:29
Re: Управление состоянием таймера
F103 не может 200 МГц. Если STM32, то тогда H523.
Re: Управление состоянием таймера
[uquote="Zelenyj111",url="/forum/viewtopic.php?p=4723482#p4723482"]F103 не может 200 МГц.[/uquote]Некоторые умеют заставить. 


