ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
5 мая
1337944 Топик полностью
ЫЫyкпy (07.08.2023 19:12, просмотров: 67) ответил my504 на Спасибо, я уже разобрался. Но все это происходит с потерей разрешающей способности из-за нелинейной регулировки dead-time. То есть линейно регулируется только если оставляем 8 разрядов у таймера. Плюс к этому приходится делать костыли при работе пачками (у меня генерируются радиоимпульсы). То есть из-за режима В одного из каналов. у него idle между пачками остается высоким уровнем.
Вот теперь понял что требуется. У AT32F407 таймеры как у STM32F407, если период таймера соответствует периоду преобразователя, то сгенерировать такие сигналы не получится, просто потому что можно управлять положением только одного фронта сигнала, а второй всегда привязан к началу/концу периода таймера. А вот если таймером отсчитывать полупериоды, то можно. 

Итак, что нужно:

__/¯¯¯¯\\\________________/¯¯ выход1

______________/¯¯¯¯\\\_______ выход2

__0__________T/2__________T__

Заставляем таймер отсчитывать полупериоды, по событию update event запускаем DMA.

DMA работает в circular mode с буфером в 2 слова и в каждом полупериоде записывает одно слово из буфера в регистр управляющий выходами (CCER).

В одном слове разрешен выход1, а выход2 запрещен, в другом слове наоборот.

Управление коэффициентом заполнения (положением заднего фронта) регистром CCRx, выходы OCxP и OCxN.

Взирая на нынешнее состояние отечества моего с таковым оком, каковое может иметь человек, воспитанный по строгим древним правилам, ... не могу я не дивиться, в сколь краткое время повредились повсюдно нравы в России. (с) кн. М.М. Щербатов.