Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Зеркальное отображение SSD1309

Вт ноя 19, 2019 01:49:22

Всем привет!

Краткая предистория: Знакомый притащил 2 блатных радиоприёмника с дохлыми OLEDами, я в рамках своей осведомлённости давай шукать замену, как выяснилось - таких конкретно нигде несискать, продавцы посоветовали альтернативу, сверив датащиты по распиновкам, заказал, дорого!... но вскоре уяснил, что не в распиновке одной соль. Короче оригинальные на SSD1305, а мне втюхали SSD1309. Возврату не подлежит... сроки и тд.
Проблемма заключается в зеркальном отображении картинки, как видно на вложенных фото.
Рыскал долго в инете и датащит чуть-ли не назубок, всё сходится к тому, что-бы шить SSD1309, но я дуб-дубом в этой материи.
Была зацепка насчёт RES#, в датащите то-ли опечатка, то-ли я это так понял, мол если RES# на землю кинуть, то заинициализируется как SSD1305.
Посоветуйте как мне эту проблемку победить.

ps. : Есть Arduinka UNO... но навыков ноль... :(

Вот это радио: http://img.radiokot.ru/files/137555/21yyqffk9h.jpeg

Это плата с отпаяным конэктором и распиновкой: http://img.radiokot.ru/files/137555/21yykc641x.jpg


Датащиты вложены...
Вложения
SSD1309.pdf
Datasheet на SSD1309
(1.98 MiB) Скачиваний: 387
SSD1305.pdf
Datasheet на SSD1305
(2.17 MiB) Скачиваний: 320
WEO012864KWPP3N00F00.pdf
Datasheet на имеющийся в достатке на ssd1309
(645.64 KiB) Скачиваний: 305
WEX012864DWPP3N00000.pdf
Datasheet на оригинальный OLED на ssd1305
(864.95 KiB) Скачиваний: 265

Re: Зеркальное отображение SSD1309

Вт ноя 19, 2019 05:29:00

Привет!
Такие дисплеи бывают с "инвертированными" колонками на любом контроллере. Если я правильно понимаю, чип контроллера может стоять сверху или снизу (относительно изображения на экране, не знаю, как объяснить правильно). Перепайкой проводов, киданием ресета на землю это не лечится. Можно задать отражение картинки при инициализации дисплея. Для этого нужен логический анализатор и какой-нибудь микроконтроллер. Логическим анализатором читается последовательность команд инициализации дисплея. Если между инициализацией и передачей данных есть достаточная пауза, микроконтроллер ставится на 4 wire serial (SPI с data/command линией), читает трафик, находит последовательность инициализации, переключает пины в режим выхода, закидывает команду C0 (или C8). Если достаточной паузы нет, можно поставить микроконтроллер в разрыв интерфейса, 4 ноги читают, 4 пишут. Если передаётся C0 в процессе инициализации, заменять его на C8. Если не передаётся, добавить команду. Если инициализация происходит слишком часто, вставить дополнительную команду будет затруднительно. Ну, что-нибудь придумаете :)

Re: Зеркальное отображение SSD1309

Вт ноя 19, 2019 14:05:14

находит последовательность инициализации, переключает пины в режим выхода, закидывает команду C0 (или C8).
Как следует из приложенного мануала, команда "Set COM Output Scan Direction (C0h/C8h)" должна менять вертикальное направление сканирования. А у ТС-а с вертикальным как раз всё нормально. Хотя конечно идикатор в сём девайсе может быть установлен под углом 90 градусов и тогда эта команда подойдёт.
Но я бы лучше смотрел на команду "Set Memory Addressing Mode (20h)" или команду ремапа.

Если достаточной паузы нет, можно поставить микроконтроллер в разрыв интерфейса, 4 ноги читают, 4 пишут.
Что может быть затруднительно если SCLK достаточно высокая. Так как нужно будет успевать работать параллельно с двумя SPI, один из которых к тому-же - слэйв. Для начинающего без опыта это будет сложно. Имхо.

Re: Зеркальное отображение SSD1309

Вт ноя 19, 2019 15:47:18

Как следует из приложенного мануала, команда "Set COM Output Scan Direction (C0h/C8h)" должна менять вертикальное направление сканирования.
Точно, спасибо. Это я налажал, простите. Ремап столбцов делается командой A1.
Изображение Изображение
(сорри за бардак, я тут нимношка в ссылке живу четвёртый месяц, очень мало места и много проектов одновременно :)
Контроллер у дисплея на фоточках "точно такой же, только больше и другой" ;) но производитель тот же, и система команд очень похожа.
если SCLK достаточно высокая
да, я там ниже написал, что если будет много инициализаций, можно перестать успевать. В случае нормальной работы логика примерно такая: отслеживаем Data/Command, большую часть времени передаются данные, нам нет нужды в них вмешиваться - просто перекидываем их "с ноги на ногу". Девайсина старая, разработка промышленная, там экономят каждую копейку, так что микроконтроллер там наверняка слабенький, и частота 4wire вряд ли выше 10-ти МГц.

Re: Зеркальное отображение SSD1309

