тогда бы числа и по другой координате рядом встретилось
240 239 00 EF
320 319 01 3F
360 359 01 67
400 399 01 8F
432 431 01 AF
480 479 01 DF
640 639 02 7F
800 799 03 1F
еще один из вариантов , принудительно повыбиратьь иниты в библиотеках UTFT, adafruit , adafruit LG4535 , .... MCUfriend_kvb .
в UTFT и так вручную выбирать надо, предварительно в memorysaver.h закоментить все disable (для ардуины меги памяти хватит на все активированные иниты) , пробовать и старые и новые версии (в новых вырезана поддержка уже старых и редких контроллерв)
// попробуйте в читалке с поста #comment-410547 увеличить цикл с 255 до 600 , лог можно не выкладывать , просто посмотрите если что там дальше интересного , к примеру в регистрах около регистров 0x0200 ... 0x0213
что-то пока сомневаюсь что там UPD161710 , уж много чего не сходится.
croc19 , можете глянуть прошивку LG gm360 i ? Что там за контроллер . Нашел у себя такой дисплей . по фоткам в инете вроде похожи , мож и взаимозаменяемые . Только подпаять провода не легко будет , к такому мелкому разьему. Валерон , покажите фотку как вы подпаяли . У gm360i прямоугольный разъем с мелким шагом.
// пробовал поискать в инете у кого еще Horizontal RAM address 0x1A - не особо .
возможно надо подставлять у распростаненных контроллеров вместо 0x2A 0x2B 0x2C
Slider, спасибо за предоставленную инфу, многое уже видел. Т.к. я не программист, только как говорится балуюсь (опыта еще мало) я не смог для себя там что-то найти полезного. Сейчас уже вижу что-то есть.
slider пишет:
Валерон , покажите фотку как вы подпаяли . У gm360i прямоугольный разъем с мелким шагом.
У меня дисп от GS-290, но тоже такая хрень. Разъем я отпаял с мамки сотика и делал переходную плату. На плату заодно поставил контроллер подсветки, LDO на 2.9В и всякую мелочь. Фотку показать сейчас не могу - на работе. Если очень интересно то скину после 19.30.
Из форума на радиокоте: "...LS030B3UX05 с чипом uPD161710, название дисплея у меня на самой железной крышке, 3-й вывод соединен с землей...". На крышке дисплея надпись соответствует?
Из форума на радиокоте: "...LS030B3UX05 с чипом uPD161710, название дисплея у меня на самой железной крышке, 3-й вывод соединен с землей...". На крышке дисплея надпись соответствует?
У меня на крышке надпись 033h026829aqh. Инет по этому номеру молчит.
Тогда строчкой выше из того-же форума: "...IM300IBN1A с чипом R61509, название дисплея на шлейфе под железной крышкой, 3-й вывод соединен с шиной питания..." Есть возможность заглянуть под крышку?
Тогда строчкой выше из того-же форума: "...IM300IBN1A с чипом R61509, название дисплея на шлейфе под железной крышкой, 3-й вывод соединен с шиной питания..." Есть возможность заглянуть под крышку?
Я уже заглядывал под крышку. На шлейфе какой-то номер и интернет по нему тоже молчит. 3-вывод соединен с землей железно! Чип R61509 отпадает.
LG gm360 i все тоже самое, что и на GS-290. D54 в прошивках не находится.
Похоже контроллер PD161710.
Контроллер оказался D54E4PA7551. Инит прошел тот, который дал Slider. Спасибо ему. На экране появился шум, а вот залить его каким-нибудь цветом у меня не получается.
Спасибо croc19, это я видел из предыдущего поста. Так как опыта в програмировании у меня мало, то пока не получается. Вроде алгоритм рисовании линии понимаю, но в какой регистр что запмсывать пока не въезжаю. Если не трудно подскажи.
Уважаемые, подскажите кто в курсе, почему при заливке диспа одним цветом появляются другие цвета? Заливаю красным, появляется синия полоса во весь экран. Может быть в одном месте, может быть в нескольких местах, может быть на половину экрана. С другими цветами также. только с черным нормально.
Я не пишу для ардуины. Поэтому почитай как пишутся скетчи. Там все доступно.
Теперь попробую описать примерный алгоритм.
Сначала в SETUP обозначаешь, какие ноги как будут называться ( у тебя это в define) и в каком режиме будут работать -- pinMode(LCD_D0, OUTPUT); В принципе все ноги на цифровой выход.
Далее инициализация дисплея.
Дальше в LOOP . Пишешь координаты прямоугольника в регистры. Если весь экран, то начало по Х=0, конец Х=239 ,
начало по Y=0, конец по Y=399. И команду 0х03 . Затем цикл на 240*400=96000 , внутри которого пишешь
цвет ( это у тебя в программе есть ) .
Ну а дальше что душа пожелает.
Все подпрограммы с Read в урну, читать ничего не нужно. Контроллер ты знаешь.
croc19 я тоже не пишу для ардуино и не планирую. Програмированием занимаюсь от случая к случаю. В даный момент я просто хочу понять алгоритм програмирования диспов. Да и ардуино досталась на халяву, вот решил заюзать первый попавшийся дисп. Я в основном работаю с пиками. Ладно это все лирика.
Алгоритм понял, буду пробывать, спасибо.
Ксати функция чтения не мешает. Этот скетч рабочий вариант, правленный для моего диспа.
Блин, заливка правильная. Почему же полосы появляются другого цвета. Даже когда квадрат рисую на фоне, тоже полосы другого цвета в квадрате появляются.
Без второго подопытного диспа, скетч кажется норм.
Собрал за ночь эксперимент на макетке , дисплей от LG GM360i .
Да хорошо эта заливка работает , и это на 10ком резисторах.
Дисплей работает гораздо быстрее ардуины , поэтому попробовал ускорить этот код.
Заливка цветом:
22сек - изначально заливает
14сек - заменил на выдачу байта сразу в порт PORTA , а не по каждому пину.
10сек - убрал CS, RD
8сек - заменил медленные digitalWrite на быстрые битовые ( ускорение может быть до 20раз . из либы CyberLib.h )
или конструкциями из любой библиотек (adafruit, UTFT, ...)
Чтоб не использовать счетчик, заменил delayMicroseconds(2); после WR_Low; на еще один WR_Low; , чтоб добавить небольшую задержку , возможно это сказался завал импульса через 10ком резистор, надо пробовать как будет на преобразователях уровнях или 3.3в логике.
11 и 19 пины диспа (IF_mode IF1 IF0) пока ниуда не подключал, не экспериментировал с битностью, работает и так .
// да проскакивала синяя заливка, но это при попытках чрезмерно ускорить через заваливающие фронты 10ком резисторы. Возможно где то у вас не контакт в схеме или "залипуха" с припоя или флюса. М.б. из-за питания. Дисп от LG 360i запитал от 3.3в через 33 0м резистор и белый светодиод + светодиоды подсветки, в итоге на питание диспа идет 2,7в .
//// надо бы закинуть этот инит в либу ( adafruit, utft , mcufrieng_kvb ), и регистры рисования подменить. Тогда и проще рисовать будет. B библиотеках заливка должна осуществляться еще быстрее, т.к. изпользуется автоинкримент средствами контроллера дисплея, при ненадобности заново вводить цвет и координаты последующегося пикселя в строке.
slider с твоим скетчем что-то у меня заливается только четверть экрана, хотя заливка написана на весь экран. Может где небольшой косячок есть, найти не могу.
Если предположить что не так с чтением , то надо подключать по 16бит - дело верняк, чтение будет 100%.
Размах , и осцил не надо, достаточно померить мультиметром куда постоянно подается лог.1 Reset , RD .
питание ардуины 5.00в , на стабе 3.30в , через 10 Ом на белых светодиодах (1+~5подсветки) 2.80в , на пинах Reset , RD 3.40в (вольтметр высокоточный) , оно и понятно , в микросхемах же ставят защитные диоды на вывода, к + и - питания. Лог.1 5.0в идет через 10ком , на защитном диоде осело 0.6в , ушло на питание. (при наргеве и морозе будут немного другое напряжение на "стабилитроне") .
Если бы не поставил параллельно питанию диспа , белые светодиоды ограничивающие напряжение как стабилитроны, то питание 3.3в взятое с ардуины , взлетело бы выше 4.5 и спалило бы дисп, из-за много лог.1 через 10ком , пересиливающие потребности контроллера диспа на старте , когда еще инит ему не скормлен и внутренние преобразователи не запущены.
В даташитах иногда пишут , что напряжения на входах не должно превышать напряжение питания на 0.6в , оно и понятно , иначе пересилится питание контроллера и он скончается.
Валерон пишет:
slider, в крайнем скетче что ты скинул можно убрать двойные WR_Low; WR_Low; и оствить один и будет нормально работать.
Я поменял резисторы в преобразователе уровней. Поставил 680 и 1к и работает на ура.
Можно ли к скетчу как-нибудь прилепить шрифты из какой-нибудь библиотеки?
ну если 680 и 1к то хорошо тока хватит, а через 10к он слабый, даже если тыкнуться мультиметром или осциллографом после них ( WR, RS(CD) ) , уже дисп косячит , то другие цвета покажет , то типа битые пиксели. Вот и приходится ставить задержки.
Зачем лепить шрифты из либы? проще подменить в понравившейся либе, инит на свой , и номера регистров посредством которых идет рисование.
К примеру UTFT C:\Users\.....\Documents\Arduino\libraries\UTFT\tft_drivers\ili9325c
по аналогии с ILI9325 , названия регистров в setxy.h посмотреть с его даташита или в initlcd.h они расписаны. x1 x2 y1 y2 оставляем (либа заносит в них координаты, цвет, сдвигает для 8бит )
В initlcd.h забить данные со своего инита.
Ну а дальше как обычно.
распаковать в Arduino\libraries . Пример запустить UTFT\examples\Arduino (AVR)\UTFT_Demo_400x240
даташиты UPD161710.pdf UPD161704A.pdf (он по красивше цветастей про регистры, стр122) на всяк случай закинул их в UTFT\tft_drivers\ili9325c
setxy.h составил методом тыка , что то наобум , надо сильно вдумываться и экспериментировать чтоб сделать поуму , иногда от очередности очень сильно зависит. От старшего байта по Y(X) м.б. избавиться , поэспериментировать закомментить , ибо 240 не больше 255 . (это в другой координате 400пикс больше 255 , и используется старший байт) , как получилось здесь избавиться #comment-93736
Надо еще отзеркалить , для этого надо экспериментировать в initlcd.h , не все там регистры , смотреть даташиты , искать (scan , mirror ) хоть какие-то сходства в "родственниках" попавшегося контроллера. Увеличить частоту обновления экрана, еще бы.
!!! LCD_Write_COM_DATA(0x30,0x01); /* 0x81 Select the display-RAM data */ // 0x01 Зеркалит по горизонтали !!!
но буквы по прежнему наоборот , хотя уже на своих местах.
Есть подозрения , что это надо setxy.h правильно сделать. мож что croc19 подскажет. Как будто библиотека рисует букву наоборот.
и помнить , что в даташитах UPD... , регистры написали в десятичной системе , надо помнить переводить.
// на крайняк , попробуйте инит в старый Adafruit внедрить к похожему по рисованию ili9320 контроллеру. В споследних Adafruit , MCUfriend_kvb м.б. будет трудно разобраться.
код контроллера по даташиту должен лежать в 96 регистре и равен 1710.
хотя судя по по 10-12 регистрам у тебя читается разрешение экрана 240х400.
В общем геморно все это. Пробуй инициализацию от этого контроллера.
Либо пиши свой скетч для чтения регистров контроллера в 8 битном режиме.
код контроллера по даташиту должен лежать в 96 регистре и равен 1710
Это я в курсе. Но он там не "лежит".
хотя судя по по 10-12 регистрам у тебя читается разрешение экрана 240х400.
Про это тоже в курсе. Если не секрет как это вычисляется по коду в логе?
В общем геморно все это. Пробуй инициализацию от этого контроллера.
Почему геморно? Инит пробывал - глухо. Читалка 5.2 зажигала экран белым цветом только.
Либо пиши свой скетч для чтения регистров контроллера в 8 битном режиме.
Они уже написаны до этого. Если точно знать какой контроллер стоит (могут быть разные варианты), многие вопросы отпали бы.
0F = 240 0190 = 400 похоже на разрешение стекла.
тогда бы числа и по другой координате рядом встретилось
240 239 00 EF
320 319 01 3F
360 359 01 67
400 399 01 8F
432 431 01 AF
480 479 01 DF
640 639 02 7F
800 799 03 1F
еще один из вариантов , принудительно повыбиратьь иниты в библиотеках UTFT, adafruit , adafruit LG4535 , .... MCUfriend_kvb .
в UTFT и так вручную выбирать надо, предварительно в memorysaver.h закоментить все disable (для ардуины меги памяти хватит на все активированные иниты) , пробовать и старые и новые версии (в новых вырезана поддержка уже старых и редких контроллерв)
// попробуйте в читалке с поста #comment-410547 увеличить цикл с 255 до 600 , лог можно не выкладывать , просто посмотрите если что там дальше интересного , к примеру в регистрах около регистров 0x0200 ... 0x0213
что-то пока сомневаюсь что там UPD161710 , уж много чего не сходится.
По даташиту в 10 и 11 регистре лежат maxX и maxY.
Думаю нужно поискать готовый инит от контроллера, а не самому по даташиту
писать.
В MCUFRIEND_kbv есть UPD161704. Он правда 240х320. Но вдруг.
В MCUFRIEND_kbv есть UPD161704. Он правда 240х320. Но вдруг.
Сегодня не могу уже посмотреть, только завтра вечером. Ткните мне в каком файле он в с писке, а то я с ардуино пока на ВЫ.
что-то пока сомневаюсь что там UPD161710 , уж много чего не сходится.
Есть версия что там может стоять контроллер D54E4PA7551, но на него не могу найти даташит. Да и в читалках ничего похожего нет.
скачал прошивку на телефон. UPD161710 там упоминается. А рядом Toshiba LS030B. Что это не нашел.
Возможно тоже контроллер дисплея.
croc19 , можете глянуть прошивку LG gm360 i ? Что там за контроллер . Нашел у себя такой дисплей . по фоткам в инете вроде похожи , мож и взаимозаменяемые . Только подпаять провода не легко будет , к такому мелкому разьему. Валерон , покажите фотку как вы подпаяли . У gm360i прямоугольный разъем с мелким шагом.
здесь https://radiokot.ru/forum/viewtopic.php?f=61&t=44185&start=1100 у кого-то получилось запустить LS030B3UX05 с чипом uPD161710 и D54E4PA7551 на 16бит , на 8бит проблемы с цветом (где-то тож в теме выкладывал подобный случай)
/// в Service Manual LG GM360i
LCD LS030B3UX05 SHARP 8bit access 2 time transmission
дисплей тож 16бит , подключен по 8бит
В гугле за LS030B3UX05 находится D54E4PA7551 ,
контроллер MagnaChip D54E4PA7551 , типа есть в библиотеках
SEGGER от EmWIN . https://github.com/Arie001/cortex-m3-applications.ssdglcddriver/blob/master/LCDConf.c
и у Micrium https://www.micrium.com/rtos/gui/
Даташиты находится , но не скачиваются
http://www.panelook.com/LS030B3UX05_SHARP_3.0_LCM_overview_18719.html
http://www.2ic.cc/datasheet/pdf/D54E4PA7551.html
https://datasheet.datasheetarchive.com/originals/library/Datasheets-SW13/DSASW00248681.pdf (рекламка походу)
вот файлы из библиотеки Segger: (искать в них D54E4PA7551 и 66706 )
https://arm-stm.blogspot.com/2017/04/guidrvcompactcolor16c-h.html
вроде бы сам инит init code D54E4PA7551
http://read.pudn.com/downloads119/sourcecode/embed/504841/Sample/Tutorial/MULTILAYER_ScreenRotationS/LCDConf.h__.htm
в верхнем файле либы можно подсмотреть через какие регистры и как осуществляется рисование:
рисуется через регистры 0x1A 0x1B 0x1C , запись - 0x03
вот так: (можно поискать аналогичные в UTFT , adafruit , MCUfriend)
описалово на русском работы либы
https://arm-stm.blogspot.com/2014/09/
https://arm-stm.blogspot.com/2014/09/emwin-display-driver.html
и на англ.
http://read.pudn.com/downloads153/ebook/676859/UM030021_emWin.pdf
// пробовал поискать в инете у кого еще Horizontal RAM address 0x1A - не особо .
возможно надо подставлять у распростаненных контроллеров вместо 0x2A 0x2B 0x2C
Slider, спасибо за предоставленную инфу, многое уже видел. Т.к. я не программист, только как говорится балуюсь (опыта еще мало) я не смог для себя там что-то найти полезного. Сейчас уже вижу что-то есть.
Валерон , покажите фотку как вы подпаяли . У gm360i прямоугольный разъем с мелким шагом.
У меня дисп от GS-290, но тоже такая хрень. Разъем я отпаял с мамки сотика и делал переходную плату. На плату заодно поставил контроллер подсветки, LDO на 2.9В и всякую мелочь. Фотку показать сейчас не могу - на работе. Если очень интересно то скину после 19.30.
LG gm360 i все тоже самое, что и на GS-290. D54 в прошивках не находится.
Начало прошивок один в один.
Похоже контроллер PD161710.
Из форума на радиокоте: "...LS030B3UX05 с чипом uPD161710, название дисплея у меня на самой железной крышке, 3-й вывод соединен с землей...". На крышке дисплея надпись соответствует?
3-й вывод соединен с землей...
Так и есть. Надпись есть какая-то, сейчас не помню. Вечером посмотрю.
Из форума на радиокоте: "...LS030B3UX05 с чипом uPD161710, название дисплея у меня на самой железной крышке, 3-й вывод соединен с землей...". На крышке дисплея надпись соответствует?
У меня на крышке надпись 033h026829aqh. Инет по этому номеру молчит.
Тогда строчкой выше из того-же форума: "...IM300IBN1A с чипом R61509, название дисплея на шлейфе под железной крышкой, 3-й вывод соединен с шиной питания..." Есть возможность заглянуть под крышку?
Тогда строчкой выше из того-же форума: "...IM300IBN1A с чипом R61509, название дисплея на шлейфе под железной крышкой, 3-й вывод соединен с шиной питания..." Есть возможность заглянуть под крышку?
Я уже заглядывал под крышку. На шлейфе какой-то номер и интернет по нему тоже молчит. 3-вывод соединен с землей железно! Чип R61509 отпадает.
Сравнивал выходы с даташитом ILI 9488. Все совпадает. Есть вывод на шлейф IM. но похоже он переключает с 24 бит на 18.
Соглано определению выводов на фото выходы располагаются так:
1
LG gm360 i все тоже самое, что и на GS-290. D54 в прошивках не находится.
Похоже контроллер PD161710.
Контроллер оказался D54E4PA7551. Инит прошел тот, который дал Slider. Спасибо ему. На экране появился шум, а вот залить его каким-нибудь цветом у меня не получается.
#elif (LCD_CONTROLLER == 66706) /* MagnaChip D54E4PA7551 */
/* Register definitions */
#define REG_INC_MODE 0x1D /* - Entry mode */
#define REG_SET_HRAM_S 0x13 /* - Horizontal start address */
#define REG_SET_HRAM_E 0x16 /* - Horizontal end address */
#define REG_SET_VRAM_S_LB 0x14 /* - Vertical start address, low byte */
#define REG_SET_VRAM_S_HB 0x15 /* - Vertical start address, high byte */
#define REG_SET_VRAM_E_LB 0x17 /* - Vertical end address, low byte */
#define REG_SET_VRAM_E_HB 0x18 /* - Vertical end address, high byte */
#define REG_RAM_ADDR_H 0x1A /* - Horizontal RAM address */
#define REG_RAM_ADDR_V_LB 0x1B /* - Vertical RAM address, low byte */
#define REG_RAM_ADDR_V_HB 0x1C /* - Vertical RAM address, high byte */
#define REG_RAM_ACCESS 0x03 /* - RAM access mode */
#elif (LCD_CONTROLLER == 66706) /* MagnaChip D54E4PA7551 */
/* Register definitions */
#define REG_INC_MODE 0x1D /* - Entry mode */
#define REG_SET_HRAM_S 0x13 /* - Horizontal start address */
#define REG_SET_HRAM_E 0x16 /* - Horizontal end address */
#define REG_SET_VRAM_S_LB 0x14 /* - Vertical start address, low byte */
#define REG_SET_VRAM_S_HB 0x15 /* - Vertical start address, high byte */
#define REG_SET_VRAM_E_LB 0x17 /* - Vertical end address, low byte */
#define REG_SET_VRAM_E_HB 0x18 /* - Vertical end address, high byte */
#define REG_RAM_ADDR_H 0x1A /* - Horizontal RAM address */
#define REG_RAM_ADDR_V_LB 0x1B /* - Vertical RAM address, low byte */
#define REG_RAM_ADDR_V_HB 0x1C /* - Vertical RAM address, high byte */
#define REG_RAM_ACCESS 0x03 /* - RAM access mode */
Спасибо croc19, это я видел из предыдущего поста. Так как опыта в програмировании у меня мало, то пока не получается. Вроде алгоритм рисовании линии понимаю, но в какой регистр что запмсывать пока не въезжаю. Если не трудно подскажи.
сначала закрасить прямоугольник.
Попробуй так. Запиши последовательно в регистры
сом 0x1а
data 0x0
com 0x1b
data 0x0
com 0x1c
data 0x0
com 0x13
data 0x0
com 0x16
data 0x66
com 0x14
data 0x0
com 0x15
data 0x0
com 0x17
data 0x63
com 0x18
data 0x0
com 0x03
цикл на 10000 повторений внутри которого пишешь
data 0x0
data 0xf8
На экране должен появиться красный квадрат 100х100 точек.
croc19 спасибо, получилось.
Уважаемые, подскажите кто в курсе, почему при заливке диспа одним цветом появляются другие цвета? Заливаю красным, появляется синия полоса во весь экран. Может быть в одном месте, может быть в нескольких местах, может быть на половину экрана. С другими цветами также. только с черным нормально.
Выложи программу и фото.
Кто-нибудь работал с либой GLCD или имел дело с монохромными дисплеями на SED1520 ?
Отзовитесь пожалуйста .
Выложи программу и фото.
фотка при заливе красным цветом
ZEL, попробуй библиотеку u8g2
Неужели хоть кто - то отозвался!!! Спасибо попробую.. гдето вроде уже скачана ...
Полное описание проблеммы здесь:
http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=41#comment-411100
Валерон.
Я не пишу для ардуины. Поэтому почитай как пишутся скетчи. Там все доступно.
Теперь попробую описать примерный алгоритм.
Сначала в SETUP обозначаешь, какие ноги как будут называться ( у тебя это в define) и в каком режиме будут работать -- pinMode(LCD_D0, OUTPUT); В принципе все ноги на цифровой выход.
Далее инициализация дисплея.
Дальше в LOOP . Пишешь координаты прямоугольника в регистры. Если весь экран, то начало по Х=0, конец Х=239 ,
начало по Y=0, конец по Y=399. И команду 0х03 . Затем цикл на 240*400=96000 , внутри которого пишешь
цвет ( это у тебя в программе есть ) .
Ну а дальше что душа пожелает.
Все подпрограммы с Read в урну, читать ничего не нужно. Контроллер ты знаешь.
Да, на будущее. Экран может работать в разных режимах. Развертка может быть слева направо и наоборот,
снизу вверх и наоборот. По вертикали или по горизонтали. цвет может выводиться в RGB или в BGR. Все это задается в
регистрах определенными битами.
В какой режим устанавливает дисплей эта инициализация неизвестно. Без даташита не подскажу.
croc19 я тоже не пишу для ардуино и не планирую. Програмированием занимаюсь от случая к случаю. В даный момент я просто хочу понять алгоритм програмирования диспов. Да и ардуино досталась на халяву, вот решил заюзать первый попавшийся дисп. Я в основном работаю с пиками. Ладно это все лирика.
Алгоритм понял, буду пробывать, спасибо.
Ксати функция чтения не мешает. Этот скетч рабочий вариант, правленный для моего диспа.
Не мешает, это да. Но лишнее в программе не камильфо.
Можешь покопать библиотеку из которой инициализация. В ней может быть поворот экрана.
С выводом прямоугольников понятно. В них можно выводить и картинки.
А регистры 1А, 1В, 1С установка вывода в нужную стартовую точку.
croc19, разве у меня заливка не првильно релизована?
А регистры 1А, 1В, 1С установка вывода в нужную стартовую точку.
Мне кажется они устанавливают размер экрана.
Все правильно. Делеи можешь убрать. Дисплей гораздо быстрее, чем ардуина.
Просто у тебя в программе большая мешанина. А я не спец в скетчах. Я напрямую с АВР дружу.
Блин, заливка правильная. Почему же полосы появляются другого цвета. Даже когда квадрат рисую на фоне, тоже полосы другого цвета в квадрате появляются.
Лишнее убери и выложи прогу.
Лишнее убери и выложи прогу.
Лишнее убери и выложи прогу.
...
Без второго подопытного диспа, скетч кажется норм.
Собрал за ночь эксперимент на макетке , дисплей от LG GM360i .
Да хорошо эта заливка работает , и это на 10ком резисторах.
Дисплей работает гораздо быстрее ардуины , поэтому попробовал ускорить этот код.
Заливка цветом:
22сек - изначально заливает
14сек - заменил на выдачу байта сразу в порт PORTA , а не по каждому пину.
10сек - убрал CS, RD
8сек - заменил медленные digitalWrite на быстрые битовые ( ускорение может быть до 20раз . из либы CyberLib.h )
// можно ускорить через cbi sbi http://arduino.ru/forum/proekty/miniatyurnyi-komnatnyi-termometr-na-attiny85-c-oled#comment-32533 .
или конструкциями из любой библиотек (adafruit, UTFT, ...)
Чтоб не использовать счетчик, заменил delayMicroseconds(2); после WR_Low; на еще один WR_Low; , чтоб добавить небольшую задержку , возможно это сказался завал импульса через 10ком резистор, надо пробовать как будет на преобразователях уровнях или 3.3в логике.
11 и 19 пины диспа (IF_mode IF1 IF0) пока ниуда не подключал, не экспериментировал с битностью, работает и так .
ваш скетч не требующий либ, немного ускоренный:
// да проскакивала синяя заливка, но это при попытках чрезмерно ускорить через заваливающие фронты 10ком резисторы. Возможно где то у вас не контакт в схеме или "залипуха" с припоя или флюса. М.б. из-за питания. Дисп от LG 360i запитал от 3.3в через 33 0м резистор и белый светодиод + светодиоды подсветки, в итоге на питание диспа идет 2,7в .
//// надо бы закинуть этот инит в либу ( adafruit, utft , mcufrieng_kvb ), и регистры рисования подменить. Тогда и проще рисовать будет. B библиотеках заливка должна осуществляться еще быстрее, т.к. изпользуется автоинкримент средствами контроллера дисплея, при ненадобности заново вводить цвет и координаты последующегося пикселя в строке.
slider с твоим скетчем что-то у меня заливается только четверть экрана, хотя заливка написана на весь экран. Может где небольшой косячок есть, найти не могу.
У себя в скетче переделал:
Экран стал заливаться за 3 сек. Но проблема с полосами осталась.
подправил на обратно
233
uint32_t i = 400;
на вид около 0.5сек бешенная заливка !!! для arduino mega2560 , и это еще на 8 бит , а не 16.
потестируйте
RD 42 на свой 45вспомните поменять .
лог читалки тож по 00 регистру лежит id 0x0A0A
slider работает отлично.
Сделаю другой преобразователь на шине управления, стоят резисторы 6,8к и 10к. Уж шибко фронты завалены. Может и проблема с заливкой цвета уйдет.
Что-то ID странный.
slider у тебя размах сигнала на пинах диспа какой?
Народ помогите или наставьте на путь.
Д-цать постов назад запускали монохромный экран 640х240.
Есть аналог sharp lm089hb1t03, есть желание выводить на него показания с датчиков (ет если осилю управление им)
скетч от Слайдера для вывода 2-х строк выводится только на половину экрана
у меня 4-х битный экран, выходы управления подправил под мегу. немогу понять как заставить печатать во второй полвине экрана
шлейф:
lcd-adj # lcd +24v # ld3 # ld2 # ld1 # ld0 # lcd +24v # gnd # +5v # cp # lp # flm # nc # dsp-off
я правильно понимаю, шрифтов в нём нет всё придётся как в скетче побайтно рисовать?
slider, в крайнем скетче что ты скинул можно убрать двойные WR_Low; WR_Low; и оствить один и будет нормально работать.
Я поменял резисторы в преобразователе уровней. Поставил 680 и 1к и работает на ура.
Можно ли к скетчу как-нибудь прилепить шрифты из какой-нибудь библиотеки?
Что-то ID странный.
slider у тебя размах сигнала на пинах диспа какой?
ID такой же как у вас 0A0A , в чем странность?
вот лог с LCD_ID_Reader33.ino #comment-410547
Если предположить что не так с чтением , то надо подключать по 16бит - дело верняк, чтение будет 100%.
Размах , и осцил не надо, достаточно померить мультиметром куда постоянно подается лог.1 Reset , RD .
питание ардуины 5.00в , на стабе 3.30в , через 10 Ом на белых светодиодах (1+~5подсветки) 2.80в , на пинах Reset , RD 3.40в (вольтметр высокоточный) , оно и понятно , в микросхемах же ставят защитные диоды на вывода, к + и - питания. Лог.1 5.0в идет через 10ком , на защитном диоде осело 0.6в , ушло на питание. (при наргеве и морозе будут немного другое напряжение на "стабилитроне") .
Если бы не поставил параллельно питанию диспа , белые светодиоды ограничивающие напряжение как стабилитроны, то питание 3.3в взятое с ардуины , взлетело бы выше 4.5 и спалило бы дисп, из-за много лог.1 через 10ком , пересиливающие потребности контроллера диспа на старте , когда еще инит ему не скормлен и внутренние преобразователи не запущены.
В даташитах иногда пишут , что напряжения на входах не должно превышать напряжение питания на 0.6в , оно и понятно , иначе пересилится питание контроллера и он скончается.
slider, в крайнем скетче что ты скинул можно убрать двойные WR_Low; WR_Low; и оствить один и будет нормально работать.
Я поменял резисторы в преобразователе уровней. Поставил 680 и 1к и работает на ура.
Можно ли к скетчу как-нибудь прилепить шрифты из какой-нибудь библиотеки?
ну если 680 и 1к то хорошо тока хватит, а через 10к он слабый, даже если тыкнуться мультиметром или осциллографом после них ( WR, RS(CD) ) , уже дисп косячит , то другие цвета покажет , то типа битые пиксели. Вот и приходится ставить задержки.
Зачем лепить шрифты из либы? проще подменить в понравившейся либе, инит на свой , и номера регистров посредством которых идет рисование.
К примеру UTFT C:\Users\.....\Documents\Arduino\libraries\UTFT\tft_drivers\ili9325c
по аналогии с ILI9325 , названия регистров в setxy.h посмотреть с его даташита или в initlcd.h они расписаны. x1 x2 y1 y2 оставляем (либа заносит в них координаты, цвет, сдвигает для 8бит )
В initlcd.h забить данные со своего инита.
Ну а дальше как обычно.
Ну а дальше как обычно.
Да хрен там! Не получается у меня. Надо в других файлах что-то менять?
Может пины по другому подключать?
ну, млин...
оставить подключение такое же.
вот заготовил как получилось , : UTFT v2.82 MagnaChip D54E4PA7551 дисп от LG .rar
https://yadi.sk/d/BnFmbOp-Oaybzw
распаковать в Arduino\libraries . Пример запустить UTFT\examples\Arduino (AVR)\UTFT_Demo_400x240
даташиты UPD161710.pdf UPD161704A.pdf (он по красивше цветастей про регистры, стр122) на всяк случай закинул их в UTFT\tft_drivers\ili9325c
setxy.h составил методом тыка , что то наобум , надо сильно вдумываться и экспериментировать чтоб сделать поуму , иногда от очередности очень сильно зависит. От старшего байта по Y(X) м.б. избавиться , поэспериментировать закомментить , ибо 240 не больше 255 . (это в другой координате 400пикс больше 255 , и используется старший байт) , как получилось здесь избавиться
#comment-93736
Надо еще отзеркалить , для этого надо экспериментировать в initlcd.h , не все там регистры , смотреть даташиты , искать (scan , mirror ) хоть какие-то сходства в "родственниках" попавшегося контроллера. Увеличить частоту обновления экрана, еще бы.
!!! LCD_Write_COM_DATA(0x30,0x01); /* 0x81 Select the display-RAM data */ // 0x01 Зеркалит по горизонтали !!!
но буквы по прежнему наоборот , хотя уже на своих местах.
Есть подозрения , что это надо setxy.h правильно сделать. мож что croc19 подскажет. Как будто библиотека рисует букву наоборот.
и помнить , что в даташитах UPD... , регистры написали в десятичной системе , надо помнить переводить.
// на крайняк , попробуйте инит в старый Adafruit внедрить к похожему по рисованию ili9320 контроллеру. В споследних Adafruit , MCUfriend_kvb м.б. будет трудно разобраться.
croc19 как правильно рисовать ? и почему в ориг. либе рисуется через 1A 1B 1C
, иль что я не усмотрел.
вот собрал как что у других контроллеров в setxy.h :
черкнул скетч который рисует квадратики , используя рисование только через регистры 1A 1B 1C
Generik, не понятно не видать что у вас и как , попробуйте с аналогией с 1602 (там 8бит посылается как 2раза по 4бита)