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

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

Внешне алгоритм работы модуля 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» в имени файла прошивки) и без автостарта. Также добавлена прошивка версии 2.3 — в ней исправлена ошибка отображения для частоты 176.4 (было пропущено слово kHz).

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

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

Вложение:
ah-i6-v2-3.zip 36 Кбскачан 45 раз
RSS
01:20
Спасибо за интересную статью и доведение модуля индикации до логического завершения. Работает как часики. Пульт NEC принят как родной. Индикатор с желтыми символами смотрится не в пример солиднее «синюшного».
18:35
Здравствуйте.У меня почему то не отображается dsd 512.Все остальные режимы есть.Конкретно не работает комбинация f3-1  f2-1 f1-0 f0-0 проверял без аманеро.Спасибо
18:57
Здравствуйте! Аманеро этот режим не поддерживает, поэтому в модуле индикации он не отображается — блокируется программно.
admin  
21:52

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

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

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

totka  
19:14

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

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

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

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

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

21:57
Да, на фото показано конечное состояние перемычек. У вас эти перемычки установлены правильно, должно работать.
20:54
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?
21:18
Hi! The display module works with any Atmega88, the main thing, it is correct to establish Fuse bits.
09:34

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.

09:38
I take the opportunity to ask, can they recover the blocked ATMOS?
10:03
blocked atmega 88
11:12
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?
12:33
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 ....
12:36
I forgot during the programming no error appeared, result ok
12:50
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.
12:56
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 ..
13:15
Too much contrast is bad, too, you 'll only see highlighted boxes, not information.
13:38
lowered contrast replaced LCD unfortunately as before, how can I check if the atware loaded signature atmega 88 is running? .
15:57
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.
19:22
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?
.
19:29
Поставьте в гугл-переводчике русский язык. Зачем нам английские опусы? Или обсуждайте в приватной беседе. Спасибо!
22:28

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

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

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

23:24

Алгоритм работы модуля индикации не зависит от наличия подключения 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), например, чтобы не сбивались программные настройки плеера в части выбранного устройства вывода при выключении ЦАП.

caleb  
21:44

В прошивку добавится отображение недостающих фильтров, которые есть в 4497 ? или там и так они уже есть ?

Для OLED очень бы не повредила функция сдвига изображения через какое-то время для увеличения срока службы, он всем красив но при работе все таки стареет в оличии от LCD. 

22:29

Модернизированная прошивка соответствует аппаратной части модуля индикации AH-I6, т.е. всего предусмотрено переключение 4-х режимов цифрового фильтра: Slow, Slow SD, Sharp, Sharp SD, для чего используется два сигнала управления, приходящих от модуля индикации на разъём CONFIG (Pin1 — «Slow bit» и Pin3 — «SD bit»). Для использования других режимов ЦФ в ЦАПе на AK4497 в первую очередь необходима их поддержка платой самого ЦАПа, включая наличие соответствующих сигналов управления. По всей видимости, других режимов ЦФ для ЦАП на AK4497 не будет.

Так как на плате модуля индикации AH-I6 не предусмотрено использование сигнала управления индикатором R/W (R/W всегда установлен равным 0, т.е. опрос сигнала готовности индикатора не осуществляется), то при работе с индикатором приходится использовать довольно большие программные задержки, чтобы могли нормально работать любые индикаторы, включая китайские ЖКИ (иначе на экране индикатора могут появляться «кракозябры»). По этой причине программная реализация сдвига информации на экране затруднена (отображение выводится слишком медленно), а новые варианты аппаратной реализации модуля AH-I6 и доработку его платы я не рассматривал. Как альтернативный вариант можно использовать модуль индикации на светодиодных буквенно-цифровых индикаторах, который обеспечивает и достаточную яркость, и долговечность.

lopuh  
03:02

Здравствуйте! Не получается  прошить микроконтроллер Atmega88-20U-TW, пробовал обе версии прошивок. В программе AVRDUDE на вкладке фьзов при аналогично проставленных галочках, как в статье — в extended fuses вместо F9 почему-то 01... Также выводило сообщение, что «возможно, установлены LOCK FUSE». Контроллер определяется нормально, но запись на него не происходит, 0 байт. Что не так делаю?

