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

Вэйвтэйбл синтезатор

1 6 26

Gregory: Плюс, за период ШИМа, необходимо проделывать кое-какие вычисления. А, при в/у частоте, этот период будет равен 1 МЦ.
А у АВР ШИМы аппаратные. Плюс в некоторых моделях и быстрые. Неужели в ПИКах так плохо.

 

AnSi :...1. имеем таблицу ЛЮБОЙ периодической функции - например синуса из 256 значений(так быстрее)

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

AnSi :
3. имеем ноту которую необходимо воспроизвести - например 440гц.....
4. вычисляем "шаг по таблице"...

Вычислять ничего не надо, достаточно затабулировать 12 (или более, если не хочется связываться со сдвигами) готовых значений этого "шага".
Соответственно, на входе будет не частота, а просто номер ноты.

AnSi :...вам говорили что выбор не лучший - скорость мала, флеша мало, RAM мало, нет аппаратного умножения, ну и...
Gregory :...Получается, что для избежания переполнения разрядной сетки, при сложении, уровень громкости каждого сэмпла должен быть понижен во столько раз, сколько количество голосов. То есть, для воспроизведения восьми голосов, получаем 5-ти битное значение, вместо 8-ми битного.

Если бы на кристалле был реализован нормальный ЦАП, то сгодился бы следующий трюк, позволяющий упростить алгоритм смешения голосов:
отсчеты каждого "голоса" надо не складывать, а просто последовательно выводить на ЦАП, равномерно распределяя их по периоду дискретизации. Получится аппаратное "сложение" с разделением во времени. На выходном фильтре все усреднится.

 

smg123:
в ПИКах так плохо
В ПИКах-16 ШИМ тоже аппаратный, в том смысле, что достаточно задать параметры, и они будут автоматически подставляться в регистры ШИМа. Но временные-то интервалы задаются таймерами, которые считают МЦ.

складывать
Я тут, кстати, подумал. Получается, что, если у нас 8-ми битные данные, и за 0 принято 80h, то складывать, или вычитать надо последние семь бит, а старший использовать только в качестве знака.

выходном фильтре
Так какой всё-таки использовать?

 

Начните с простой RC цепочки. Идеально подходит для возможностей 628-го

На самом деле, если не заморачиваться с высокой верностью, можно вообще ничего не ставить -- сигнал сгладится на емкости, которая стоит на входе усилителя, на его ограниченном быстродействии и т.п. Но это справедливо при частотах дискретизации более 40 кГц, когда побочный продукт -- "зеркальный спектр" -- лежит в ультразуковой области 20...40 кГц, и даже если он плохо подавлен, то все равно его не слышно (а если спектр исходного сигнала не ограничен, то побочные продукты будут попадать в слышимую область).

При более низких частотах зеркальный спектр попадает в слышимую область и придется принять дополнительные меры (ФНЧ высокого порядка) чтобы его подавить.

 

IDiod:
ФНЧ высокого порядка
Сегодня видел в одном интернет-магазине. Они там стоят как четыре МК.

простой RC цепочки
Кстати, давно хотел спросить, как её рассчитать? В смысле, какое время брать?

 

Никто не скажет, потому как выбор точки излома АЧХ (f=1/(2 пи тау) -- компромисс.
До точки излома АЧХ горизонтальна, после -- начинается завал. Если завал начать раньше, то "вредные" частоты лучше подавятся, но это затронет и часть "полезных" частот.

 

А вот если поставить две-три и больше фильтрующие RС цепочки последовательно, то можно завал начинать сразу за полезными частотами и подавление будет 40-60 и больше дБ на октаву.
Но, возможно, потребуется дополнительное усиление если нагрузка имеет низкое сопротивление.
А вот если сруза ставить LC-фильтр то и с одной цепочкой буде 40 ДБ/октаву

 

Gregory: Кстати, давно хотел спросить, как её рассчитать? В смысле, какое время брать?
в каком-то номере Радио был расчёт пассивного ФНЧ для Hi-end аппаратуры...(кажется для CD-проигр.)
как говорят для аудиофилов, т.е. типа активные елементы вносят искажения, и даже ослабление
сигнала не играет роли, главное чистота...

 

точки излома АЧХ
Давайте рассмотрим проблему с другой стороны.
Ведь на этом конденсаторе должна выделяться постоянная составляющая ШИМа. В "положительный полупериод" (назовём его так) он будет заряжаться, а в "отрицательный" разряжаться. Т.е., если тау будет маленькой, то напряжение будет сильно "скакать", а если большой, то силно "заниженным".
Получается, что оптимальное тау - чуть больше полного периода ШИМа. Так?

 

Если согласны мириться с некоторым мусором в звуке -- то так.
Оптимальное подразумевает критерий этой самой оптимальности.

ПС. Одна цепочка даст завал ровно 6 дб/октаву, две цепочки -- менее 12 дб/октаву и т.д. (в посте Арс-а "октаву" читать как "декаду")

Сегодня видел в одном интернет-магазине. Они там стоят как четыре МК
Это как раз и должно наводить на мысль об оптимальности выбора микроконтроллера.
Лучше переплатить за более продвинутый чип, но сэкономить на:
стоимости фильтра
стоимости времени разработки.