Совместимый с AH-I6 модуль индикации для Amanero / XMOS на OLED индикаторе SSD1322
После публикации пользователем degaстатьи Вариант модуля индикации для Amanero на SSD1322 OLED модулеу меня появилось желание сделать на таком же дисплее устройство, совместимое по функциям с модулем индикации AH-I6, с такими же красивыми символами в стиле VFD. После покупкииндикатора он так и пролежал у меня без дела долгое время, пока пользователь ppyне заинтересовался «исходниками фонта» и не выложилв комментарияхрезультатысвоего труда по его воссозданию. Эти результаты, наряду с исходниками программы, приложенными к статье первым упомянутым автором,с некоторой дополнительной корректировкойя и взял за основу шрифта. Получился модуль индикации, совместимый по функциям с устройствами, описанными в статьяхПрограммная модернизация модуля индикации для «Аманеро» AH-I6иМодуль индикации для Аманеро на светодиодных буквенно-цифровых индикаторах HPDL-1414 (а с последним — и по физическому расположению интерфейсных разъёмов).Управление работой модуля индикации, как и прежде, осуществляется двумя кнопками (PW и FLT) или соответствующими клавишами на ИК пульте, работающем попротоколам Philips (RC5, RC6), NEC, JVC, Samsung или Sony. Для «обучения» модуля конкретному ИК пульту нужно одновременно зажать на 5 секундобе указанные кнопки.
Экран графического OLED дисплея SSD1322состоит из 256 x 64 пикселей, чтодаёт возможность программной реализации вывода достаточно крупных символов размерами 16 x 24 пикселей (примерно 5 x 7 мм) по 16 символов в 2 строки, аналогично обычным символьным индикаторам 1602 (LCD или OLED). Также по сравнению с последними окно для отображения информации имеет несколько больший размер (примерно 79 x 21 мм), что хорошо сочетаетсяс более «габаритными» конструкциями ЦАП линейкиAH-D16 Pro(AH-D17 Pro).
Изначально планировалось подключение дисплея к МК ATmega168 по шине SPI, и эту задачу удалось решить, но потом возникли проблемы. Дисплей нормально работал по шине SPI на частоте CLK/2, до тех пор, пока в код программы не была включена имеющаяся у меня универсальная библиотека для ИК обработки под микроконтроллеры Atmel, в своё время адаптированная мной от Ардуино — с ней начал проявляться какой-то конфликт с шиной SPI, приводящий к зависанию устройства. Я не стал дальше разбираться в причинах этого конфликта, и просто решил подключить индикатор по параллельному интерфейсу, обеспечивающему наивысшую скорость обмена данными, заменив МК на более дешёвый ATmega16 и с бóльшим количеством выводов. Так как дисплей работает по параллельному интерфейсу 8080, перемычки на его платепосле покупки перепаивать не придётся.
Благодаря тому, что экран дисплея графический, удалось реализовать ещё одну интересную возможность: каждый раз перед полным обновлением информации экрана (например, после включения, «просыпания» и т.п.) программа чередует режим вывода информации со смещением на один пиксель по горизонтали и вертикали, либо без такого смещения. Это внешне практически незаметно, однако, с учётом толщины формируемых символов в 1 пиксель (пунктирной линией), позволяет экономить ресурс экрана индикатора, так как засвеченные и погашенные пиксели при этом каждый раз чередуются.
Схема модуля индикации довольно проста и каких-либо особенностей не имеет:
Печатная плата модуля индикацииизначально имеет размеры 100 x 48 мм, и она может быть прикреплена к передней панели ЦАП на стойках соответствующей длины, например:
Однако, возможен вариант и другого крепления — на уголках к нижней панели. В этом случае перед монтажом элементов на плату можно самостоятельно обрезать сверху и снизу неё ровно по 7 мм — в этом случае размеры платы уменьшатся практически до размеров платы индикатора и составят 100 x 34 мм:
А крепёж платы собранного модуля может быть, например, таким:
После долгих колебаний и сомнений собираемый экземпляр платы модуля индикации я решил всё-таки укоротить по высоте, в результате получилось такое устройство:
Для крепления индикатора к плате модуля я использовал стойки М3 PCHSS-11, совместно с «ноутбучными» винтами М3 x 6 с диаметром шляпки 4,5 мм. Так как купленные стойки оказались на 0,1 мм короче заявленной высоты, перед установкой на плату разъёма индикатора J7 PBD-16 его пластиковое основание пришлось подточить снизу квадратным надфилем на указанную величину, чтобы плата индикатора не изогнулась после её прикручивания винтами. Можно также использовать аналогичные стойки М2.5 с соответствующими винтами. В качестве защитного стекла я приобрёл рекомендованныйrucrimсветлосерый фильтрND2 (с размерами примерно 96 x 84 x 2 мм).
Потребляемый модулем ток по линии питания +5В согласно даташита на индикатор не должен превышать 55 мА, и у меня он получился около 30 мА.
Имеются прошивки модуля индикации как для плат Amanero, так и для плат XMOS, причём поддерживаются и «старые синие» платы XMOS (Smpcb), и «новые зелёные» (Lusya), включая модули AH-TX1, выполненные на их основе (для последних используется прошивка, имеющая в названии XMOS_F-SWAP). В отдельном приватном вложении, доступном зарегистрированным пользователям, приведён фрагмент программына языке C в части управления индикатором SSD1322 по параллельному интерфейсу 8080, включая массив знакогенератора символов.
Для ЦАП AH-D19 Pro в приватном вложении добавлены специальные файлы прошивок модуля индикации с поддержкой трёх режимов ЦФ: Auto, Sharp, Slow. Прошивки сгенерированы для плат Amanero и «зелёной» платы XMOS (последняя соответствует также модулям USB транспорта серии AH-TX).
P.S. Фотографии экрана получились не очень удачными, с «размытыми» пикселями, видимо надо было фотографировать на большем расстоянии или с фильтром, и при другом освещении. Реально отдельные пиксели видно хорошо.
В приватном вложении я прикрепил gerber-файлы для самостоятельного заказа печатной платы (второй гербер-файл со словом «narrow» в его имени соответствует «узкой» плате 100 x 34 мм, без верхнего и нижнего полей — всё-таки такой вариант мне кажется более предпочтительным).
caleb 2 года назад #
Смещать на один пиксель дело нужное, у меня на паяльнике за год эксплуатации на его оледе уже прогары стали видны отчетливо.
StaryiNik 1 год назад #
Да, у дочки на одной домашней приблуде тоже явно прогары видны года за полтора Хотел ей на замену поискать и себе заодно на ЦАП взять, чтоб такой же был, как в теме, но посмотрел цену и кисло стало как-то
www.promelec.ru/product/352904
StaryiNik 1 год назад #
Pushok62 1 год назад #
На Али они сейчас по 1,5 т.р.
caleb 1 год назад #
Это ж какая находка для маркетолога! Красивый дисплей за нехилые бабки, который еще и менять нужно со временем!!!
Альтернативы ЖК просто нет, ну и пусть он не такой красивый, зато стоит значительно дешевле и служить будет десятилетиями.
dega 1 год назад #
Выгорают, таки да. Но, справедливости ради, не так активно как дешевые индикаторы 0.91 или 1.3 дюйма. На фото индикатор после полутора лет работы на 75% яркости. На макете за тоже время поменял 3 индикатора 0.91 ввиду тотального выгорания. Кстати с ЖК тоже можно найти интересные варианты. По случаю достались несколько индикаторов на контролере s1d15710 220х64. Вполне себе вариант- написал инициализацию, в подсветку поставил светодиоды ws2812b в формате 2020. Цвет подсветки на выбор.
rucrim 1 год назад #
Да какой там нынче чуть экономить в помойку приметив тусклый ЖК когда такой дизайн нам показывают -Zidoo Eversolo DAC Z8, творчество себе должно быть приятным и только в радость!
YPol 1 год назад #
Собрал плату индикации из статьи.
Какой файл прошивки, для работы с модулем AH-TX1 lite, собранным из новой зеленой донорской платы на XMOS308 применить?
9pixel 1 год назад #
Pushok62 1 год назад #
Файлы прошивки МК модуля индикации на SSD1322 для AH-TX1:
Эти прошивки работают с платами «AH-TX1» и «XMOS XU208» (на чипах U30880C10, U30870C10).
YPol 1 год назад #
Спасибо, а где они лежат? Дайте ссылку если не сложно.
В этой ветке
https://audiohobby.ru/articles/programmnaja-modern...
файлы с другими названиями только вижу.
Pushok62 1 год назад #
Во вложении в конце этой статьи архивный файл firmware-ah-i6-ssd1322.zip.
YPol 1 год назад #
Вот ведь, как всегда на самом видном месте и не разглядел :-) Благодарю.
YPol 1 год назад #
Прошил вчера контроллер, индикация работала с глюками через раз, думаю по причине того, что не правильно были установлены fuses. Пока разбирался ка их правильно установить, замучил атмегу до полной неопределяемости. :-( Ладно, есть еще одна в запасе, в понедельник попробую сделать все корректно. Правильно ли я понял информацию из текстового редми:
«С внешним кварцевым резонатором 8 МГц:
High: 0xD1 (SPIEN=0, EESAVE=0, BOOTSZ=00)
Low: 0x9D (CKSEL=1101, SUT=01, BODEN=0, BODLEVEL=1)»
Т.е. чип определяется прогой, я читаю значения на вкладке ффьюзез, чекбоксы должны быть выставлены так, чтобы значения HEX соответствовали D1 и 9D.
в строках хай и лоу битах, с учетом инверсии галочка соответствует «0». А в других чекбоксах ничего не трогать. Далее на вкладке программ, в разделе флеш выбираю файл прошивки, и жму программирование.
Так как на вкладке автоматического программирования, стоят обе галочки по умолчанию в позициях флеш и фьюзез, дожидаюсь окончания процесса.
Еще маленький вопросик, кварц на 8мГц нужен только для программирования атмеги, и в последующей работе контроллера не используется? Лень перекапывать даташиты на атмегу.
Pushok62 1 год назад #
Вообще fuse-биты всегда программируются отдельно. Сначала «прошиваются» они, а потом отдельной процедурой — собственно файл прошивки. Т.е. это не делается одновременно.
YPol 1 год назад #
Понял, спасибо, информация ценная.
YPol 1 год назад #
Поменял атмегу, новый прочитался авердудой, прочитались фьюзы установленные изначально. Выставил нужные в соответствии с ридми для внешнего кварца 8мГц, который естественно установлен на плате с конденсаторами по 20пф.
С внешним кварцевым резонатором 8 МГц:Low: 0x9D (CKSEL=1101, SUT=01, BODEN=0, BODLEVEL=1)High: 0xD1 (SPIEN=0, EESAVE=0, BOOTSZ=00)
жму программирование на вкладке фьюзез, пишет процесс ОК, контрольные суммы в хексах соответствуют. И все при попытке чтения, МК больше не определяется, и соответственно залить прошивку в него не могу :-(.
Питание на атмегу 3,3в со стабилизатора на плате индикации, на свистке USBASP перемычка питания снята. Атмеги у scarp брались. Чего не так не пойму.
Pushok62 1 год назад #
Да, странно. Могу предположить, что что-то с кварцевым резонатором. В этом случае лучше было бы запускаться без него, т.е. выбирать Fuse-биты для работы от встроенного RC-генератора. Надо поискать другой кварц, необязательно точно на 8 МГц, можно и с другой частотой, и «подвесить» его, чтобы МК заработал, и прописать Low Byte: 0x84 (CKSEL=0100, SUT=00, BODEN=0, BODLEVEL=1). Пока других мыслей нет.
YPol 1 год назад #
Поищу кварц другой, попробую. Есть на работе еще AS-4 с софтом к нему ASISP, для прошивок атмег, но то же то еще глюкавство. Переподключаться по питанию естественно пробовал, безрезультатно.
Pushok62 1 год назад #
Если ничего не получится, пришлите мне плату.
YPol 1 год назад #
Вот я олень, припаял кварц из тех что были под рукой, четырех-выводной смд, а у него два вывода по диагонали на корпус, и обычно на землю паяются. лишние контактные площадки удалил, перепаял. Все определилось и прошилось. Спасибо за помощь :-)
Pushok62 1 год назад #
:) Ну и отлично! Модуль заработал?
YPol 1 год назад #
Да, все работает без глюков, правда пока отдельно без AH-TX lite запускал и ИК приемник надо прикручивать, но это потом.
e_niknik 1 год назад #
Попробуйте после программирования атмеги сбросить её (просто переподключить её питание, раз на неё питание подается не с разъема программирования) и после этого снова её считывать .
Pushok62 1 год назад #
Вообще при программировании МК питание самого устройства можно не включать, достаточно питания +3,3В (+5В) непосредственно с программатора. Я так всегда программирую.
YPol 1 год назад #
Pushok62 1 год назад #
Всё вроде правильно по программированию. Изменяются только те биты, которые нужно изменить. А фьюзы типа RSTDISBL и SPIEN не надо трогать, если их изменить, МК может стать недоступен. После прошивки фьюзов можно запустить их верификацию или прочитать их, чтобы убедиться, что всё правильно.
Кварцевый резонатор нужен для работы, так точнее формируются временнЫе задержки. Если пульты определяются и работают нормально без кварца, то его можно не ставить. Обычно так и бывает. Если в МК прошиты фьюзы для работы с кварцем, то без него работать ничего не будет. Если прошиты фьюзы для работы без кварца, то установка кварца ни на что не повлияет.
Если кварц не запаян, а фьюзы установлены под кварц, то чтобы МК увиделся программатором, кварц можно временно привесить.
Если ваш МК не реагирует на программатор, значит какие-то фьюзы установлены не те. Я для таких случаев собрал себе устройство AVR Fuse Doctor, который восстанавливает нормальные фьюзы. Можете прислать свой МК, я его «вылечу», если он не убитый, конечно. И вышлю обратно, заодно и прошивку могу залить.
YPol 1 год назад #
Понял, спасибо. Да смысла нет его восстанавливать пока, больше возни на пересылки и потеря времени, в том числе и Вашего, а оно у нас дорого, спасибо :-) Да надеюсь разберусь. Вот чем мне нравятся STM-ы, их программированием не «убьешь», с ATMega всегда какие-нибудь заморочки :-).
Pushok62 1 год назад #
Обновил версию прошивки (V1.3) для поддержки DSD512, PCM705.6, PCM768 (для транспорта XingCore), проверили — работает, спасибоИгорю.
YPol 1 год назад #
Отлично, не бросаете поддержку своих устройств. Вообще, в XingCore завлена поддержка и PCM1536 DSD 1024, где брать контент только не понятно :-) Есть у меня такой XingCore, потом проверю обновленную прошивку на нем.
iggus 1 год назад #
Только AK4493 поддерживает максимум DSD512 и PCM768, все что выше отпадает для этого ЦАП. Поэтому хотелось реализовать все, на что способен данный ЦАП, хоть и контента такого мало.
iggus 1 год назад #
Мне очень понравился данный индикатор, и я наконец собрал свой экземпляр AH-D16 Pro с этим индикатором. Пока на макете, но все прекрасно работает. Транспорт у меня XingCore, поэтому совместно сВладимиром доработали прошивку индикатора для отображения высших режимов, поддерживаемых данным транспортом и AK4493S — DSD512, PCM705.6, PCM768. Большое ему спасибо за это!
fedy 9 месяцев назад #
Добрый вечер! Планирую поставить данный модуль индикации на AH-D19-PRO у которого 2 доступных переключаемых цифровых фильтра, а у этого модуля 4 варианта фильтра! Будут ли совместим AH-D19-PRO с этим модулем? Можно в прошивке убрать два лишних варианта фильтра ?
Pushok62 9 месяцев назад #
Здравствуйте! Боюсь, что изменить прошивку будет проблематично, писалось это всё давно, и «безболезненно» внести корректировки не получится, тем более, что проверить мне будет не на чем...
fedy 9 месяцев назад #
То есть, прошивку желательно изменить на два варианта фильтра ?
iggus 9 месяцев назад #
Если не менять прошивку, то на индикаторе будет отображаться лишних 2 режима фильтра, которых в Вашем ЦАПе нет. Вы же об этом сами и написали. А так подключить можно и все будет работать, но отображаемые режимы Sharp SD/Slow SD будут дублировать Sharp/Slow, т.е. будут лишними. И в режиме DSD фильтр будет не верно отображаться, хотя будет переключаться.
fedy 9 месяцев назад #
Оказывается, в этом ЦАПе можно вообще обойтись без кнопки выбора фильтра, а в DSD режиме изменяется не фильтр, а частота среза:
В начале февраля (1.02.2024) вышла новая прошивка для AH-D19, в которой были следующие изменения:
1) На контакт 1 — CONFIG, который ранее был зарезервирован, добавлена функция автоматического выбора ЦФ в зависимости от частоты дискретизации, для 44.1/48 — sharp, все что выше slow. Также добавлены еще мелкие оптимизации.
2) Для DSD режима теперь Контакт 3 выбирает частоту среза (PCM: уровень 0 — sharp / 1 — slow; DSD: уровень 0 — 39кГц / 1 — 78кГц)
iggus 9 месяцев назад #
Это все известно, но речь идет о корректном отображении режимов фильтра на индикаторе. Без изменения прошивки корректного отображения не будет. И «частота среза» это и есть фильтр:)
alex3 9 месяцев назад #
Исходники прошивки имеются? Если да, то всё возможно.
iggus 9 месяцев назад #
Естественно у авторов они имеются.
fedy 9 месяцев назад #
Можно попросить и переделать. Все, кто повторяет AH-D19 PRO будут благодарны.
Pushok62 9 месяцев назад #
Хорошо, попробую доработать, когда появится время. Нужно только конкретно описать, что требуется сделать, так как проверить результат доработок мне не на чем. Сделать всего два режима фильтра; какой контакт управления фильтром оставить, какое название фильтра выводить на разные уровни этого сигнала?
fedy 9 месяцев назад #
Думаю, лучше проконсультироваться c уважаемым Admin. Может быть, он планирует ещё что-нибудь добавить или изменить.
fedy 9 месяцев назад #
А если сделать три режима. Первый будет включать автоматический режим ЦФ (FLT: Auto), второй (FLT:sharp) и третий (FLT:slow). Как и раньше режимы будут листаться одной кнопкой.
YPol 9 месяцев назад #
Еще бы добавить полное гашение дисплея с кнопки и\или пульта, информация нужна в общем только в момент запуска фонограммы. ИМХО Чтобы не тратить ресурс ОЛЕДа и не отвлекать лишней информацией, его вполне можно гасить.
Pushok62 9 месяцев назад #
Наверное такая доработка будет слишком сложной, так как затрагивает алгоритм работы модуля в целом (необходимость программирования дополнительной клавиши ИК пульта и т.п.). А вот корректировка переключения режима и отображения фильтра, думаю, вполне реализуемая задача.
Pushok62 9 месяцев назад #
Сгенерировал пробнуюпрошивкудля платы AH-TX1 подЦАП AH-D19 Pro с тремя состояниями цифрового фильтра (режим Auto назначается при нулевом значении на пине 1 разъёма Config). У кого есть ЦАП AH-D19 Pro, просьба проверить работу модуля индикации. Если будет всё нормально, то сформирую прошивки для Amanero и приложу к статье.
fedy 9 месяцев назад #
Так быстро! Спасибо.
9pixel 9 месяцев назад #
Спасибо большое, Владимир!
fedy 8 месяцев назад #
Поменял прошивку, все работает
Pushok62 8 месяцев назад #
Спасибо, прикрепил к статье в приватном вложении прошивки модуля индикации под AH-D19-Pro для Amanero и зелёной XMOS = AH-TX1,2 (для старой «синей» платы XMOS делать не стал).