» » Поделки начинающего цапостроителя, часть 18/1. Рулим ЦАП АК4399 с помощью Arduino

 
 
 

Поделки начинающего цапостроителя, часть 18/1. Рулим ЦАП АК4399 с помощью Arduino

Разместил AlexD 23 марта 2016. Просмотров: 7413

15
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

Я долго колебался – писать эту статью или нет. Это решение нужно было принять — основываясь на плюсах и минусах. Минусы были в том, что я в принципе ничего нового не создал и не изготовил. Получилась лабораторная работа студента-программиста, и то нагло списанная у одногруппника для получения зачета.
Но и плюс был весомый – все же процедура конфигурирования если и описана где-то в сети, то либо поставляется автором в виде готового .bin или .hex файла для прошивки контроллера (определенной модели) и заточена под конкретную конструкцию и функционал. А так как Arduino – гибкая платформа и вполне доступна для таких «ламеров» как я, то любому желающему будет несложно «допилить» ее под себя.
И я решил – опишу свои движения, может кому-то это будет полезно.
А началось все с того, что я решил пощупать ЦАП вида АК4399. Изначально у меня была идея попробовать ее в моно-режиме. То есть по одному корпусу на канал. Но эта идея так и осталась бы на уровне мечты, если бы у меня не появился коллега-программист. Пусть будет просто Программист. Он тоже интересуется техникой, качественным звуком, но он программист, а я электронщик. На этом мы и сошлись. Как то в разговоре с ним я упомянул про АК4399 и про то, что надо их программировать через SPI, чтоб использовать в режиме двойное моно, но я это не умею и никогда не делал.
Он ответил просто: «Бери пару, программу напишем!».

После такого смелого для меня утверждения, я не смог удержаться и сделал заказ на АК4399. Пока они спешили ко мне, я углубился в изучение материалов по ней. Что пишут люди, как используют. То, что я выяснил, немного шло в разрез с моими планами, но было более разумно.
Все дальнейшее описание будет основано на примере АК4399. Но контроллер можно использовать с любым другим ЦАП, поддерживающим программирование по SPI.

Итак. Нет смысла использовать ее в режиме моно – прирост качества будет небольщим. Больше внимания надо уделить питанию. Особенно питанию аналоговых выходов. Для этого монстры цапостроения используют малошумящие схемы стабилизаторов питания.
Также приветствуется и раздельное питание каналов.
Поэтому в процессе концепция поменялась.

Я не буду описывать ее здесь – это тема отдельной статьи, да и в принципе меняется только модуль ЦАП, а питание, цифровые входы и обработка мастерклока – остаются аналогичными моим предыдущим конструктивам. Например — ЦАП на сдвоенных РСМ1794. Я в нем выкинул модули ЦАП и выхлопа и заменил их на одну плату на АК4399. Поэтому она и получилась квадратной.

В процессе изучения даташита, возникла идея попробовать такую диковинку, как DSD.
Что это такое, можно прочитать в сети. Для меня же встала задача – как и откуда вытащить этот формат. Что это будет компьютер – это однозначно, но что компьютер должен еще и выдавать сигналы DSD – оказалось проблемой.

Недолгое изучение материалов по теме и выяснилось следующее:
Нужен USB интерфейс на базе процессора XMOS.
Мой текущий источник на базе Edel USB Interface не поддерживает нативно DSD, только DXD или DoP.
# накидал я тут терминов…
# я снова не буду описывать как передается DSD поверх I2S – это есть в сети и даташитах.
# что такое DoP и с чем его едят – тоже хорошо разжевано.

Моя проблема на тот момент – отсутствие источника USB to PCM/DSD. И я его нашел и купил – это Audiophonics XMOS USB interface.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

Выбрал я его по следующим критериям: заявлена поддержка DSD на тех же ногах, что и у АК4399, то есть не потребуется мультиплексирование или отдельный разъем, поддержка внешнего тактирования, а также параллельная работа SPDIF выхода в режиме РСМ.

Минус только один – полное отсутствие какой-либо документации. Только надписи на плате и email производителя.
В общем к моменту приезда этой платы у меня был готов ЦАП с возможностью работы в хардварном режиме, а также с переключением в софтварный режим для конфигурации по SPI.

