Свежие обсуждения
Микроконтроллеры

PWM, равномерное распределение

1 3

Вот здесь есть описание, вернее намек на алгоритм со сравнением битов.

"I know of two ways to accomplish this. A surprising one is simply to bit-reverse your counter! Instead of comparing b0 of the counter to b0 of the DAC register, we compare b0 to b7, b1 to b6, ..., b7 to b0."

Может ли кто пролить свет.

 

http://zipcpu.com/dsp/2017/09/04/pwm-reinvention.html

 

Спасибо poruchik мне эта ссылка не попадалась.

Фраза "bit-reverse" в ней фигурирует довольно часто, а вот "compare", только для ряда Фурье. То есть, нет информации по алгоритму сравнения битов.

В ссылке, что я давал есть работающий алгоритм (Брезенхема кажется). Это третий комментарий. Я его успешно использую.

Вот, нечто подобное я бы хотел получить для сравнения (по скорости или количеству инструкций).

 

До кучи можете ещё сюда глянуть - Magic sine waves

 

Был там. На что нужно смотреть? 

 

Хмм... хороший вопрос smile

Может для начала поконкретнее опишите Вашу задачу, что в итоге надо получить.

А то, PWM, равномерное распределение - как то расплывчато.

 

Преследуется одна цель, найти более простой алгоритм распределения импульсов за один период полного преобразования.

Полное преобразование - 10 импульсов

50% - 1111100000 (ШИМ)

50% - 1010101010 (равномерное распределение)

В ссылке, что давал poruchik:

(машинный перевод):

"Лучшая ШИМ

Хорошо, вы достаточно подождали, вот техника: бит-реверс счетчика, прежде чем сравнивать его с образцом. Кроме того, мы будем настаивать на том, что наш счетчик PWM имеет мощность в две длины, так что бит с обратным счетчиком будет принимать те же значения, что и счетчик. Результатом является форма сигнала, подобная PWM , хотя технически это не сигнал PWM . Это в целом сигнал PDM , но в отличие от реализации PDM, представленной в Википедии, эту реализацию очень легко вычислить. Как и PWM, так и PDM результат будет номинально поддерживать такое же количество выходных тактовых периодов, что и выход ШИМ . Аналогично, он также будет отключен за такое же количество тактовых импульсов, что выход ШИМ был бы отключен."

В моей ссылке рассказывается о том же, но с участием какого то (we compare b0 to b7, b1 to b6, ..., b7 to b0), какого, мне не понятно.

 
vintik: рассказывается о том же, но с участием какого то (we compare b0 to b7, b1 to b6, ..., b7 to b0)

Тут речь идёт о побитовом сравнении счётчика и регистра ШИМ, только в "перевёрнутом" порядке - младший бит счётчика сранивается со старшим битом регистра, при совпадении выход устанавливается в "1", при несовпадении - в "0", потом второй бит счётчика с предпоследним битом регистра и т.д.

Всё это производится циклически с тактовой частотой. В результате получается последовательность импульсов, отличная от классического ШИМ, но по идее автора с тем же результатом. Не думаю, что этот метод будет проще классического, но он должен упростить фильтрацию из за большей плотности импульсов.

По ссылке у Дона Ланкастера описывается метод синтеза синусоидального сигнала из последовательности импульсов, описываемой специальными математическими функциями. Особенность этого метода - в полученном сигнале практически отсутствуют все гармоники, начиная со второй. Но реализуется этот механизм табличным методом, по заранее вычисленным значениям функции.

 

Спасибо, попробую проверить в симуляторе, ну и посмотреть :)

 

Покажите потом результаты. Интересно.