Помогите с ILI9341

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Родился
Сообщения: 15
Зарегистрирован: Пн дек 08, 2014 00:20:13

Сообщение santaraf »

Приветствую всех! Нарисовалась проблема, а именно, не могу победить дисплей с контроллером ILI9341. Дисплей подключен к ATmega128 посредством программного SPI, частота 11.0592 МГц. Дисплей запитан от 5В, ATmega128 от 3.3В, масса обоих источников одна. После инициализации дисплей моргнет однократно и весь заливается синеватым фоном, что-то нарисовать не получается. Привожу код программки на ассемблере, кто в теме про ILI9341, проверьте код, может где накосячил или недописал чего, сил больше нет, голову всю сломал, ПОМОГИТЕ!!!!!

Инициализация дисплея:
CONFIG_LCD:
; Аппаратный сброс LCD +++++++++++++
sbi PORTB,LCD_RES; +5V на RESET
nop
nop
cbi PORTB,LCD_RES; Сброс LCD
call pause10mks
sbi PORTB,LCD_RES; +5V на RESET

; Инициализация LCD +++++++++++++++++++++++++++
ldi r20,$01; Программый сброс LCD
call LCD_CMD

call pause120ms; пауза 120мс для программного сброса дисплея
call pause120ms
call pause120ms
call pause120ms
call pause120ms

ldi r20,$CB; Power control A (CBh)
call LCD_CMD
ldi r20,$39
call LCD_DATA
ldi r20,$2C
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$34
call LCD_DATA
ldi r20,$02
call LCD_DATA

ldi r20,$CF; Power control B (CFh)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$C1
call LCD_DATA
ldi r20,$30
call LCD_DATA

ldi r20,$E8; Driver timing control A (E8h)
call LCD_CMD
ldi r20,$85
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$78
call LCD_DATA

ldi r20,$EA; Driver timing control B (EAh)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA

ldi r20,$ED; Power on sequence control (EDh)
call LCD_CMD
ldi r20,$64
call LCD_DATA
ldi r20,$03
call LCD_DATA
ldi r20,$12
call LCD_DATA
ldi r20,$81
call LCD_DATA

ldi r20,$F7; Pump ratio control (F7h)
call LCD_CMD
ldi r20,$20
call LCD_DATA

ldi r20,$C0; Power control,VRH[5:0] (C0h)
call LCD_CMD
ldi r20,$23
call LCD_DATA

ldi r20,$C1; Power control,SAP[2:0];BT[3:0] (C1h)
call LCD_CMD
ldi r20,$10
call LCD_DATA

ldi r20,$C5; Vcm control (C5h)
call LCD_CMD
ldi r20,$3E
call LCD_DATA
ldi r20,$28
call LCD_DATA

ldi r20,$C7; Vcm control 2 (C7h)
call LCD_CMD
ldi r20,$86
call LCD_DATA

ldi r20,$36; Memory access control (36h)
call LCD_CMD
ldi r20,$48
call LCD_DATA

ldi r20,$3A; Pixel format (3Ah)
call LCD_CMD
ldi r20,$55
call LCD_DATA

ldi r20,$B1; Frameration control,normal mode full colours (B1h)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$18
call LCD_DATA

ldi r20,$B6; Display function control (B6h)
call LCD_CMD
ldi r20,$08
call LCD_DATA
ldi r20,$82
call LCD_DATA
ldi r20,$27
call LCD_DATA

ldi r20,$F2; 3gamma function disable (F2h)
call LCD_CMD
ldi r20,$00
call LCD_DATA

ldi r20,$26; Gamma curve selected (26h)
call LCD_CMD
ldi r20,$01
call LCD_DATA

ldi r20,$E0; Set positive gamma correction (E0h)
call LCD_CMD
ldi r20,$0F
call LCD_DATA
ldi r20,$31
call LCD_DATA
ldi r20,$2B
call LCD_DATA
ldi r20,$0C
call LCD_DATA
ldi r20,$0E
call LCD_DATA
ldi r20,$08
call LCD_DATA
ldi r20,$4E
call LCD_DATA
ldi r20,$F1
call LCD_DATA
ldi r20,$37
call LCD_DATA
ldi r20,$07
call LCD_DATA
ldi r20,$10
call LCD_DATA
ldi r20,$03
call LCD_DATA
ldi r20,$0E
call LCD_DATA
ldi r20,$09
call LCD_DATA
ldi r20,$00
call LCD_DATA

ldi r20,$E1; Set negative gamma correction (E1h)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$0E
call LCD_DATA
ldi r20,$14
call LCD_DATA
ldi r20,$03
call LCD_DATA
ldi r20,$11
call LCD_DATA
ldi r20,$07
call LCD_DATA
ldi r20,$31
call LCD_DATA
ldi r20,$C1
call LCD_DATA
ldi r20,$48
call LCD_DATA
ldi r20,$08
call LCD_DATA
ldi r20,$0F
call LCD_DATA
ldi r20,$0C
call LCD_DATA
ldi r20,$31
call LCD_DATA
ldi r20,$36
call LCD_DATA
ldi r20,$0F
call LCD_DATA