Списавшись с производителем, я все же разузнал, что и как надо правильно подключить к плате и как она должна работать. Вывел звук в режиме РСМ и мощное «ПШШШШШШШ» в режиме DSD.

Плата немного «допилена» по рекомендации производителя для приема внешнего MCLK от ЦАП — потому как они сами этот момент не проверяли, но в спецификации заявили.
Все это оформлено в отдельный корпус и с платы выведены нужные выходы для получения автономного источника.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

Осталось дело за малым – программирование.
Мой товарищ- программист был занят по работе, поэтому весь процесс запуска прошел мимо него стороной.

Но собирать пыль очередному ЦАП на моем столе я не мог позволить – поэтому начал доставать Программиста:
 — Ну что, какой мне контроллер купить? В чем будем будешь программить? Мне же надо развести плату под девайс?
 — У меня есть «ардуина»… Мега там какая-то, не помню, дома гляну – сказал Программист, и на два дня уехал по рабочим делам.
 — Офигеть — сказал я, и на весь день погрузился в изучение матчасти.

Что такое «эта ваша ардуина» — я слышал, но не видел и не знал. Изучение матчасти немного прояснило ситуацию.
Но не до конца. Вариантов «ардуин» было так много, что я сначала просто не знал, за что схватиться. Во первых, никто и нигде не рассказывал, будет ли контроллер работать вне платы. Как залить этот самый «скетч» в чистый контроллер?

Ситуация стала меня напрягать все сильнее. Даже если мы запрограммим ее, то ставить большую отладочную плату внутрь ЦАП мне не улыбалось – просто не было места, разве что платы «мини», но и хотелось сделать свою плату под свою задачу.
Пинком под зад в выборе платы стала фраза Программиста:
 — Заказывай ардуину в нете, у меня моя чего-то не шьется, загрузчик слетел похоже…
 — Да, «Камазы» с водкой переворачиваются на нашей улице ежедневно, празднику нет конца – только и смог промолвить я в ответ.

Это еще ждать месяц, потом месяц будем программить такими темпами – короче слой пыли на новом ЦАП придется сметать лопатой. Будем разбираться своими силами или разбирать ЦАП. В общем поехал я в магазин наш местный на предмет приобретения «ардуины». Очень уж свербило и чесалось в одном месте.

И вот тут мне повезло. Мало того, что они были в магазине в наличии, так еще и можно было повыбирать. Встав в позу красной девицы на шоппинге, и игнорируя предложения продавца мне помочь (чем мне можно помочь, если я не знаю, что я хочу?), я тупил у витрины и понимал – надо принять решение! Вот вам хорошо это все читать, а мне было не весело!

Выбор пал на «Arduino UNO» на базе ATMega328 в корпусе DIP! В сокете моем любимом… Я уже тогда догадывался, что именно сокет спасет отца русской демократии. Не зря же он там установлен то?
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

На следующий день я задал вопрос монстру программирования:
 — Ну что, я пробую SPI подключить?
 — Не работает SPI на ардуине! Я пробовал! Пока не написал топорно перебором кода, не заработало – Программист был категоричен… Тут я добавлю, что он что-то там программил для SPI, поэтому слова его для меня были ударом по почкам.
 — Завтра заеду к тебе – попробуем.

Ага, это до завтра я не буду спать… И есть… И, возможно, даже пить — в ожидании чуда? Что мне нужно именно SPI, я уже понял, изучая матчасть по запросу «Arduino+SPI». Но почему оно не работает то?
Хорошо, у меня есть плата Arduino, есть готовый к бою ЦАП, есть поддержка DSD.

И вот в этот момент, как правило, происходит тот самый пинок, что ты даешь сам себе. Это смесь стыда за свою тупизну, обиды за себя и возмущения «почему я не смогу-то?»


Сам по себе процесс обмена данными не сложный и красиво разрисован в даташите:
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

