В этой апликухе упоминается частота ШИМ аж 64 МГц, только непонятно откуда она берется если контролер может работать на частоте максимум 16 МГц?
http://www.gaw.ru/html.cgi/txt/app/micr ... AVR131.htm
http://www.gaw.ru/pdf/Atmel/app/avr/AVR131.pdf
ааа, теперь понял. Ну да, тут практически любая цепь будет играть роль фильтра...WAV-файлы 8 бит 44100 Гц на максимальной частоте ШИМ (64 МГц/256=250КГц) воспроизводятся просто прекрасно.
ну так вас же никто не заставляет каждый такт ШИМ обновлять скважность - настройте таймер на срабатывание с частотой 44,1 кГц и по прерыванию пуляйте в OCRxx новый семпл...Increasing писал(а):Вот только не совсем понятно, как это реализуется?
Если 64МГц/256=250КГц и 250КГц/44,1КГц=5,6689, то получается не целое число раз. Как выйти из этой ситуации?
будет небольшой джиттер - мне кажется, вы его не услышитеIncreasing писал(а):ARV
Вы имеете виду: настроить 0-ой таймер на частоту 44,1 КГц, а 1-ый таймер на 250КГц в режиме ШИМ и кидать выборку в OCR1A по прерыванию от 0-го таймера?
Спасибо, предложение интересное, но тогда нарушается синхронность. Выборка закидывается OCR1A в некий момент времени который определяется 0-ым таймером, но мы же не знаем выполнился ли очередной цикл ШИМ полностью. Но даже если удастся это как то проконтролировать, то все равно будет не соответствие кратности частот, получается не целое число циклов ШИМ, для каждой выборки.
64МГц/256=250КГц;
250КГц/44,1КГц=5,6689...