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, включая массив знакогенератора символов.

P.S. Фотографии экрана получились не очень удачными, с «размытыми» пикселями, видимо надо было фотографировать на большем расстоянии или с фильтром, и при другом освещении. Реально отдельные пиксели видно хорошо.

В приватном вложении я прикрепил gerber-файлы для самостоятельного заказа печатной платы (второй гербер-файл со словом «narrow» в его имени соответствует «узкой» плате 100 x 34 мм, без верхнего и нижнего полей — всё-таки такой вариант мне кажется более предпочтительным).

Вложение:
modul-indikacii-na-ssd1322.png 199 Кбскачан 77 раз
Вложение:
bom.xls 35 Кбскачан 74 раза
Вложение:
firmware-ah-i6-ssd1322.zip 73 Кбскачан 11 раз
+50
0
caleb caleb 9 месяцев назад #

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

0
StaryiNik StaryiNik 6 месяцев назад #

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

StaryiNik StaryiNik 6 месяцев назад #
Комментарий удален
0
Pushok62 Pushok62 6 месяцев назад #

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

0
caleb caleb 6 месяцев назад #

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

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

+1
dega dega 3 месяца назад #

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

0
rucrim rucrim 3 месяца назад #

Да какой там нынче чуть экономить в помойку приметив тусклый ЖК когда такой дизайн нам показывают - 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. Большое ему спасибо за это!