audiohobby.ru audiohobby.ru

Совместимый с 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 мм, без верхнего и нижнего полей — всё-таки такой вариант мне кажется более предпочтительным).

Вложение:
modul-indikacii-na-ssd1322.png 199 Кбскачан 130 раз
Вложение:
bom.xls 35 Кбскачан 116 раз
Вложение:
firmware-ah-i6-ssd1322.zip 73 Кбскачан 86 раз
+55
0
caleb caleb 1 год назад #

Смещать на один пиксель дело нужное, у меня на паяльнике за год эксплуатации на его оледе уже прогары стали видны отчетливо. 

0
StaryiNik StaryiNik 1 год назад #

Да, у дочки на  одной домашней приблуде тоже явно прогары видны года за полтора Хотел ей на замену поискать и себе  заодно на ЦАП взять, чтоб такой же был, как в теме, но посмотрел цену и кисло стало как-то
www.promelec.ru/product/352904 

StaryiNik StaryiNik 1 год назад #
Комментарий удален
0
Pushok62 Pushok62 1 год назад #

На Али они сейчас по 1,5 т.р.

0
caleb caleb 1 год назад #

Это ж какая находка для маркетолога! Красивый дисплей за нехилые бабки, который еще и менять нужно со временем!!!

Альтернативы ЖК просто нет, ну и пусть он не такой красивый, зато стоит значительно дешевле и служить будет десятилетиями.

+1
dega dega 1 год назад #

Выгорают, таки да. Но, справедливости ради, не так активно как дешевые индикаторы 0.91 или 1.3 дюйма. На фото индикатор после полутора лет работы на 75% яркости. На макете за тоже время поменял 3 индикатора 0.91 ввиду тотального выгорания. Кстати с ЖК тоже можно найти интересные варианты. По случаю достались несколько индикаторов на контролере s1d15710 220х64. Вполне себе вариант- написал инициализацию, в подсветку поставил светодиоды ws2812b в формате 2020. Цвет подсветки на выбор.

0
rucrim rucrim 1 год назад #

Да какой там нынче чуть экономить в помойку приметив тусклый ЖК когда такой дизайн нам показывают - Zidoo Eversolo DAC Z8, творчество себе должно быть приятным и только в радость!

0
YPol YPol 1 год назад #

Собрал плату индикации из статьи. 

Какой файл прошивки, для работы с модулем AH-TX1 lite, собранным из новой зеленой донорской платы на XMOS308 применить?

9pixel 9pixel 1 год назад #
Комментарий удален
+1
Pushok62 Pushok62 1 год назад #

Файлы прошивки МК модуля индикации на SSD1322 для AH-TX1:

  • с автостартом при включении: AH-I6_XMOS_F-SWAP_SSD1322_PowerOn_V1_0.hex
  • без автостарта (включение кнопкой Power): AH-I6_XMOS_F-SWAP_SSD1322_V1_0.hex

Эти прошивки работают с платами «AH-TX1» и «XMOS XU208» (на чипах U30880C10, U30870C10).

0
YPol YPol 1 год назад #

Спасибо, а где они лежат?  Дайте ссылку если не сложно.

В этой ветке

https://audiohobby.ru/articles/programmnaja-modern...

файлы с другими названиями только вижу.

+1
Pushok62 Pushok62 1 год назад #

Во вложении в конце этой статьи архивный файл firmware-ah-i6-ssd1322.zip.

+1
YPol YPol 1 год назад #

Вот ведь, как всегда на самом видном месте и не разглядел :-) Благодарю.

0
YPol 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мГц нужен только для программирования атмеги, и в последующей работе контроллера не используется? Лень перекапывать даташиты на атмегу.

+1
Pushok62 Pushok62 1 год назад #

Вообще fuse-биты всегда программируются отдельно. Сначала «прошиваются» они, а потом отдельной процедурой — собственно файл прошивки. Т.е. это не делается одновременно.

0
YPol YPol 1 год назад #

Понял, спасибо, информация ценная.

0
YPol 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 брались. Чего не так не пойму.

+1
Pushok62 Pushok62 1 год назад #