Беру из примеров код инициализации SPI протокола, подключаю плату к компу, ставлю на стол осциллограф и начинаю программировать.
Сам по себе обмен по SPI подразумевает двунаправленную передачу данных. Если контроллер выдает данные, а устройство принимает их, то используется вывод контроллера MOSI — Master Output Slave Input. При чтении с устройства — MISO — Master Input Slave Output. АК4399 не поддерживает чтение — только запись.
Так же нужно выбрать, какой вывод будет отвечать за включение режима программирования — так называемый Slave Select. У АК4399 — это CSN.
По умолчанию у Arduino это вывод 10 (SS).

В общем соединить Arduino → AK4399 нужно так:
10 (SS) → (6)CSN
11 (MOSI) → (9)CDTI
13 (SCK) → (8)CCLK
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino


Структура самого файла программы — «скетча» — тоже довольно проста. Сначала идет описание всех констант, библиотек, переменных, выводов и вводов. Все что нужно для инициализации системы.
Следом идет секция void setup {}.
В ней мы описываем режимы работы выходов, входов, флаги и константы, устанавливаемые при старте контроллера.
И главная секция void loop {}
Здесь размещается основной код. То, что исполняет контроллер в процессе работы. Из названия видно, что программа крутится в цикле.
Код оказался не сложным.

Начало.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

Я решил не выходить за рамки примеров и обозначил данные, которые надо передать по SPI в явном виде, то есть в двоичном. «B» — binary. Так мне самому понятнее. Можно указать и шестнадцатеричный —, но склад ума не позволяет сходу переводить в уме форматы.
Если глянуть в даташит на АК4399, то видно, что в посылке идет сначала адрес, потом сами данные регистров.
Казалось бы в чем проблема — передавай 0010000000000111 и будет счастье.
Но контроллер может передать одной командой только 8 бит. Чтобы получить 16, нужно посылку делать из двух частей, и посылать эти части одну за другой. Сначала адрес, потом данные.

Продолжение.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

Здесь описана секция setup.
Определяем пины. Нумерация как на плате Arduino.
Нога «0», например, конфигурируется как вход, на котором меняется логическое состояние от типа потока от источника- DSD или PCM.
Ноги «10,11,13» отданы под SPI, нога «12» — reset для ЦАП.
Далее идут режимы SPI.
SPI_MODE — режим передачи. Всего их 4. Отличия расписаны в документации.
MSBFIRST — порядок передачи бит.
SPI_CLOCK_DIV — скорость передачи. Значение определяется делением тактовой частоты на коэффициент (здесь «128» — самое медленное)

Продолжение.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

Здесь сам процесс записи, начинается с SPI.begin (). Затем проверяется состояние входа «0» и происходит отправка той или иной посылки в ЦАП.
Подключаю осциллограф на 10 и 11 ногу ардуины.

То что я увидел на экране после загрузке «скетча» оказалось именно таким SPI, как нарисовано в даташите по АК4399.

Теперь перевожу АК4399 в режим serial. В таком виде по умолчанию она работает в режиме 24bit MSB justified, а это немного не подходит для моего режима 24bit I2S, что выдает мой источник. Ну да, звук есть, но с треском и шипением. Включаю «ардуину». Щелчок в наушниках и следом чистый звук!
YES!!! АК4399 явно отреагировала на мою посылку и переключилась в режим I2S!
Я себя представил в тот момент великим программистом! Чуть со стула не свалился от счастья!

А как там режим DSD. Это же самое интересное! Меняю тип вывода в настройках foobar2000, запускаю проигрывание. Источник переключается в режим DSD. Мощное «ПШШШШ» после включения ЦАП говорит о том, что поток дошел до ЦАП, но он его не понимает. Надо его перевести в DSD mode. Включаю «ардуину» — щелк, и голос Алана Парсона из наушников возвещает о моей победе над глупой железкой!
Да, время, деньги, силы потрачены не зря и что-то начало нарисовываться.

Теперь дело за малым – сделать так, чтоб контроллер менял режим по сигналу от источника. Для этого нужно код перенести в секцию void loop {}.
А она, как видно выше — у меня пустая…
Тупо перенести код туда не получилось, хоть компиляция и прошла успешно, но ожидаемой реакции ЦАП не было.
 — А ты в курсе, что я могуч? — Написал я сообщение Программисту – SPI то у меня работает!
 — Серьезно? Ну ты монстр! – он был явно удивлен.
 — Но дальше я туплю, без тебя не справлюсь.
 — Ладно, жди, завтра заеду.

