Программная модернизация модуля индикации для «Аманеро» AH-I6

Предлагаю модернизированный вариант прошивки модуля индикации AH-I6 для «Аманеро», используемого совместно с ЦАП AH-D6 (AH-D5).

Внешне алгоритм работы модуля AH-I6 практически не изменился. В новой прошивке удалось реализовать обработку нескольких ИК-протоколов путём адаптации соответствующих процедур из библиотеки «Ардуино» IRremote, Version 2.0.1 (June, 2015). Теперь прошивка для микроконтроллера (МК) ATmega88 поддерживает протоколы: NEC, JVC, Samsung, Sony, а для МК ATmega168 — дополнительно протоколы Philips (RC5, RC6) и пока непроверенные: AIWA, LG, SANYO, Mitsubishi, Denon, Whynter. Кроме того, прошивка позволяет использовать в модуле AH-I6 индикаторы OLED, имеющие по сравнению с ЖКИ повышенную контрастность, поэтому отображаемую на них информацию хорошо видно за тонированным защитным стеклом. 

При подсоединении микросхемы ИК приёмника к разъёму J6 модуля индикации теперь можно дистанционно управлять с пульта ИК программным включением и выключением ЦАП и переключением режима работы цифрового фильтра. В начальной версии прошивки «Beta» эти функции выполнялись только путём нажатия кнопок Pw (Power) и Flt (Filter), подключённых к разъёму J5, или с помощью отдельной приставки — эмулятора нажатия кнопок. В качестве ИК приёмника могут применяться: TSOP1738, TSOP31238, TSOP34838, VS1838, TSOP1736 и им подобные, работающие на частоте 36-38 кГц и при напряжении питания +5В, важно лишь перед подключением проверить цоколёвку конкретного приёмника в соответствии с его даташитом (распиновки бывают разные)!

У обоих типов МК программируются следующие Fuse-биты (МК теперь работают при тактовой частоте 8 МГц):

Таким образом, Fuse-биты для МК имеют значения:

  • High: 0xD7 (SPIEN=0, EESAVE=0)
  • Low: 0xE2 (CKSEL=0010, SUT=10)
  • Ext: 0xF9 (BOOTSZ=00)

Для «обучения» модуля индикации клавишам конкретного ИК пульта (конечно, из списка поддерживаемых протоколов) нужно одновременно нажать обе подсоединённые к модулю кнопки: Pw и Flt и удерживать их нажатыми в течение не менее 5 секунд, пока на экране не появится сообщение о входе в режим программирования. Сделать это можно, находясь в любом состоянии ЦАП, в том числе и отключённом программно.

После отпускания кнопок модуль индикации переходит в режим ожидания приёма последовательно двух команд от ИК пульта, соответствующих выбранным клавишам. Сначала должна быть нажата первая клавиша Pw, и, в случае успешного приёма её кода, выводится подтверждающее сообщение «ОК». После приёма и распознавания кода второй клавиши Flt также отобразится подтверждение «ОК», затем на экране появится сообщение «Saved...», режим программирования завершится с возвратом в то состояние модуля, из которого был осуществлён вход, а коды обеих нажатых клавиш сохранятся в EEPROM. Выбранные на ИК пульте клавиши должны быть разные — модуль не примет клавиши с одинаковыми кодами! Теперь можно сразу же проверить работу выбранных клавиш, нажимая их.

Процесс программирования клавиш ИК пульта можно прервать в любой момент нажатием на любую из двух кнопок, при  этом на экране появится сообщение «Canceled...», и коды клавиш ИК пульта, ранее сохранённые в EEPROM, останутся прежними. 

С прошивкой проверены модели OLED индикаторов «Winstar»: жёлтый WEH001602ALPP5N00001 и красный EH1602A (по всей видимости, не оригинальный, но нормально работающий, кроме того, радует, что в продаже имеются различные цвета). У последнего на плате пришлось перепаивать 3 перемычки для перевода в параллельный режим (по аналогии с перемычками, установленными на первом индикаторе):

Интересно, что оба индикатора отлично функционируют как при +5В (это как раз наш случай), так и при 3,3В. Никаких доработок платы модуля индикации AH-I6 не требуется, просто не устанавливаются элементы управления подсветкой и контрастностью (R1, R2, R3, R4, Q1):

 

Единственное, что можно (но необязательно) сделать — это заземлить 4 младших неиспользуемых вывода данных индикатора. При использовании OLED индикатора его выводы 3, 15, 16 никуда не подключаются. Индикаторы OLED не имеют подсветки, и для гашения индикатора в программе просто делается очистка содержимого экрана. Можно также независимо от типа используемого индикатора отказаться от цепи сброса на микросхеме MAX809 (U3, R9) с программированием дополнительных Fuse-битов МК: BODLEVEL=101 (2,7V), при этом старший (High) набор Fuse-битов будет иметь значение 0xD5.