ldi r20,$11; Exit sleep (11h)
call LCD_CMD

call pause120ms

ldi r20,$29; Display on (29h)
call LCD_CMD

ldi r20,$2C; Записываем (2Ch)
call LCD_CMD


; Установка курсора, определяем область для рисования
ldi r20,$2A; Столбцы (2Ah)
call LCD_CMD
ldi r20,0
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA


ldi r20,$2B; Строки (2Bh)
call LCD_CMD
ldi r20,0
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA

ldi r20,$2C; Записываем (2Ch)
call LCD_CMD






ldi r20,$2D; Код цвета (2Dh)
call LCD_CMD
AA: ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA

ldi r20,$2C; Записываем (2Ch)
call LCD_CMD

ret
Реклама
Родился
Сообщения: 15
Зарегистрирован: Пн дек 08, 2014 00:20:13

Сообщение santaraf »

Всем огромное спасибо за активное участие, очень понравилась активность участников форума. А с дисплеем я разобрался, все шикарно работает!
Реклама
Друг Кота
Сообщения: 7722
Зарегистрирован: Вс июл 24, 2011 11:38:09

Сообщение 74LS00 »

:)) :beer:

[spоiler]пользуйтесь спойлерами[/spоiler]
Контактная информация:
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Сообщение Мурато Мяуконни »

Вообще-то, этот дисплей питается от 3 В. Вероятно, вы имели ввиду наоборот - Мега от 5, а дисплей от 3.
А работать с таким дисплеем на ассемблере - занятие для настоящих убежденных мазохистов.
Как впрочем, и Мега с её 4 кБ ОЗУ тоже не лучший выбор для эффективной работы с этим дисплеем. ILI9341 очень желает видеть управлялку с оперативкой не менее 150 кБ, а по-хорошему, внешнюю SRAM (SDRAM) на пару-тройку мегабайт; параллельный интерфейс, или хотябы SPI, но с частотой не ниже 24-36 МГц. Это - для полноценной и комфортной работы. В противном случае - так, мелочь, костыли да заплатки...
Кстати, в приведенной инициализации много лишнего. Дисплей может работать и без внесения настроек гамма-коррекции, установки напряжений и многого-многого другого. Обязательные команды - это соппсна, программный сброс; установка ориентации (развертки) и соответствия цветов RGB контроллера и отображающей панели; смена, при необходимости, глубины цвета на 16 бит; ну и включение дисплея. Всё. Это - минимально необходимый набор для начала работы после подачи питания.
Подпись убрал вместе с автором. aen
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Мурато Мяуконни писал(а):ILI9341 очень желает видеть управлялку с оперативкой не менее 150 кБ
Все зависит от задачи. Фреймбуфер ведь можно и читать. Я используя меньше 1К RAM и ST7735 Арканоид детям написал. И ничего, вполне себе шустренько получилось даже с двумя спрайтами. И память, в основном, только на буфера спрайтов и ушла.


http://www.radiokot.ru/forum/viewtopic. ... 7&t=136975
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Реклама
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Сообщение Мурато Мяуконни »

Можно и вообще без оперативки обходиться, по принципу "прочитал пиксель - изменил его - записал пиксель". Но к чему эти костыли? Я ж говорю - для комфортной и эффективной работы с дисплеем нужно мыслить иначе.
Прямоугольную область размером 15х15 перерисовывать то не проблема даже костылями. А вот когда дело пойдет в направлении визуальных интерфейсов устройств со сложной инфографикой, тогда уже экономия ресурсов выльется в жуткие проблемы, вплоть до полной невозможности решить задачу.
Подпись убрал вместе с автором. aen
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Мурато Мяуконни писал(а):А вот когда дело пойдет в направлении визуальных интерфейсов устройств со сложной инфографикой
А в таких случаях я использую QT или, в сложных случаях, напрямую OpenGL. Вот только это не имеет вообще никакого отношения ни к даной теме, ни к МК, ни к этому форуму.

Я же писал выше: "Все зависит от задачи."
Ну не существует универсального оптимального способа решения любой задачи.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Сообщение Мурато Мяуконни »

Да, существуют костыли и заплатки вместо нормального способа решения задачи. И ведь этими костылями еще и гордятся, вместо того, чтобы твердо встать на ноги и решить задачу правильными методами.
Избитая фраза "всё зависит от задачи". Она неправильная. Есть нормальные способы решения задачи и есть костыли для решения задачи через жэпа.