Да, странно. Могу предположить, что что-то с кварцевым резонатором. В этом случае лучше было бы запускаться без него, т.е. выбирать Fuse-биты для работы от встроенного RC-генератора. Надо поискать другой кварц, необязательно точно на 8 МГц, можно и с другой частотой, и «подвесить» его, чтобы МК заработал, и прописать Low Byte: 0x84 (CKSEL=0100, SUT=00, BODEN=0, BODLEVEL=1). Пока других мыслей нет.

0
YPol YPol 1 год назад #

Поищу кварц другой, попробую. Есть на работе еще AS-4 с софтом к нему ASISP, для прошивок атмег, но то же то еще глюкавство. Переподключаться по питанию естественно пробовал, безрезультатно.

0
Pushok62 Pushok62 1 год назад #

Если ничего не получится, пришлите мне плату.

0
YPol YPol 1 год назад #

Вот я олень, припаял кварц из тех что были под рукой, четырех-выводной смд, а у него два вывода по диагонали на корпус, и обычно на землю паяются. лишние контактные площадки удалил, перепаял. Все определилось и прошилось. Спасибо за помощь :-)

0
Pushok62 Pushok62 1 год назад #

:) Ну и отлично! Модуль заработал?

+1
YPol YPol 1 год назад #

Да, все работает без глюков, правда пока отдельно без AH-TX lite запускал и ИК приемник надо прикручивать, но это потом.

0
e_niknik e_niknik 1 год назад #

Попробуйте после программирования атмеги сбросить её (просто переподключить её питание, раз на неё питание подается не с разъема программирования) и после этого снова её считывать .

0
Pushok62 Pushok62 1 год назад #

Вообще при программировании МК питание самого устройства можно не включать, достаточно питания +3,3В (+5В) непосредственно с программатора. Я так всегда программирую.

YPol YPol 1 год назад #
Комментарий удален
0
Pushok62 Pushok62 1 год назад #

Всё вроде правильно по программированию. Изменяются только те биты, которые нужно изменить. А фьюзы типа RSTDISBL и SPIEN не надо трогать, если их изменить, МК может стать недоступен. После прошивки фьюзов можно запустить их верификацию или прочитать их, чтобы убедиться, что всё правильно.

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

Если кварц не запаян, а фьюзы установлены под кварц, то чтобы МК увиделся программатором, кварц можно временно привесить.

Если ваш МК не реагирует на программатор, значит какие-то фьюзы установлены не те. Я для таких случаев собрал себе устройство AVR Fuse Doctor, который восстанавливает нормальные фьюзы. Можете прислать свой МК, я его «вылечу», если он не убитый, конечно. И вышлю обратно, заодно и прошивку могу залить.

0
YPol YPol 1 год назад #

Понял, спасибо. Да смысла нет его восстанавливать пока, больше возни на пересылки и потеря времени, в том числе и Вашего, а оно у нас дорого, спасибо :-) Да надеюсь разберусь. Вот чем мне нравятся STM-ы, их программированием не «убьешь», с ATMega всегда какие-нибудь заморочки :-). 

+2
Pushok62 Pushok62 1 год назад #

Обновил версию прошивки (V1.3) для поддержки DSD512, PCM705.6, PCM768 (для транспорта XingCore), проверили — работает, спасибо Игорю.

0
YPol YPol 1 год назад #

Отлично, не бросаете поддержку своих устройств. Вообще, в XingCore завлена поддержка и PCM1536  DSD 1024, где брать контент только не понятно :-) Есть у меня такой  XingCore, потом проверю обновленную прошивку на нем.

0
iggus iggus 1 год назад #

Только AK4493 поддерживает максимум DSD512 и PCM768, все что выше отпадает для этого ЦАП. Поэтому хотелось реализовать все, на что способен данный ЦАП, хоть и контента такого мало.

+3
iggus iggus 1 год назад #

Мне очень понравился данный индикатор, и я наконец собрал свой экземпляр AH-D16 Pro с этим индикатором. Пока на макете, но все прекрасно работает. Транспорт у меня XingCore, поэтому совместно с Владимиром доработали прошивку индикатора для отображения высших режимов, поддерживаемых данным транспортом и AK4493S — DSD512, PCM705.6, PCM768. Большое ему спасибо за это!