Вид описанных выше индикаторов с модулем индикации:

     

А так выглядит с тем же индикатором OLED готовый ЦАП AK4493 в чёрном корпусе за тонированным стеклом  (к сожалению, фото довольно тёмное, так как ЦАП установлен в нише, но зато хорошо видно индикатор):

Во вложении приведены 4 разных варианта прошивки для модуля индикации: для МК ATmega88 и ATmega168, с автостартом ЦАП после включения питания (с «PowerOn» в имени файла прошивки) и без автостарта.

Было бы хорошо протестировать с МК ATmega168 непроверенные ИК протоколы, и тогда их список, приведённый в начале статьи, можно будет сократить (а возможно придётся исключить неработающие протоколы).

P.S. На основе приведённой прошивки разработан также вариант модуля индикации на светодиодных буквенно-цифровых индикаторах HPDL-1414.

Приватное вложение: AH-I6_ATMega88_V2_2.zip ()

Приватное вложение: AH-I6_ATMega168_V2_2.zip ()

Приватное вложение: AH-I6_ATMega88_PowerOn_V2_2.zip ()

Приватное вложение: AH-I6_ATMega168_PowerOn_V2_2.zip ()

27 комментариев
Спасибо за интересную статью и доведение модуля индикации до логического завершения. Работает как часики. Пульт NEC принят как родной. Индикатор с желтыми символами смотрится не в пример солиднее «синюшного».
Здравствуйте.У меня почему то не отображается dsd 512.Все остальные режимы есть.Конкретно не работает комбинация f3-1  f2-1 f1-0 f0-0 проверял без аманеро.Спасибо
Здравствуйте! Аманеро этот режим не поддерживает, поэтому в модуле индикации он не отображается — блокируется программно.

В новых прошивках аманеро есть поддержка dsd512 под linux, но прошивки эти еще сырые и глючные.

Кроме этого для того чтобы цап D6 нормально отыграл DSD512 ему надо передать информацию о частоте дискретизации как это делается в модулях болеро (пины 5 и 9 CONTROL). Хотя я все равно dsd512 не смог вытащить и с них, только с XMOS.

Кроме этого в режиме авто определения частоты дискретизации для dsd  ЦАП сконфигурирован под dsd256 (для DSD режима по факту в чипе нет автоопределения), тогда он ее отыгрывает без артефактов как и младшие. В случае конфигурации в DSD512 наблюдаются артефакты на прочих.  

Да имхо нет смысла делать через аманеро dsd512. Слишком много ресурсов уходит на реалтайм кодирование. Оффлайн, кстати, тоже довольно сложное, софта очень мало. Да, фубар через sox (до 384) + затем asio proxy работает довольно шустро, но звук у него хуже HQP на dsd256. И не только дело в этом. Переместить проигрывание в другое место трека — ждешь кучу времени. Крайне раздражает, что хочется удалить этот плеер нафиг. Тем более, я как оболочку использую Roon с красивым и удобным (но требующим привыкания) интерфейсом, а в нем вывод уже на HQP, то есть еще больше тормозов при перемещении ползунка. Ну и в HQP важнее фильтр, чем 1 удваивание частоты.

А вот Beaglebone black с Ethernet'ом и закачанной на него ОС работает быстрее. Именно он, т.к. тактуется с ЦАПа без проблем. Есть несколько протоколов передачи, но они полностью покрывают все требования. Правда, конкретная реализация была на другом цапе, где нет нужды кварцы располагать поближе к чипу как здесь. С ним вообще dsd1024 можно попробовать сделать (если хватит 92мбитвс канала), но это когда AK сделает чип под 45/49 мастерклок, пока таких нет.

Здравствуйте. Можно ли приспособить новую прошивку под индикаторы Winstar серии VATN LCD. Живьём их не видел, думаю заказать, но думаю судя по фоткам — дешёвая альтернатива OLED, Например WH1602B- PLL синий на чёрном или -SLL белый на чёрном
Здравствуйте! Прошивка рассчитана под любые ЖКИ, поэтому по идее должна работать, было бы интересно проверить. Надо только посмотреть, подходят ли эти индикаторы по установочным размерам . 
По поводу МК, вы были правы, взял в ЧИП и ДИП Atmega 168 20AU, не прошивается, решил подать на выводы 6, 7, напрямую кварц 4 Мгц или с генератора, вариант с кварцем прошел, МК запрограммировался, надо быть осторожным при покупке в этом магазине.