Вт ноя 19, 2019 16:27:14

(сорри за бардак, я тут нимношка в ссылке живу четвёртый месяц, очень мало места и много проектов одновременно :)
Это у Вас измеряемая температура с дискретностью до сотых отображается? А это реально нужно и в каких применениях? И какая точность?
А то сейчас в соседней ветке тут как раз баталии насчёт точности измерения температуры идут. 8)

Re: Зеркальное отображение SSD1309

Вт ноя 19, 2019 16:39:25

На SSD1309 мы делали радиоуправление тут - https://radiokot.ru/forum/viewtopic.php?f=28&t=159826

1- При инициализации SSD1309 нужно правильно выставить развёртку:

так:
SPDR=0xC8; while(!(SPSR & (1<<7))); // развертка сверху вниз. // SSD1309

или так:
SPDR=0xC0; while(!(SPSR & (1<<7))); // развертка снизу вверх. // SSD1309

2- Затем надо выставить развёртку:

так:
SPDR=0xA1; while(!(SPSR & (1<<7))); // развёртка слева направо (>>). // SSD1309

или так:
SPDR=(не помню); while(!(SPSR & (1<<7))); // развёртка справа налево (<<). // SSD1309

3- А ещё у ТС смещение на два пикселя. Что бы это исправить, я например сдвигаю курсор (в функции курсора):
Т.е. пишу адрес курсора со второго байта (Начальное 2):

SPDR=0b00000010; while(!(SPSR & (1<<7))); // X - адрес 0000xxxx Low (Начальное 2). // SSD1309

Тогда всё нормально.
:tea:

Re: Зеркальное отображение SSD1309

Вт ноя 19, 2019 23:37:57

Это у Вас измеряемая температура с дискретностью до сотых отображается? А это реально нужно и в каких применениях? И какая точность?
А то сейчас в соседней ветке тут как раз баталии насчёт точности измерения температуры идут. 8)
это показометр, реально девайс будет "безголовый", т.е. без пользовательского интерфейса вообще. Просто стало интересно проверить возможности сенсора. Сотые там, конечно, никакие. Но в десятых меряет хорошо. Насколько я могу судить, сравнивая с китайским четырёхканальным термометром на термопарах :) Т.е. десятые стабильно показывает, если от потоков воздуха закрыть.
Применение десятым оч. простое: везде, где нужно поддерживать температуру стабильной, от шага измерения зависит "вилка", в которой будет удерживаться температура. Т.е. если нужно поддерживать температуру в 30-40 градусов с точностью до двух-трёх градусов, десятые измерять прям очень желательно. В моём случае температуру и влажность воздуха нужно засовывать в датчик органических примесей. У него внутри проц, программка какая-то, он с информацией о температуре и влажности правильнее считает. Десятые и сотые там нафик не нужны - just for fun :)

Re: Зеркальное отображение SSD1309

Ср ноя 20, 2019 13:05:30

Всем спасибо.
Признаюсь для меня это тёмный лес - никогда еще не приходилось так вплотную связываться с микроконтролерами. Но общий смысл понял.
Думаю на выходных зацепить матрицу на ардуинку и с самых азов постигать этот мир.
Вчера наткнулся на польском форуме на якобы готовое решение похожей проблемы, но и тут без мало-мальского понятия для меня затруднительнльно будет повторить.

Вот ссылка: https://translate.googleusercontent.com ... 4Fnzsiz6rw

Кстати сфоткал шлейы матриц для сравнения, хотя врятли это имеет смысл :

http://img.radiokot.ru/files/137555/220m76dupm.jpg

http://img.radiokot.ru/files/137555/220m75l2ep.jpg

Re: Зеркальное отображение SSD1309

Ср ноя 20, 2019 13:51:23

Думаю на выходных зацепить матрицу на ардуинку и с самых азов постигать этот мир.
Самый простой способ исследования: поставить на линии CS, SCLK, MOSI переключатель, которым будете коммутировать эти сигналы или на штатный контроллер LCD или на свой МК. Изначально поставили его в положение "штатный контроллер", включили питание, на экране появилась картинка (перевёрнутая), переключили переключатель на свой МК и пробуете подавать с помощью него команды, которые советовали в предыдущих постах (по мануалу на контроллер LCD). Пока не получится перевернуть изображение. А дальше уже думать как то же самое встроить в штатную работу устройства.
Вряд-ли штатный контроллер подаёт команды инициализации в другое время кроме как сразу после включения питания. По-крайней мере я не вижу в этом необходимости. Но возможно что и подаёт - тогда будет сложнее.
Если команды инициализации подаются только один раз при вкл.питания, то доработка будет несложной: Через N секунд(миллисекунд) после подачи питания перекоммутировать указанные сигналы на свой МК, подать нужные корректирующие команды (установленные на этапе исследования), перекоммутировать сигналы обратно на штатный МК. Возможно, что нужно будет ещё как-то синхронизироваться с сигналом CS от штатного МК. В худшем случае штатный МК всё время держит CS в активном состоянии - тогда будут сложности с вклиниванием в интерфейс.

Re: Зеркальное отображение SSD1309