0
fedy fedy 8 месяцев назад #

Добрый вечер! Планирую поставить данный модуль индикации на AH-D19-PRO у которого 2 доступных переключаемых цифровых фильтра, а у этого модуля 4 варианта фильтра! Будут ли совместим AH-D19-PRO с этим модулем? Можно в прошивке убрать два лишних варианта фильтра ?

0
Pushok62 Pushok62 8 месяцев назад #

Здравствуйте! Боюсь, что изменить прошивку будет проблематично, писалось это всё давно, и «безболезненно» внести корректировки не получится, тем более, что проверить мне будет не на чем...

0
fedy fedy 8 месяцев назад #

То есть, прошивку желательно изменить на два варианта фильтра ?

+1
iggus iggus 8 месяцев назад #

Если не менять прошивку, то на индикаторе будет отображаться лишних 2 режима фильтра, которых в Вашем ЦАПе нет. Вы же об этом сами и написали. А так подключить можно и все будет работать, но отображаемые режимы Sharp SD/Slow SD будут дублировать Sharp/Slow, т.е. будут лишними. И в режиме DSD фильтр будет не верно отображаться, хотя будет переключаться.

0
fedy fedy 8 месяцев назад #

Оказывается, в этом ЦАПе можно вообще обойтись без кнопки выбора фильтра, а в 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кГц)

0
iggus iggus 8 месяцев назад #

Это все известно, но речь идет о корректном отображении режимов фильтра на индикаторе. Без изменения прошивки корректного отображения не будет. И «частота среза» это и есть фильтр:)

0
alex3 alex3 8 месяцев назад #

Исходники прошивки имеются? Если да, то всё возможно.

0
iggus iggus 8 месяцев назад #

Естественно у авторов они имеются.

+1
fedy fedy 8 месяцев назад #

Можно попросить и переделать. Все, кто повторяет AH-D19 PRO будут благодарны.


+2
Pushok62 Pushok62 8 месяцев назад #

Хорошо, попробую доработать, когда появится время. Нужно только конкретно описать, что требуется сделать, так как проверить результат доработок мне не на чем. Сделать всего два режима фильтра; какой контакт управления фильтром оставить, какое название фильтра выводить на разные уровни этого сигнала?

0
fedy fedy 8 месяцев назад #

Думаю, лучше проконсультироваться c уважаемым Admin. Может быть,  он планирует ещё что-нибудь добавить или изменить.

0
fedy fedy 8 месяцев назад #

А если сделать три режима. Первый будет включать автоматический режим ЦФ (FLT: Auto), второй (FLT:sharp) и третий (FLT:slow). Как и раньше режимы будут листаться одной кнопкой. 

0
YPol YPol 8 месяцев назад #

Еще бы добавить полное гашение дисплея с кнопки и\или пульта, информация нужна в общем только в момент запуска фонограммы. ИМХО Чтобы не тратить ресурс ОЛЕДа и не отвлекать лишней информацией, его вполне можно гасить.

+1
Pushok62 Pushok62 8 месяцев назад #

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

+5
Pushok62 Pushok62 8 месяцев назад #

Сгенерировал пробную прошивку для платы AH-TX1 под ЦАП AH-D19 Pro с тремя состояниями цифрового фильтра (режим Auto назначается при нулевом значении на пине 1 разъёма Config). У кого есть ЦАП AH-D19 Pro, просьба проверить работу модуля индикации. Если будет всё нормально, то сформирую прошивки для Amanero  и приложу к статье.

0
fedy fedy 8 месяцев назад #

Так быстро! Спасибо.

0
9pixel 9pixel 8 месяцев назад #

Спасибо большое, Владимир!

0
fedy fedy 7 месяцев назад #

Поменял прошивку, все работает

+2
Pushok62 Pushok62 6 месяцев назад #

Спасибо, прикрепил к статье в приватном вложении прошивки модуля индикации под AH-D19-Pro для Amanero и зелёной XMOS = AH-TX1,2 (для старой «синей» платы XMOS делать не стал).