Оставлять как есть пресеты на моём китайчонке?

Из текста понял,что на фото уже конечное положение. Вроде соответствует винстаровкому.

Да, на фото показано конечное состояние перемычек. У вас эти перемычки установлены правильно, должно работать.
Hi, I'm starting to mount the dac mk3, I'm encountering some problems with the display maybe atmega 88ua not suitable for this itulizzo?
Should I take atemega 88p 20au? if those distributed by muser are okay?
Hi! The display module works with any Atmega88, the main thing, it is correct to establish Fuse bits.

before I understand little or nothing of the programming, what is not clear while setting the fuse exstende as the image you moved does not result with the same hexadecimal value, this image shows my situation.

 

I take the opportunity to ask, can they recover the blocked ATMOS?
blocked atmega 88
Most likely your Atmega88 is not locked — the locked microcontroller could not read or write any Fuse bits. Why the value of Extended bits is not displayed correctly, I don't understand it. In fact, it is these bits that do not affect the operation of the display module. Is it normal to record the firmware in the Atmega88 without errors? What is the failure of your display module? Could you have a faulty LCD or not have the contrast set by the potentiometer?
Indeed I apologize for my bad English, with some difficulty I read the blog with a Russian Italian translator.

Let me explain better, the current 88 montanto I think works regularly since there were no errors during the programming, as you can see in the image I can read the values of the spindles, instead others are later proofs are blocked .... the contrast seems to me affixed , adjusting the voltage I see rectangles, instead the display I did not use oled in its place I believe a 1602 lcd compatible. After programming I display this.
First one line later as you can see ....
I forgot during the programming no error appeared, result ok
Most likely your ATmega88 works normally. The program works so that if DAC is not active (Standby mode), then the lcd screen is cleaned in 10 seconds and you on it is mute nothing will see. Try to regulate contrast, and every time after that anew to give power on the device that on it messages were visible. It seems to me that adjustment of contrast at you is established not correctly.
Currently the display is connected only with amanero, if I understand correctly the operation should display the information.
I confirm in fact the contasto is not perfectly regulated, left a little high to see better any information ..
Too much contrast is bad, too, you 'll only see highlighted boxes, not information.
lowered contrast replaced LCD unfortunately as before, how can I check if the atware loaded signature atmega 88 is running? .
Try intermediate positions of the regulator of contrast at turning on of the device. It is possible also to try to write an old version in ATmega88.
You mean earlier than this AH-I6_ATMega88_V2_2.zip

Can I download it afterwards?

However I thought I would try at the base of Q1, if I understand correctly the inactive display turns off after 10 seconds, so if between ignition and after some time I don't measure a variation with a lot of probability the firmaware with this my atmega 88 doesn't go well or am I doing something wrong?
.
Поставьте в гугл-переводчике русский язык. Зачем нам английские опусы? Или обсуждайте в приватной беседе. Спасибо!

Какой алгоритм работы модуля не подключенного к даку.

Через 10 секунд пишет dac muted, bye bye.

Какой сигнал  нужен чтобы модуль не выключался.

Алгоритм работы модуля индикации не зависит от наличия подключения DAC. Анализируются сигналы от модуля Amanero (Mute, DSD, F0..F3). В частности, если действует сигнал «Mute» (PB1), то через 10 секунд модуль индикации переходит в режим «Standby». Просыпается модуль индикации при любых изменениях входных сигналов, например, в случае начала воспроизведения, а также при нажатии на кнопки или при поступлении команд с ИК пульта. Выходной сигнал модуля индикации Connect (PD6) служит для активации ЦАП, а сигналы «Slow/Sharp» (PD0) и «Short Delay» (PD1) управляют переключением ЦФ (кнопкой или с ИК пульта). Нажатие на кнопку «Power» программно включает и выключает модуль индикации («Power On/Off»). В выключенном состоянии модуль индикации реагирует только на команду включения кнопкой или с ИК пульта. Для включения и выключения ЦАП лично мне удобнее использовать обычный выключатель, обесточивающий весь ЦАП. Для этой цели я предусмотрел вариант прошивки, в которой программное включение модуля индикации происходит автоматически сразу после подачи питания. Режим программного выключения ЦАП «Power Off» может быть полезен в том случае, если для работы внешнего плеера / компьютера требуется постоянное подключение модуля Аманеро (если модуль Аманеро не запитывается от внешнего питания от USB), например, чтобы не сбивались программные настройки плеера в части выбранного устройства вывода при выключении ЦАП.

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.