Ну хорошо, результат уже есть, и пока я хожу по кругу, попробую, что еще может эта «ардуина». Подключил дисплей 16×2. Попробовал повыводить разные фразы и надписи. Работает.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

С тем обилием примеров в сети — это оказалось проще, чем SPI.

Тут же родилась идея, сделать уже не просто конфигуратор, а полноценный модуль управления ЦАП с селектором входов и индикацией режимов работы.
Блок-схема:
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

И я начал рисовать схему и плату. В этот момент я не был уверен, что ATMega сможет работать вне платы Arduino, но изучив документацию — все же рискнул. Просто как обычно выяснилось — никто таких задач себе не ставил — просто использовал готовую плату Arduino.

Схема модуля управления ЦАП с селектором входов и индикацией режимов работы

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

Идей сразу вылезло масса. Убрать галетник как селектор входов, индикация режимов само собой, и плюс к этому возможность измерения и выдачи на экран текущего значения частоты семплов для PCM и для DSD.
Я настолько сильно раскатал губу, что у меня закончились ноги у контроллера, заклинив намертво губозакаточный станок.

На схеме все ноги подписаны, IC2- конвертер уровней с 5В на 3,3В. Так как контроллер запитан от 5В, а в ЦАП питание мультиплексоров 3.3В — это просто необходимо.

Кварца на 16 МГц у меня не нашлось, ехать покупать было лень, зато нашлось несколько точных генераторов на 16.000000МГц, поэтому на схеме изображено два варианта. На плате тоже. Логические уровни для режимов PCM\DSD и Mute указаны возле соответствующих выводов.
Поискав в сети примеры измерения частоты, и поиграв с ними я понял, что в лоб эту задачу не решить. Через таймеры оно работает медленно, а через простой счет импульсов — большая погрешность.

Пока решив отложить это, я прикрутил кнопки и LED для переключения входов и индикации выходов. И сел в ожидании чуда, точнее приезда настоящего программиста.

Он, как и обещал, приехал на следующий день. Обвинив меня в некомпетентности обрушив на меня пару ведер нечистот, несмотря на мои заявления о «ламерстве», он сел рядом и мы стали анализировать то, что я наковырял.

Оказалось, что для выборочной работы SPI, в зависимости от состояния ноги выбора режима, надо ввести так называемые «флаги». Проверяя которые в цикле, контроллер будет выполнять только тот код, что соответствует этим флагам.

Итак, креатив попер!

Я буду давать небольшие пояснения.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

Ввели библиотеку для LCD дисплея. Добавили отдельно программирование режима MUTE. Ввели флаги. Здесь описание uint8_t простое число, которое присваивается каждому флагу. Флаги ввели для каждого режима работы, включая запись в дисплей. Но об этом ниже.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

Здесь описан setup. Вместе с описанием выводов здесь задаются значения всех флагов, которые будут выставлены при старте. Обратите внимание — DSDFlag и MUTEFlag у нас задан значением 2, так как мы не знаем, что будет на входах PCM\DSD и MUTE при старте, и после чтения состояния соответствующих входов — отработает нужная процедура далее по тексту.

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


Больше всего я переживал, что контроллер вне платы Arduino не захочет включаться и работать, но все мои опасения оказались напрасными!
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino


Осталось проверить работу кнопок.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino


А также корректную смену режимов.
Поделки начинающего цапостроителя, часть 18/1.  Рулим ЦАП АК4399 с помощью Arduino

И запихать девайс в корпус.
 — Ну, а где частотомер? — спросит пытливый читатель.

Эта часть проекта зависит не от меня, поэтому буду ждать программиста. Пока код занимает 10% от объема памяти контроллера, поэтому его можно долго и упорно «допиливать». Будем отлаживать на готовом проекте, благо ничего менять в схеме и в оформлении не потребуется. Только прошивка —, а ее можно модифицировать как угодно.

Итого

