Краткая предистория: Знакомый притащил 2 блатных радиоприёмника с дохлыми OLEDами, я в рамках своей осведомлённости давай шукать замену, как выяснилось - таких конкретно нигде несискать, продавцы посоветовали альтернативу, сверив датащиты по распиновкам, заказал, дорого!... но вскоре уяснил, что не в распиновке одной соль. Короче оригинальные на SSD1305, а мне втюхали SSD1309. Возврату не подлежит... сроки и тд. Проблемма заключается в зеркальном отображении картинки, как видно на вложенных фото. Рыскал долго в инете и датащит чуть-ли не назубок, всё сходится к тому, что-бы шить SSD1309, но я дуб-дубом в этой материи. Была зацепка насчёт RES#, в датащите то-ли опечатка, то-ли я это так понял, мол если RES# на землю кинуть, то заинициализируется как SSD1305. Посоветуйте как мне эту проблемку победить.
Привет! Такие дисплеи бывают с "инвертированными" колонками на любом контроллере. Если я правильно понимаю, чип контроллера может стоять сверху или снизу (относительно изображения на экране, не знаю, как объяснить правильно). Перепайкой проводов, киданием ресета на землю это не лечится. Можно задать отражение картинки при инициализации дисплея. Для этого нужен логический анализатор и какой-нибудь микроконтроллер. Логическим анализатором читается последовательность команд инициализации дисплея. Если между инициализацией и передачей данных есть достаточная пауза, микроконтроллер ставится на 4 wire serial (SPI с data/command линией), читает трафик, находит последовательность инициализации, переключает пины в режим выхода, закидывает команду C0 (или C8). Если достаточной паузы нет, можно поставить микроконтроллер в разрыв интерфейса, 4 ноги читают, 4 пишут. Если передаётся C0 в процессе инициализации, заменять его на C8. Если не передаётся, добавить команду. Если инициализация происходит слишком часто, вставить дополнительную команду будет затруднительно. Ну, что-нибудь придумаете
находит последовательность инициализации, переключает пины в режим выхода, закидывает команду C0 (или C8).
Как следует из приложенного мануала, команда "Set COM Output Scan Direction (C0h/C8h)" должна менять вертикальное направление сканирования. А у ТС-а с вертикальным как раз всё нормально. Хотя конечно идикатор в сём девайсе может быть установлен под углом 90 градусов и тогда эта команда подойдёт. Но я бы лучше смотрел на команду "Set Memory Addressing Mode (20h)" или команду ремапа.
Если достаточной паузы нет, можно поставить микроконтроллер в разрыв интерфейса, 4 ноги читают, 4 пишут.
Что может быть затруднительно если SCLK достаточно высокая. Так как нужно будет успевать работать параллельно с двумя SPI, один из которых к тому-же - слэйв. Для начинающего без опыта это будет сложно. Имхо.
Как следует из приложенного мануала, команда "Set COM Output Scan Direction (C0h/C8h)" должна менять вертикальное направление сканирования.
Точно, спасибо. Это я налажал, простите. Ремап столбцов делается командой A1. (сорри за бардак, я тут нимношка в ссылке живу четвёртый месяц, очень мало места и много проектов одновременно Контроллер у дисплея на фоточках "точно такой же, только больше и другой" но производитель тот же, и система команд очень похожа.
да, я там ниже написал, что если будет много инициализаций, можно перестать успевать. В случае нормальной работы логика примерно такая: отслеживаем Data/Command, большую часть времени передаются данные, нам нет нужды в них вмешиваться - просто перекидываем их "с ноги на ногу". Девайсина старая, разработка промышленная, там экономят каждую копейку, так что микроконтроллер там наверняка слабенький, и частота 4wire вряд ли выше 10-ти МГц.
(сорри за бардак, я тут нимношка в ссылке живу четвёртый месяц, очень мало места и много проектов одновременно
Это у Вас измеряемая температура с дискретностью до сотых отображается? А это реально нужно и в каких применениях? И какая точность? А то сейчас в соседней ветке тут как раз баталии насчёт точности измерения температуры идут.
или так: SPDR=(не помню); while(!(SPSR & (1<<7))); // развёртка справа налево (<<). // SSD1309
3- А ещё у ТС смещение на два пикселя. Что бы это исправить, я например сдвигаю курсор (в функции курсора): Т.е. пишу адрес курсора со второго байта (Начальное 2):
SPDR=0b00000010; while(!(SPSR & (1<<7))); // X - адрес 0000xxxx Low (Начальное 2). // SSD1309
Это у Вас измеряемая температура с дискретностью до сотых отображается? А это реально нужно и в каких применениях? И какая точность? А то сейчас в соседней ветке тут как раз баталии насчёт точности измерения температуры идут.
это показометр, реально девайс будет "безголовый", т.е. без пользовательского интерфейса вообще. Просто стало интересно проверить возможности сенсора. Сотые там, конечно, никакие. Но в десятых меряет хорошо. Насколько я могу судить, сравнивая с китайским четырёхканальным термометром на термопарах Т.е. десятые стабильно показывает, если от потоков воздуха закрыть. Применение десятым оч. простое: везде, где нужно поддерживать температуру стабильной, от шага измерения зависит "вилка", в которой будет удерживаться температура. Т.е. если нужно поддерживать температуру в 30-40 градусов с точностью до двух-трёх градусов, десятые измерять прям очень желательно. В моём случае температуру и влажность воздуха нужно засовывать в датчик органических примесей. У него внутри проц, программка какая-то, он с информацией о температуре и влажности правильнее считает. Десятые и сотые там нафик не нужны - just for fun
Всем спасибо. Признаюсь для меня это тёмный лес - никогда еще не приходилось так вплотную связываться с микроконтролерами. Но общий смысл понял. Думаю на выходных зацепить матрицу на ардуинку и с самых азов постигать этот мир. Вчера наткнулся на польском форуме на якобы готовое решение похожей проблемы, но и тут без мало-мальского понятия для меня затруднительнльно будет повторить.
Думаю на выходных зацепить матрицу на ардуинку и с самых азов постигать этот мир.
Самый простой способ исследования: поставить на линии CS, SCLK, MOSI переключатель, которым будете коммутировать эти сигналы или на штатный контроллер LCD или на свой МК. Изначально поставили его в положение "штатный контроллер", включили питание, на экране появилась картинка (перевёрнутая), переключили переключатель на свой МК и пробуете подавать с помощью него команды, которые советовали в предыдущих постах (по мануалу на контроллер LCD). Пока не получится перевернуть изображение. А дальше уже думать как то же самое встроить в штатную работу устройства. Вряд-ли штатный контроллер подаёт команды инициализации в другое время кроме как сразу после включения питания. По-крайней мере я не вижу в этом необходимости. Но возможно что и подаёт - тогда будет сложнее. Если команды инициализации подаются только один раз при вкл.питания, то доработка будет несложной: Через N секунд(миллисекунд) после подачи питания перекоммутировать указанные сигналы на свой МК, подать нужные корректирующие команды (установленные на этапе исследования), перекоммутировать сигналы обратно на штатный МК. Возможно, что нужно будет ещё как-то синхронизироваться с сигналом CS от штатного МК. В худшем случае штатный МК всё время держит CS в активном состоянии - тогда будут сложности с вклиниванием в интерфейс.
Вчера наткнулся на польском форуме на якобы готовое решение похожей проблемы
это не "якобы", а вполне себе решение. Только случай не Ваш - у них параллельный интерфейс задействован для передачи данных. С параллельным интерфейсом всё просто: когда активен режим command, и на 8 и 6 проводниках параллельного интерфейса единицы, и на всех остальных нули, поднять 1-й вывод в единицу. Получается замена команды A0 на A1. У Вас используется для связи с дисплеем последовательный интерфейс. Можно, конечно, на паре счётчиков и триггеров замутить "исправление" A0 на A1. Но не факт, что у Вас в девайсе передаётся A0. Потому, что ремап по-умолчанию выключен. Проще микроконтроллер использовать, имхо.
я вот че подумал тока не смейтесь -ставим за стеклом зеркало в внешней амалгамой под 45 а дисплей ложим с низу горизонтално вот и все решение посилное ТС без перекодировки МК или правки кода прошифыки
Добавлено after 59 seconds: была какато камера где так сделано и разверка шла справаналенво в матрасе
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Пните пожайлуста в нужном направлении, раз уж за микроконтролер речь зашла, может были в истории уже подобные обсуждения. Я хоть на данном этапе не совсем всё вкуриваю, но пока я на этот уровень выйду, пройдут года. Тема то обширная, желательно в первую очередь проштудирить ту ветку, которая ведёт к скорейшему решению именно данной проблемеки.
musor писал(а):
ставим за стеклом зеркало
...такое решение тоже рассматривалось, мол когда чёнить прочитать желаешь - подноси зеркальце. Восторга от такой идеи у камрада я не заметил. А в корпусе свободного места совсем нет, упакован плотно.
Пните пожайлуста в нужном направлении, раз уж за микроконтролер речь зашла, может были в истории уже подобные обсуждения.
Не встречал. К сожалению, не могу задать направление, т.к. не понимаю, в какой точке Вы находитесь Давайте так: про замену команды при помощи простой логики (a-la 40xx) рассуждения понятны? Такой вариант Вы (теоретически смогли бы реализовать? Или "полный ноль, могу только разъём отключить, шлейф индикатора вынуть, новый вставить"?
Или "полный ноль, могу только разъём отключить, шлейф индикатора вынуть, новый вставить"?
Вот именно так и обстоят дела. Схемку развести, вытравить...готовое решение шаг за шагом повторить. В аналоговам режиме короче. Но интерес есть вникнуть глубже.
Если целью ставить ремонт двух радеек, количество усилий, которое Вам предстоит потратить, слишком велико. Если цель в приобретении знаний - наверное, есть смысл ковыряться. Я бы начал с "оживления" дисплея под arduino, если уж оно у Вас есть. Скорее всего, с её помощью не получится сделать то, что нужно. Но разобраться с общими принципами - вполне.
ты, всё же определись, arduino это ОНО или ОНА... а может, это вообще окажется ОН...
я, вроде, определённо и без сомнений написал - оно. По правилам русского языка arduino, наверное, "он". Поскольку слово образовано от имени собственного царя Ардуин. А по сути - без сомнения "оно".
вот не хотел - но ты спровоцировал "Ардуино" это "отладочная плата", и я всегда говорю "она". "Оно" в первом случае употребил сознательно, в качестве эвфемизма к "это говно" имхо, тема пикирует в оффтопик, и с этим постом достигла дна
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения