Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F4: аппаратное управление GPIO с помощью таймера
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
k000858
Необходимо настроить таймер так, что бы он аппаратно включал на ножке высокий уровень на заданное время.
Т.е. изначально на ножке низкий уровень, запустили таймер - на определенное время на ножке установился высокий уровень, при срабатывании таймера сново низкий уровень. Дали команду - все повторилось. Желательно все сделать без прерываний.

Какой для этого необходимо выбрать режим работы таймера?

Код
TIM_OCMODE_TIMING
TIM_OCMODE_ACTIVE
TIM_OCMODE_INACTIVE
TIM_OCMODE_TOGGLE
TIM_OCMODE_PWM1
TIM_OCMODE_PWM2
TIM_OCMODE_FORCED_ACTIVE
TIM_OCMODE_FORCED_INACTIVE


adnega
TIM_OCMODE_PWM2
k000858
Цитата(adnega @ Apr 3 2014, 07:55) *
TIM_OCMODE_PWM2

это режим One-Pulse на сколько я понял.
но в этом режиме счет можно запустить при подаче сигнала на другой пин таймера. а как то по-другому можно?
может есть у кого пример реализации..
Сергей Борщ
Цитата(k000858 @ Apr 3 2014, 06:01) *
может есть у кого пример реализации..
У всех есть. В руководстве пользователя (User manual) режим One pulse mode расписан аж на двух страницах со всеми подробностями. Пример чего вы хотите? Как биты в регистры прописывать?
k000858
Цитата(Сергей Борщ @ Apr 3 2014, 09:06) *
У всех есть. В руководстве пользователя (User manual) режим One pulse mode расписан аж на двух страницах со всеми подробностями. Пример чего вы хотите? Как биты в регистры прописывать?

как я понял из референс мауанала в режиме OPM таймер генерирует импульс на ножке контроллера после поступления сигнала на один из каналов этого таймера (другую ножку). Можно ли генерировать импульс с помощью таймера в этом режиме без подачи сигнала на другую ножку?
Сергей Борщ
Цитата(k000858 @ Apr 3 2014, 07:37) *
Можно ли генерировать импульс с помощью таймера в этом режиме без подачи сигнала на другую ножку?
Можно. Из описания бита OPM вытекает, что этот режим лишь останавливает счет по событию Update Event путем аппаратного сброса бита CEN. А запускать счет можно программной установкой этого бита.
k000858
ну вроде устанавливать высокий уровень таймером получилось.
а что если требуется сделать наоборот:
- изначально высокий уровень
- запустили таймер - установился низкий уровень
- таймер дотикал - вернулся низкий уровень

почему то при изменении OCPolarity ничего не меняется..
Сергей Борщ
Цитата(k000858 @ Apr 3 2014, 09:38) *
почему то при изменении OCPolarity ничего не меняется..
Я бы баловался битами OCxM между режимами PWM mode 1 и PWM mode 2.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.