|
STM32 PWM, Когда можно выключить таймер? |
|
|
|
Oct 18 2015, 16:38
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Имеется, например, F4 Discovery board. Берем, например, TIM13. Подцепляем пин и генерируем PWM. Все просто, понятно и без проблем. Теперь надо выдать постоянный 0 или 1. - Вопрос с нулем: Записываем 0 в CCR1. Чтобы таймер понапрасну не крутился, хочу его выключить(CEN = 0 в CR1). Когда это можно сделать? Сразу не проходит. Можете убедиться сами. - Вопрос с 1. Если не перепрограммировать пин на GPIO возможно ли такое вообще? Можно, конечно, как и с 0 ВОВРЕМЯ выключить таймер, ну и снова вопрос: когда будет вовремя?
Заранее спасибо.
--------------------
|
|
|
|
|
Oct 18 2015, 16:49
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(pitt @ Oct 18 2015, 19:38)  - Вопрос с нулем: Записываем 0 в CCR1. Чтобы таймер понапрасну не крутился, хочу его выключить(CEN = 0 в CR1). Когда это можно сделать? Сразу не проходит. Можете убедиться сами. Что значит "сразу"?? Мгновенный переход пина в 0 ?? Ясно дело не пойдет, счетчик должен обнулиться, сбросить пин и уже в 1 его никогда не поставит, равно, как и запись 0xffff мгновенно не переведет пин в 1. Если нужно такое условие, то нужно переключить функцию пина, остановить таймер и обнулить регистр, чтоб потом он начал считать "правильно".
|
|
|
|
|
Oct 18 2015, 16:55
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(mantech @ Oct 18 2015, 12:49)  Что значит "сразу"?? Мгновенный переход пина в 0 ?? Ясно дело не пойдет, счетчик должен обнулиться, сбросить пин и уже в 1 его никогда не поставит, равно, как и запись 0xffff мгновенно не переведет пин в 1. Если нужно такое условие, то нужно переключить функцию пина, остановить таймер и обнулить регистр, чтоб потом он начал считать "правильно". Переключать пин не хочу. Время переключения в 0/1 терпит. Прерывание тоже не хочу использовать. Хочу просто выключить таймер, когда его выход уже в нужном состоянии. Т.е. почистить SR и ждать event?
--------------------
|
|
|
|
|
Oct 18 2015, 19:53
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(adnega @ Oct 18 2015, 15:47)  Связи нет, скорее наоборот. Чистейший вариант: это 0 или ARR+1 в CCR. Верно, Ваше предложение - это как раз и есть наоборот: пусть крутится вхолостую...
--------------------
|
|
|
|
|
Oct 19 2015, 07:20
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(pitt @ Oct 18 2015, 22:53)  пусть крутится вхолостую... Там нет механических изнашивающихся деталей, поэтому ничего страшного в работе таймера нет. Кроме таймера в МК еще много чего "крутится". Тоже все будете отключать? Не забываем, что на отключение тоже нужно потратить несколько инструкций, а это и расход памяти, и расход тактов, и расход энергии, и усложнение алгоритма. Цитата(ЯadiatoR @ Oct 19 2015, 08:59)  pitt, посмотрите в регистре CCMR1 есть биты OCxM, там есть выбор 100 и 101 - это то, что вы ищиете в правильном виде Да, это один из вариантов манипулирования настройками: чуть лучше, чем заменить функцию пина. Но при этом прозрачность теряется, и код начинает зависеть от данных - можно и себя запутать, и тех, кто после вас будет работать с кодом. Помимо этого, теряется синхронность PWM, и возможны ситуации выдачи импульсов неконтролируемой формы.
|
|
|
|
|
Oct 19 2015, 08:22
|

Местный
  
Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901

|
Цитата(adnega @ Oct 19 2015, 10:20)  Да, это один из вариантов манипулирования настройками: чуть лучше, чем заменить функцию пина. Но при этом прозрачность теряется, и код начинает зависеть от данных - можно и себя запутать, и тех, кто после вас будет работать с кодом. Помимо этого, теряется синхронность PWM, и возможны ситуации выдачи импульсов неконтролируемой формы. В принципе, учитывая, что это это обычный ШИМ, то неконтролируемая форма первого импульса не сделает ничего плохого
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|