Comments 35
UFO just landed and posted this here
И все же интереснее было бы задействовать все ресурсы XMega.
Можно было запустить встроенный в контроллер ЦАП, и сравнить его с самодельным.
В ATXMEGA128A3U есть USB, так что можно было взять пример Audio Out Device из LUFA, и сделать простую USB аудиокарту.
Можно было запустить встроенный в контроллер ЦАП, и сравнить его с самодельным.
В ATXMEGA128A3U есть USB, так что можно было взять пример Audio Out Device из LUFA, и сделать простую USB аудиокарту.
+1
Встроенный ЦАП я запускал, разница на слух практически отсутствует. Контроллер сам по себе генерирует много шума, от которого я никак не избавлялся, из-за этого качество страдает.
Вот так выглядит пила с R-2R ЦАП
С USB опыта работы у меня не было, но попробовать определенно стоит.
Вот так выглядит пила с R-2R ЦАП
Картинка![](https://habrastorage.org/r/w1560/files/bbd/00e/248/bbd00e248740454bbd05ac0c9b8a487b.png)
![](https://habrastorage.org/files/bbd/00e/248/bbd00e248740454bbd05ac0c9b8a487b.png)
С USB опыта работы у меня не было, но попробовать определенно стоит.
0
«точность потеряется с пятого разряда поскольку (1/2^5)<0.05», imho, вы тут заблуждаетесь.
Если упростить, то точность всей схемы ЦАП тоже будет примерно 5%. Я основываюсь на "Законе больших чисел".
Если упростить, то точность всей схемы ЦАП тоже будет примерно 5%. Я основываюсь на "Законе больших чисел".
0
Все верно, 5 разряд изменяет напряжение на 1/32 от максимального напряжения (логической единицы), это меньше 5%, значит его использование бессмысленно.
0
Резисторы между собой неравнозначны, плохой резистор в старшем разряде сделает бессмысленным использование младших, тогда как резистор с большим отклонением в младшем разряде при идеальных остальных практически не повлияет на конечную точность.
0
Это только при условии, что будут воспроизводиться громкие звуки.
0
Вряд ли вы найдете трек, где сигнал меньше 50% максимальной амплитуды. Как ЦАПом этой штукой уже не попользуешься, хотя играть звук будет не то чтобы ужасно.
0
А если понадобится цифровая регулировка громкости?
0
Приведет к потере разрядности, лучше регулировать аналогово (не обязательно потенциометром, есть специальные микросхемы, управляемый цифрой).
0
Специальная микросхема — это ещё одна микросхема.
0
Можно спорить до бесконечности, все зависит от постановки задачи и того, что нужно получить в результате. Как вариант сделать ЦАП большей разрядности на двух портах, но это еще резисторы. А вообще такие задачи правильно решать специальными микросхемами, в видео видно на заднем плане плату, там ЦАП на PCM2704 и усилитель, делал себе для замены никуда не годной звуковой карты в компьютере. Статью к сожалению уже не написать, потому что есть публикация на другом ресурсе.
0
Тоже считаю, что это из разряда «из пушки по воробьям». XMEGA довольно продвинутые, могут ARM составлять конкуренцию. А обращаются с ней как с тупой Attiny, которая ничего не умеет, обвешивая UART конвертерами и R-2R матрицей.
+1
Для воспроизведения коротких отрезков пойдёт, а как насчёт длинных отрезков, когда скорость поступления и скорость вывода отсчётов будет немного но отличаться? А это будет в любом случае. Нужен механизм тонкой подстройки скорости вывода так чтобы не допускать опустошения и переполнения буфера.
При разнице скорости в 20PPM например, и частоте вывода 44кГц утечка будет составлять примерно 1 отсчет в секунду. Через 1000 секунд разница между поступающим потоком и выводимым будет составлять уже порядка 1Кб…
При разнице скорости в 20PPM например, и частоте вывода 44кГц утечка будет составлять примерно 1 отсчет в секунду. Через 1000 секунд разница между поступающим потоком и выводимым будет составлять уже порядка 1Кб…
0
Как таковая скорость поступления отсчетов нигде не указана, контроллер запрашивает у ПК очередной пакет данных когда в его буфере появляется место, поэтому рассинхронизация невозможна. Я столкнулся с другой, чуть более интересной проблемой, компьютер это не тупая железяка, на нем работает ОС разделяющая процессорное время между процессами. После запроса данных контроллером они начинают высылаться не сразу, из-за этого требуется довольно большой буфер на МК.
0
Это недостаток такого способа воспроизведения. Но такое используют очень редко, поскольку кроме всего прочего запаздывание от входа до выхода в таких схемах определяется величиной промежуточного буфера, и чем он больше тем хуже характеристика такой схемы. Для воспроизведения одиночных сигналов это не играет особой роли, но в других случаях это довольно критично.
Поэтому, используют асинхронный вывод — сколько данных подали на вход столько и воспроизвели подстраивая скорость вывода под среднюю скорость ввода. Вот решение этой проблемы на МК и является самой интересной частью задачи, я вобщем-то ожидал именно этого.
Поэтому, используют асинхронный вывод — сколько данных подали на вход столько и воспроизвели подстраивая скорость вывода под среднюю скорость ввода. Вот решение этой проблемы на МК и является самой интересной частью задачи, я вобщем-то ожидал именно этого.
+1
А какого порядка у вас задержки? Конечно Windows не RTOS, но всё таки это не настолько критично для такой не особо затратной задачи. В шарпе ещё есть сборщик мусора, который программу стопорит на время, но это опять же порядка 10 мс(за это время накопится около 400 байт). У вас я вижу буфер в МК 12кб? Не может винда на 200 мс программу фризить.
Возможно у вас проблема с настройкой COM порта и в нём задан какой-то буфер, который шлёт данные не сразу.
Возможно у вас проблема с настройкой COM порта и в нём задан какой-то буфер, который шлёт данные не сразу.
0
ЦАП. Из горсти резисторов…
https://ru.wikipedia.org/wiki/Covox
https://ru.wikipedia.org/wiki/Covox
0
Не путать, Covox это ЦАП подключаемый к параллельному порту компьютера, а здесь используется последовательный интерфейс, коих найти сейчас гораздо проще чем плату с LPT-портом под нужную встраиваемую систему. Из общего, там и правда горстка резисторов, но дальше — всё разное и даже не совместимое.
+2
Почти то же самое. Простейший ковокс — это есть 8 сигнальных цифровых линий, мы ими дрыгаем. На выходе подключаем R-2R матрицу, которая и преобразует это в аналог. Тут же мы дрыгаем ногами МК, только уже через UART конвертер.
0
Так можно любую схему с резисторным ЦАП назвать ковоксом. Нет уж, ковокс — это ЦАП именно на параллельном порту компьютера, его реализация может несколько отличаться либо это R-2R либо весовые резисторы но характерно для ковокса — именно подключение к LPT-порту компьютера или его эмулятору, который имеет программный интерфейс LPT-порта.
Ведь собственно сама идея ЦАП-а на резисторах не так уж уникальна чтобы любую схему в составе которой есть ЦАП на резисторах называть ковоксом.
Ведь собственно сама идея ЦАП-а на резисторах не так уж уникальна чтобы любую схему в составе которой есть ЦАП на резисторах называть ковоксом.
0
С такой точки зрения — да. Я думаю, что igorkozinov просто приметил, что оригинальный Covox (если смотреть патент) — это так же голая R-2R матрица :). А его суть — это как из говна и палок сделать простенький вывод звука на IBM PC 80х годов (да и не только на них, все же техника тогда была дорогой).
0
Есть такая звуковая карта!
![](https://habrastorage.org/r/w780q1/files/c16/e39/0a8/c16e390a8b264a9eb5ed9603b5711d1f.jpg)
![](https://habrastorage.org/files/c16/e39/0a8/c16e390a8b264a9eb5ed9603b5711d1f.jpg)
0
А еще можно читать wav с SD карты, компьютер тогда не нужен, получается портативный wav player.
0
В сети гуляет проект с SD и ЦАП на основе ШИМа, можно затолкать все это в маленький контроллер attiny.
0
Да, лучше ШИМ, всего 1 пин занимает. Делал себе дверной звонок на SD карте с ШИМом, с частотой дискретизацией до 48кГц на меге 8. В планах на 16-битное переделать.
0
Да их множество, это как помигать светодиодиком. А гуляет проект японца Elm Chan. По факту небольшая либа для работы с FAT и немного кода для софтовой реализации SPI (для работы с SD/MMC), работа таймера, обслуживающего ШИМ. Сам на межке8 делал такой проект, правда без использования FS.
Есть более интересные реализации — например, взять какую-нить Attiny13. Но там или без FS, или с простейшей: памяти маловато у этого МК. Ну еще можно найти дешевый чип памяти, хотя невостребованная SD карта небольшого по меркам телефона (до 2 гб) размера будет дешевле…
Есть более интересные реализации — например, взять какую-нить Attiny13. Но там или без FS, или с простейшей: памяти маловато у этого МК. Ну еще можно найти дешевый чип памяти, хотя невостребованная SD карта небольшого по меркам телефона (до 2 гб) размера будет дешевле…
0
Подключал TDA2822M по мостовой схеме — постоянно прут наводки, какое-то непонятное самовозбуждение, сигнала вообще не слышно. Так и не смог настроить. Собрал по стерео варианту — заработало сразу же. Мистика?
0
Долго думал, что мне напоминает схема структуры устройства в начале статьи.
Вспомнил: http://s6.hostingkartinok.com/uploads/images/2013/10/50b61037edc95b2a1160e19d44b0f609.jpg
Вспомнил: http://s6.hostingkartinok.com/uploads/images/2013/10/50b61037edc95b2a1160e19d44b0f609.jpg
0
Sign up to leave a comment.
Аудио плеер на AVR