В заключении, чтобы повествование было полным, пару слов про звук.
Ну что продукция АКМ мне нравилась издавна, я уже говорил. Мне вообще нравится их инженерный подход к делу. Очень детальный даташит, грамотная распиновка выводов, за исключением выходов, в одном канале приходится все время перекрещивать выходы, хороший, не утомляющий звук.

Но про DSD говорить пока рано, очень мало контента, и тот, что доступен, является, как правило, ремастерингом уже выпущенных на CD альбомах, это, например, сразу слышно даже по шуму мастер-ленты в начале и конце композиции. Но зато современная музыка, записанная уже на современном оборудовании звучит конечно очень ярко и насыщенно, но судить о преимуществах и недостатках пока мне сложно — мало материала отслушано.
Но похоже за этим форматом есть какое-то будущее, а значит иметь его поддержку в своем ЦАП не помешает.

Файлы

Полный скетч программы и схема с платой здесь:
20-04-2016 Обновил архив с новым именем скетча.
Файловый сервис доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.


Ну, а пока на этом все.
Просьба тем кто «в теме» не пинать ногами — это мой первый самостоятельный проект на МК и первое за много лет серьезное программирование.

Продолжение последует.
С уважением, Алексей.

Об авторе

Алексей (AlexD)
Алматы, Казахстан
Родился 6 апреля 1972 года.
Хобби-радиоэлектроника.
Увлекся железом еще с раннего детства,чем доставлял немало хлопот родителям.
Не брали в радиокружок в 4 классе,т.к. в школе еще не преподавали физику (вот такие были правила).
Сейчас занимаюсь ремонтом и настройкой компьютеров,в свободное время что-нибудь паяю или собираю-разбираю:)
 

Понравилось? Палец вверх!

  • всего лайков: 119

20 апреля 2016 изменил Datagor. Обновил архив с новым именем скетча.

Поделись с друзьями!


Связанные материалы:


Kaspersky FREE. Бесплатная годовая лицензия для России, Белоруссии и Украины

Привет, друзья! Очередной подарок от kaspersky.ru — антивирус «Kaspersky FREE». Спасибо...

Блок управления вытяжным вентилятором. Наладка, результаты

Всем здоровья! Утюг починен. Хочу коротко отчитаться в проделанной работе и результатах...

Пусть всегда будет солнце!

Сегодня День Победы. Мы так долго живём без войны, что начали забывать, что это...

17/01 киберсубботник на портале

Привет, дрУги! В ближайщую субботу на нашем портале и в магазине будет...

Coil32 v9.0 - программа для расчета катушек индуктивности

Всем, кто занимался изготовлением (и ремонтом) приемников, передатчиков, акустических систем,...

Сэмплы гитарного комбоусилителя U-96

Как и обещал, записал пару сэмплов на скорую руку с моего комбика...

Библиотеки Diptrace +3D. Разъёмы PBS (розетки)

Продолжая тему библиотек для Diptrace, хочу предложить розетки однорядные PBS для пайки...

Toshiba - это хорошо! Новейший каталог 4Q2012

Предлагаю вниманию сограждан новейший каталог Toshiba Bipolar Power Transistors — 4 квартал...

Сделай сам станочек для намотки катушек: быстро и сердито (v.2.0)

Намотав несколько катушек я понял, что направлять провод, укладывать его если...

Датагорскiя Вѣдомости №1 (2012)

Здравствуйте, уважаемые сограждане-датагорцы и гости нашего электронного города! Спешу...

Transformer: программа расчета маломощного (до 500 Вт) силового трансформатора на

Предлагаю начинающим очень простую программулину для расчета силовых трансформаторов. Автор...

Датагорская Ярмарка электроники v.2 открылась!

Уважаемые граждане Датагории и гости нашего кибер-города! После обновления открылась...
<
  • Бонус
23 марта 2016 17:59

Ербол / erbol

  • Регистрация: 11.12.2014
  • Публикаций: 7
  • Комментариев: 58
 
  • 0
Добрый день, Алексей! Всегда с интересом читаю Ваши статьи. Рад, что приобщились к миру МК smile Спасибо за статью!