07:27
пробовать с внешним кварцем
09:39
ATmega88 из Чип и Дип попадаются с неправильно установленными Fuse-битами — под использование кварцевого резонатора. Поэтому чтобы оживить такой микроконтроллер, как правильно подсказывает nnnfnn, нужно «подвесить» к нему на момент программирования кварцевый резонатор.
lopuh  
10:30

Спасибо!

Из любопытства попробовал прошить контроллер прошивкой ЦАП v1.5. Удачно. Затем версией beta от модуля индикации из статьи admina- тоже получилось. Конфигурацию фьюзов при этом выставлял, как в статье по прошивке контроллера к ЦАП  (1 МГц??). Похоже, что-то неправильно делаю при прошивке с приведенной выше конфигурацией...

Будет ли работать beta версия прошивки из статьи admina с OLED «Winstar»: жёлтый WEH001602ALPP5N00001 ?

Или нужно «помучить» MK с кварцем?

10:49
Если микроконтроллер уже начал прошиваться, то кварцевый резонатор не нужен. Индикатор OLED с beta версией прошивки у меня не работал, но попробовать никто не мешает :)
lopuh  
10:56
С конфигурацией фьюзов, как в этой статье- МК  не все равно не прошивается. 0 байт записано. Уже после попробовал несколько раз. Что-то делаю не так... Перемычка J3 на программаторе должна стоять?
11:22
Странно, попробуйте с перемычкой. Попробуйте залить прошивку с теми fuse битами, с которыми прошивается, а потом установите нужные fuse биты. Но это странно. А какой тип МК у вас установлен в программаторе? Шестандцатиричные значения fuse битов соответствуют требуемым (F9, D7, E2)?
11:31
Не удивлюсь, если окажется, что микроконтроллер из Чип и Дип отказывается работать на частоте 8 МГц, а на частоте 1 МГц работает.
lopuh  
11:35

В программаторе стоит atmega8A -AU. Прошивку из этой статьи не смог залить и с той конфигурацией фьюзов, с которой получалось ставить другие прошивки.

Шеснадцатиричное значение в extended byte  выводит  01 вместо F9,  но при попытке записи в командной строке потом выводит F9.

Перемычка на программаторе, как правило стоит, но пробовал и без нее.

11:41
ATmega8A и ATmega88A  — это разные микроконтроллеры. Проверьте, чтобы у вас был выставлен именно ATmega88. 
caleb  
11:42

Лучше поменяйте контроллер на другой и пробуйте прошить. Очень на брак это похоже. Чипдип как китайцы , продают непонятно что. А этот чип на черный день .

Купленные мной 4 контроллера на Базе прошились без малейших проблем и танцев с бубном с первого раза. А купленные атмеги у китайцев, правда 168-20 которые, из 5штук  2шт выкинул.

lopuh  
11:44

Спасибо!

Вечером продолжу попытки...

11:50

Проверьте, какие сигнатуры вашего МК определяет программатор. Для этого нужно задать режим чтения Fuse битов и прокрутить выведенные сообщения, как показано на картинке:

Я сейчас проверил на своём экземпляре: сигнатуры 0x1e930a, что соответствует МК ATmega88. Что показывает у вас?

lopuh  
14:15
Просмотрел сохраненную командную строку: сигнатура такая же, как у вас.
14:28
Ну если и в программаторе выставлен ATmega88, то есть подозрение, что МК бракованный, прошивка должна нормально заливаться. А вы версию для ATmega88 загружаете?
lopuh  
14:48

Даже засомневался, стал проверять)) файл AH-I6_ATMega88_PowerOn_V2_2.hex,в программе выбран ATmega88.

Вечером подпаяю индикатор и попробую запустить с бета-версией прошивки. Если не заведется-скорее всего, заменю контроллер. Какая альтернатива может быть ЧиД ( практически все там покупаю)?