Ср ноя 20, 2019 16:38:46

Вчера наткнулся на польском форуме на якобы готовое решение похожей проблемы
это не "якобы", а вполне себе решение. Только случай не Ваш - у них параллельный интерфейс задействован для передачи данных. С параллельным интерфейсом всё просто: когда активен режим command, и на 8 и 6 проводниках параллельного интерфейса единицы, и на всех остальных нули, поднять 1-й вывод в единицу. Получается замена команды A0 на A1. У Вас используется для связи с дисплеем последовательный интерфейс. Можно, конечно, на паре счётчиков и триггеров замутить "исправление" A0 на A1. Но не факт, что у Вас в девайсе передаётся A0. Потому, что ремап по-умолчанию выключен. Проще микроконтроллер использовать, имхо.

Re: Зеркальное отображение SSD1309

Ср ноя 20, 2019 16:50:03

я вот че подумал тока не смейтесь -ставим за стеклом зеркало в внешней амалгамой под 45 а дисплей ложим с низу горизонтално
вот и все решение посилное ТС без перекодировки МК или правки кода прошифыки

Добавлено after 59 seconds:
была какато камера где так сделано и разверка шла справаналенво в матрасе

Re: Зеркальное отображение SSD1309

Ср ноя 20, 2019 23:06:06

Проще микроконтроллер использовать, имхо.


Пните пожайлуста в нужном направлении, раз уж за микроконтролер речь зашла, может были в истории уже подобные обсуждения. Я хоть на данном этапе не совсем всё вкуриваю, но пока я на этот уровень выйду, пройдут года. Тема то обширная, желательно в первую очередь проштудирить ту ветку, которая ведёт к скорейшему решению именно данной проблемеки.

musor писал(а):ставим за стеклом зеркало


...такое решение тоже рассматривалось, мол когда чёнить прочитать желаешь - подноси зеркальце. Восторга от такой идеи у камрада я не заметил. :)
А в корпусе свободного места совсем нет, упакован плотно.

Вот ссылка на способ замены OLEDа в данном устройствае:
http://alanwinstanley.squarespace.com/a ... splay.html

Re: Зеркальное отображение SSD1309

Чт ноя 21, 2019 03:13:37

Пните пожайлуста в нужном направлении, раз уж за микроконтролер речь зашла, может были в истории уже подобные обсуждения.
Не встречал. К сожалению, не могу задать направление, т.к. не понимаю, в какой точке Вы находитесь :) Давайте так: про замену команды при помощи простой логики (a-la 40xx) рассуждения понятны? Такой вариант Вы (теоретически :) смогли бы реализовать? Или "полный ноль, могу только разъём отключить, шлейф индикатора вынуть, новый вставить"?

Re: Зеркальное отображение SSD1309

Чт ноя 21, 2019 09:44:39

Или "полный ноль, могу только разъём отключить, шлейф индикатора вынуть, новый вставить"?


Вот именно так и обстоят дела. Схемку развести, вытравить...готовое решение шаг за шагом повторить. В аналоговам режиме короче.
Но интерес есть вникнуть глубже.

Re: Зеркальное отображение SSD1309

Чт ноя 21, 2019 15:10:19

Если целью ставить ремонт двух радеек, количество усилий, которое Вам предстоит потратить, слишком велико. Если цель в приобретении знаний - наверное, есть смысл ковыряться. Я бы начал с "оживления" дисплея под arduino, если уж оно у Вас есть. Скорее всего, с её помощью не получится сделать то, что нужно. Но разобраться с общими принципами - вполне.

Re: Зеркальное отображение SSD1309

Чт ноя 21, 2019 20:50:31

AAX писал(а):arduino, если уж оно у Вас есть.
AAX писал(а):с её помощью
ты, всё же определись, arduino это ОНО или ОНА...
а может, это вообще окажется ОН...

Re: Зеркальное отображение SSD1309

Чт ноя 21, 2019 23:25:33

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

Re: Зеркальное отображение SSD1309

Пт ноя 22, 2019 00:23:23

ты, всё же определись, arduino это ОНО или ОНА...
а может, это вообще окажется ОН...
я, вроде, определённо и без сомнений написал - оно. По правилам русского языка arduino, наверное, "он". Поскольку слово образовано от имени собственного царя Ардуин. А по сути - без сомнения "оно".
"Проблему скорей всего решить не получится, но зато получится увлекательно потратить время". :)))
и с пользой, главное, с пользой :)

Re: Зеркальное отображение SSD1309

Пт ноя 22, 2019 09:18:05

AAX писал(а):А по сути - без сомнения "оно".
а как же тогда быть
AAX писал(а):с её помощью
?
что-то твоя суть как-то быстро перетекла в "она"...

Re: Зеркальное отображение SSD1309

Пт ноя 22, 2019 13:43:48

вот не хотел - но ты спровоцировал :)
"Ардуино" это "отладочная плата", и я всегда говорю "она". "Оно" в первом случае употребил сознательно, в качестве эвфемизма к "это говно" :) имхо, тема пикирует в оффтопик, и с этим постом достигла дна :)
Ответить