<
  • Подписчик
23 марта 2016 19:10

Андрей / 66Andy17

  • Регистрация: 3.04.2011
  • Публикаций: 2
  • Комментариев: 35
 
  • 0
Алексейб как всегда впереди планеты всей. Идея и конструкция просто великолепны.
Идея аналогичного применения ардуины давно сидит в голове. Однако дальше смены мигания диода с однократного на двукратное руки пока на дошли)))
В качестве совета хотел бы предложить использование ардуино нано. Его можно целиком впаять в плату или установить в панельку. И корректировать программу прям в процессе наладки. Да и стоит он почти как голый контроллер.

<
  • Подписчик
24 марта 2016 05:23

Сергей / micbsv

  • Регистрация: 21.12.2011
  • Публикаций: 0
  • Комментариев: 2
 
  • 0
Алексей, спасибо за очередное приключение!

По Вашему мнению, на какой из частей эпопеи можно остановиться, как на законченном устройстве чтобы наслаждаться музыкой через наушники?
А то ряд последних выглядит как серия экспериментов и улучшений :)

<
  • Гражданин
24 марта 2016 09:37

Алексей / AlexD

  • Регистрация: 21.11.2008
  • Публикаций: 44
  • Комментариев: 244
 
  • +2
Цитата: erbol
Добрый день, Алексей! Всегда с интересом читаю Ваши статьи. Рад, что приобщились к миру МК smile Спасибо за статью!
Спасибо, Ербол, за отзыв. От земляка вдвойне приятно! handshake

Цитата: 66Andy17
В качестве совета хотел бы предложить использование ардуино нано.
Я немного анонсирую. Будет и NANO, и STM32, и цветной графический TFT 320*240, и ПЛИС начального уровня. Нужно немного подождать - это первая часть эпопеи, начало, так сказать!

Цитата: micbsv
как на законченном устройстве чтобы наслаждаться музыкой через наушники?
Да все они законченные в той или иной мере. Просто когда сделаешь устройство, задумываешься- а ведь можно попробовать что-то улучшить или сделать иначе... И начинааааается.... smile

<
  • Подписчик
24 марта 2016 12:18

Игорь / StalKer-NightMan

  • Регистрация: 15.03.2012
  • Публикаций: 1
  • Комментариев: 84
 
  • 0
Спасибо, Алексей, очень добротная статья.

<
  • Гражданин
25 марта 2016 19:40

Марат / Злой

  • Регистрация: 20.01.2009
  • Публикаций: 0
  • Комментариев: 15
 
  • 0
Алексей, красиво и доходчиво.
А что не посмотрел на своих разработчиков, имею в виду продукцию Алексея Энергетика. У меня правда Болеро без ДСД (купил такую, хотя стоит с ДСД столько же).

<
  • Подписчик
26 марта 2016 02:41

Павел / Pavel-Pochivalov

  • Регистрация: 6.10.2013
  • Публикаций: 0
  • Комментариев: 5
 
  • 0
Читал взахлеб! Спасибо за очередную интересную статью! По поводу частотомера мое мнение - частотомер на atmega всегда дикий костыль. Не умеет эта микросхема быстро и качественно частоту мерить. Но это только мое мнение, возможно все получится, стоит только захотеть.

<
  • Гражданин
28 марта 2016 09:59

Алексей / AlexD

  • Регистрация: 21.11.2008
  • Публикаций: 44
  • Комментариев: 244
 
  • 0
Цитата: Злой
Алексей, красиво и доходчиво.
А что не посмотрел на своих разработчиков, имею в виду продукцию Алексея Энергетика. У меня правда Болеро без ДСД (купил такую, хотя стоит с ДСД столько же).

Самое интересное, Марат, что я про него совсем забыл. Читал ветку форума давно, еще когда он был в стадии разработки. Ну а когда приспичило - то просто напряг гугля на предмет XMOS+DSD smile

Цитата: Pavel-Pochivalov
Не умеет эта микросхема быстро и качественно частоту мерить. Но это только мое мнение, возможно все получится, стоит только захотеть.