Комментарий удален
15:05
Раньше я брал в ЧиД ATmega88-PA, правда перепрошивать Fuse-биты у них приходилось с кварцевым резонатором. Потом работали нормально. И у них другая сигнатура, в программаторе можно его выбрать.
lopuh  
03:31
Запустил модуль индикации с бета-версией прошивки из статьи admina, пока не подключал к Аменерке и ЦАПу. Отображает варианты цифрового фильтра, последний запоминает. OLED дисплей от Винстара с этой прошивкой работает. Так что Atmega, скорее всего живая. Почему не захотела встать версия прошивки AH-I6_ATMega88_PowerOn_V2_2- не понятно.
lopuh  
01:53

Здравствуйте! Подскажите, пожалуйста, какие отличия в прошивке AH-I6_ATMega88_PowerOn_V2_2.hex модуля индикации от бета-версии?

В бета-версии прошивки несколько не понравились следующие моменты:

— при смене режимов ( и  не всегда?- треков) на короткое время промелькивает надпись : DAC is muted,  не очень приятно «мельтешение»; использую Apleer.

— при выключении компьютера раньше ЦАП-на экране остается отображаться информация о последнем используемом режиме, хотелось бы «stend by» ...

Может быть, были изменения в последующих версия прошивки?

07:56
Здравствуйте! Основное отличие новой версии — добавлена обработка ИК протоколов. В целом логика работы модуля и выводимые на экран сообщения остались прежними, но алгоритм работы немного скорректирован. Других версий прошивки пока нет. Надо попытаться найти причину того, что в МК не заливается новая прошивка (вероятно, причина в самом МК).
lopuh  
10:28
Все понял, спасибо! Вроде бы, в моем случае- без использования пультов,  и нет смысла упираться в установку новой прошивки... Кроме желания найти причину такого поведения МК))
13:53
+1
Добавил файл архива с прошивками версии 2.3 — в ней исправлена ошибка отображения для частоты 176.4 (было пропущено слово kHz).
22:50
+2
Спасибо за ваш труд!
Комментарий удален
lopuh  
12:04

У меня тоже такое было, но вроде бы успокоилось и не повторяется. Прошивка модуля индикации: бета-версия от admin-a. Похоже, общая особенность...

Комментарий удален
14:32

Интересное явление. Можно будет попробовать попозже (я сейчас не дома) прошивку с измененными временными задержками, специально под OLED.

14:45

На моем синем OLED, не наблюдал такого.

Комментарий удален
12:10

Вроде все правильно установлено, единственное, в чем сомнение — для возможности регулировки яркости по-моему должна быть установлена перемычка JV0 вместо JV.

Комментарий удален
11:40

Никак не могу запустить индикатор.

Горит верхняя строка с квадратиками. Плата индикатора никуда не подключена. Пробовал разные прошивки бета, 2.2, 2.3

Менял индикаторы — 3 разных типа и OLED и обычные. Все индикаторы проверены и работают на других устройствах. Пробовал включать BODLEVEL1. ATmega88PA куплена в chipdip.ru и остается только она. Но прошивается вроде без проблем, проходит верификацию и т.д.

Что еще можно посмотреть?

Комментарий удален
Комментарий удален
13:51 (отредактировано)

Если верхняя строка с квадратиками, значит индикатор не инициализируется. Нужно прозвонить все соединения выводов МК с выводами индикатора, может быть где-то обрыв или замыкание между соседними дорожками. BODLEVEL у МК надо включать только в том случае, если не используется MAX809 — вместе может глючить. Если всё в норме, то действительно остаётся только ATmega88, к сожалению были жалобы на них, что неадекватно могут работать. Можно попробовать на частоте 1 МГц, но при этом всё должно работать в 8 раз медленнее. Я как то недавно брал в Чип и Дип ATMega88V для других конструкций — он работал нормально при напряжении 2,5В и частоте 8 МГц.

00:46

Как оказалось МК не хочет работать от 3.3В хотя по паспорту должен сохранять работоспособность до 1.8В

Подал 5В сразу все заработало...

Не знаю, что теперь делать, либо менять МК либо поднять питание...

06:47

Если от 5 вольт заработал, то может быть пусть так и дальше работает?

14:33

Тут можно брать много кратно проверенные  ATMEGA88PA  

Комментарий удален
Комментарий удален