ЦАП на ШИМ для формирования сигнала в реальном времени выглядит примерно так: новый отсчет (значение OCR) загружаете по прерыванию таймера от переполнения. При этом прерывания по переполнению должны следовать, понятно, с частотой дискретизации. Есть в меге128 (и в других, наверное) режим PWM, когда коэффициент переcчета (определяющий частоту дискретизации) можно менять довольно плавно значениями регистров ICRn или OCRnA, но при этом надо заботиться, чтобы в регистры сравнения PWM загружались числа, не превышающие модуля счета.
По Вашим вопросам 1. Частота дискретизации (переполнения PWM) не может давать 2 выборки на период - не выполняются условия теоремы Котельникова. Строго больше 2. А частота среза внешнего RC фильтра должна быть по возможности ближе к верхней частоте спектра формируемого сигнала, а сам фильтр должен макисмально подавлять частоты выше половины частоты дискретизации. Я обычно ставлю активный фильтр на операционниках, рассчитываю в каком-нибудь FilterWiz, хотя можно и пассивный, у меня просто нет соотв. программы синтеза. Чем выше частота дискретизации, тем проще фильтр.
2. Выборки выплевываются не сразу по получении с АЦП, а синхронно с перепролнением счетчика ШИМ (по прерыванию). Времени это особо не занимает, так что можно спокойно делать другие расчеты (если они не затрагивают выводимое значение)
Сообщение отредактировал V_G - Dec 2 2009, 11:12
|