April 11th, 2019

Формирование произвольно-выровненных импульсов PWM таймерами STM32

Требуется сформировать несколько последовательностей импульсов с одинаковым периодом, но разной фазы и длительности.
Достаточно стандартная задача. Однако изучение даташитов показало, что таймеры в большинстве серий STM32 способны аппаратно формировать импульсы произвольной длительности только в режиме PWM; они могут быть выровнены по началу, концу, либо центру периода, и никак иначе. Исключение составляют таймеры c режимом asymmetric PWM; такие есть в F303, но мало где ещё. А у меня F407.
Решения с программной поддержкой, перенастраивающие регистры счетчика "на лету" по прерыванию, исключаются, так как требуемая частота импульсов - от мегагерца и выше. Нужно чисто аппаратное решение.
Единственное, до чего пока смог додуматься - имитировать внешней логикой работу упомянутого выше asymmetric PWM. Там для получения произвольно-выровненного импульса используются два канала таймера в режиме PWM, а их выходы поступают на логический элемент. Однако это чревато проблемой гонок на границах периодов и, соответственно, "иголок" на выходе.
Другой вариант - два канала в стандартном режиме Output Compare, выходы которых управляют RS-триггером (один канал запускает импульс, другой завершает).
Есть ли у кого-то альтернативные идеи или, может, некое ноу-хау?

UPD: придумал, как избежать "гонок" при использовании лог. элемента "2И". На один его вход подавать центрально-выровненный PWM сигнал, а на другой - выровненный по одному из краев счетного периода. Таким образом, для 4 сигналов требуется два 4-канальных таймера, один из которых может считать вверх-вниз, и 4 лог. элемента 2И. Вуаля!
ЧП
  • stepuk

Помощь дилетанту.

Просьба дать совет дилетанту, последний раз изучавшему физику в школе в семидесятых годах прошлого века. Точно помню, что на уроках физики была такая задачка и нужно было рассчитать параметры шунта, но не хочется набить шишку через потерю прибора.

Имеется необходимость превратить миллиамперметр со шкалою от нуля до пятидесяти миллиампер в амперметр от нуля до пяти ампер. Сопротивление прибора - 1,663 K. Как решить этот вопрос? Заранее всех благодарю!