Самое интересное, что даже STM32 c тактовой 72мгц не смог измерить в лоб с использованием прерывния для измерения частоту выше 800кгц. Любые измерения с отложенным выводом результата - пожалуйста, а в реалтайме никак. Может конечно если писать на ASM - то получится - но тут я пока пас...

Ну и конечно спасибо всем за отзывы! hi

<
  • Гражданин
31 марта 2016 22:20

Виктор / alchedat

  • Регистрация: 20.03.2009
  • Публикаций: 9
  • Комментариев: 57
 
  • 0
Маэстро ЦАПостроения!

<
  • Гражданин
19 апреля 2016 16:45

Артур / Artham

  • Регистрация: 25.01.2010
  • Публикаций: 0
  • Комментариев: 8
 
  • 0
Алексей, спасибо за очередную статью цикла, это как крутой блокбастер, сразу начинаешь ждать продолжения))). Купил на али ЦАП на AK4490 и как тут же в статье описано вместо DSD услышал мощное ПШШШШШШ.

Возникла мысль "прикрутить" описанное в статье устройство к моему ЦАПу.
Есть два вопроса:
1. Совпадают ли в смысле управления AK4399 и AK4490?
2. Не могу открыть Ваш скетч в среде Arduino 1.6.8, пишет "невозможно создать скетч", затем "ошибка при открытии скетча: путь к скетчу"

<
  • Гражданин
20 апреля 2016 15:42

Алексей / AlexD

  • Регистрация: 21.11.2008
  • Публикаций: 44
  • Комментариев: 244
 
  • +1
Цитата: Artham
1. Совпадают ли в смысле управления AK4399 и AK4490?

Немного не совпадают, но в следующей части будет про АК4490.
PCM\DSD точно переключится - адрес и данные в регистрах совпадают.
В целом они похожи, но АК4490 вариантов настроек побольше.
Цитата: Artham
2. Не могу открыть Ваш скетч в среде Arduino 1.6.8, пишет "невозможно создать скетч", затем "ошибка при открытии скетча: путь к скетчу"

Я не знаю с чем это связано, скачал архив, вытащил оттуда файл, сравнил с исходником - одинаков (исходник назван длинно и матерно), добавил _ к имени ( то есть скетч стал называться _AK4399.ino) и оболочка подхватила его номально. Попробуйте.

<
  • Гражданин
20 апреля 2016 16:05

Артур / Artham

  • Регистрация: 25.01.2010
  • Публикаций: 0
  • Комментариев: 8
 
  • 0
Цитата: AlexD
Я не знаю с чем это связано, скачал архив, вытащил оттуда файл, сравнил с исходником - одинаков (исходник назван длинно и матерно), добавил _ к имени ( то есть скетч стал называться _AK4399.ino) и оболочка подхватила его номально. Попробуйте.

Действительно, поменял название и открылся скетч. Теперь осталось дождаться следующей статьи цикла, хотя это очень сложно))).

<
  • Главный редактор
20 апреля 2016 18:56

Игорь Петрович Котов / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 261
  • Комментариев: 1599
 
  • 0
Очень странная реакция среды Arduino. Обновил архив с новым именем скетча.

<
  • Гражданин
19 июня 2016 17:37

Владимир / Vlad_B

  • Регистрация: 3.02.2009
  • Публикаций: 0
  • Комментариев: 15
 
  • 0
ага... а что тогда не взять 1620 с I2C ? для ардуино их море и всего двумя проводками...

<
  • Гражданин
31 октября 2016 00:27

Максим / Fox123

  • Регистрация: 4.03.2010
  • Публикаций: 0
  • Комментариев: 5
 
  • 0
Очень хочется продолжения, особенно про реализацию частотомера. Алексей, хотя бы намекните, удалось ли его реализовать на элементной базе, описанной в статье? Ибо готовлюсь к разработке "с нуля" на AK4495...

Информация
Вы не можете участвовать в комментировании. Вероятные причины:
— Администратор остановил комментирование этой статьи.
— Вы не авторизовались на сайте. Войдите с паролем.
— Вы не зарегистрированы у нас. Зарегистрируйтесь.
— Вы зарегистрированы, но имеете низкий уровень доступа. Получите полный доступ.