А вы думаете, что на микроконтроллерах не делается визуальных интерфейсов устройств? Ну да. На микроконтроллере даже потоковое видео с видеокамеры с выводом на дисплей или записью на карту - так, задача немного выше средней тяжести.
...
"Вы любите кошек?" -- "Нет" -- "Да вы просто не умеете их готовить!"
Последний раз редактировалось Мурато Мяуконни Вс ноя 20, 2016 23:56:39, всего редактировалось 1 раз.
Подпись убрал вместе с автором. aen
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

А кроме Вас на этой планете существует хоть кто-то, кто знает "правильный метод"? :)))

На мой взгляд, использовать OpenGL для отрисовки экрана метеостанции на МК - не верный подход. Такой же не верный подход, как и не использовать OpenGL/DirectX для "сложной инфографики". Тот же QlikView или SSRS бодро уйдут в даун на сложном дашбоарде без GPU.

Добавлено after 1 minute 27 seconds:
Мурато Мяуконни писал(а): А вы думаете, что на микроконтроллерах не делается визуальных интерфейсов устройств?
Вы писали о "сложной инфографике". Уж слава богу, BI проектов у меня за душой изрядно, и что такое "сложная инфографика" я в курсе )
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Сообщение Мурато Мяуконни »

Заметьте, что ОпенЖЛ вы сами предложили, а теперь его и ругаете.
Однако, существуют микроконтроллеры со встроенным графическим ускорителем.
Номенклатура микроконтроллеров не ограничивается только лишь Мегой для Ардуины.
Классический Doom на STM32F429:
Спойлерhttps://www.youtube.com/watch?v=bRNcfsDIc2A
:) Интересно, как вы можете рассказывать про проекты со "сложной инфографикой", если не знаете даже что СПИ может работать на полсотне мегагерц???
Подпись убрал вместе с автором. aen
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Мурато Мяуконни писал(а):Заметьте, что ОпенЖЛ вы сами предложили, а теперь его и ругаете.
Ложное утверждение:
ptr128 писал(а):такой же не верный подход, как и не использовать OpenGL
Мурато Мяуконни писал(а): Однако, существуют микроконтроллеры со встроенным графическим ускорителем.
Классический Doom на STM32F429:
Если Вы хотели меня рассмешить, то Вам это удалось :)))
Вы же сами писали о "сложной инфографике". Да даже для того, чтобы полноцветный postscript рендерить в реальном времени, необходимы гигагерцы и гигабайты. Какой на фиг МК, если тот же Xerox по 4-8 Opteron ставит для такого рендеринга?
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Сообщение Мурато Мяуконни »

А теперь задумайтесь, возможно ли реализовать визуальный интерфейс без ОпенЖЛ и гигагерцев с гигабайтами? Во-во, то-то и оно, что вы не представляете, как это самостоятельно сделать. А вот я - знаю, и делал. И без костылей.

Помойму, вы просто собрали все названия в одну кучу, даже не понимая, зачем это сделали и где это будете использовать.
Подпись убрал вместе с автором. aen
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Мурато Мяуконни писал(а):А теперь задумайтесь, возможно ли реализовать визуальный интерфейс без ОпенЖЛ и гигагерцев с гигабайтами?
А с чего это Вы решили со "сложной инфографики" перейти на тривиальщину?
Визуальный интерфейс - без проблем. Хоть на STM8. Благо даже на Z80 писал оконные графические визуальные интерфейсы для наложения на видеосигнал. Сложную инфографику - тоже можно, но трудозатраты никогда не окупите и тормозить будет безбожно.
Мурато Мяуконни писал(а): Во-во, то-то и оно, что вы не представляете, как это самостоятельно сделать. А вот я - знаю, и делал. И без костылей.
А вот теперь все понятно. Очередной ребенок с немеряно раздутым самомнением. Спасибо за позитивчик :)))
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Сообщение Мурато Мяуконни »

Хехе. Вы всегда называете "ребенком" всякого, кто разбирается лучше вас в теме? Вы же еще несколькими постами выше не знали ни одного микроконтроллера с частотой СПИ в 45 МГц. А теперь вдруг начали рассказывать про сложную инфографику.
Спуститесь с небес, уважаемый. Если вы уж начали доказывать что-то, то хотябы придерживайтесь одной линии.

Как я понял, для вас сейчас проблема нарисовать картинку на дисплее для метеостанции? Ну вот, а вы мне тут начинаете рассказывать про то, как вы на Z80 рисовали визуальный интерфейс. Какбы вот врите да не завирайтесь, так как бы...

Ха-ха-ха ну вот так - типичное поведение. Когда он понял, что проиграл спор, сразу начал "минусовать в карму". Один такой проигравший тут уже отметился, вы - второй :)
Подпись убрал вместе с автором. aen
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Мурато Мяуконни, я предупреждал :kill:
Ответить

Вернуться в «Периферия»