реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Пример от ST для STemWin где-то виснет.
hd44780
сообщение Dec 4 2016, 10:23
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(zheka @ Dec 4 2016, 12:02) *
Еще вопрос. У меня был файл GUIConf_stm3240g_eval, стал Ваш файл GUIConf. То же самое и с LCDConf.
Не нашел в проекте, где нужно перепрописать имя.
И вообще- такое ощущение, что находящиеся в них функции вызываются из самой библиотеки.


Ничего переписывать не надо. Находящиеся там функции вызываются из недр библиотеки. Имя файла роли вообще не играет.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
zheka
сообщение Dec 4 2016, 10:43
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Ну у меня пока ситуация с ошибками компиляции как со змей-горынычем. ОТрубаешь одну голову - вырастает 3.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Dec 4 2016, 14:34
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



а покажите ошибки, может подскажу чего ...


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
zheka
сообщение Dec 5 2016, 13:08
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Я пока к старому варианту вернул, хочу попробовать запустить на своих функциях SSD1963 хотя бы заливку экрана, без оболочки.
Потом выложу.
Go to the top of the page
 
+Quote Post
zheka
сообщение Dec 12 2016, 20:24
Сообщение #20


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Заработало с Вашими файликами, когда SSD1963 подключил.
Вот только очень уж медленно. Неужели в памяти дело....
Та же самая демка на 429 (всего-то на 12 МГц больше) проце просто летает.

Хм... тестилка заливки случайных прямоугольников показала 52,9 млн пикселей в сек.
На 429 диско показывала около 62-х . То есть с шиной FSMC аппаратно все нормально... Но иконка не более чем 30х30 - видно как рисуется сверху вниз....


Гляньте, что может быть не так?

Сообщение отредактировал zheka - Dec 12 2016, 20:41
Прикрепленные файлы
Прикрепленный файл  Standalone.rar ( 1.21 мегабайт ) Кол-во скачиваний: 15
 
Go to the top of the page
 
+Quote Post
zheka
сообщение Dec 13 2016, 06:26
Сообщение #21


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Просто обалдеть.... Чего нашел...
Как выводится в этом ГУИ картинка - в цикле выводятся пиксели
Цитата
_SetPixelIndex(pDevice, x, y, *p);

Что же представляет из себя _SetPixelIndex

А вот что
Цитата
SSD1963_SetCursor ( x, y );

FSMC_LcdWriteCmd ( 0x2C ); // SSD1963_WRITE_MEMORY_START
FSMC_LcdWriteData ( color );


В свою очередь SSD1963_SetCursor это

Цитата
SSD1963_SetDisplayWindow ( Xpos, Ypos, Xpos, Ypos, SSD1963_Hor_DecrDecr );


А SSD1963_SetDisplayWindow это
Цитата
FSMC_LcdWriteCmd ( 0x2A ); // SSD1963_SET_COLUMN_ADDRESS
hi = x1 >> 8;
lo = x1 & 0x00ff;
FSMC_LcdWriteData ( hi ); // Hi
FSMC_LcdWriteData ( lo ); // Low
hi = x2 >> 8;
lo = x2 & 0x00ff;
FSMC_LcdWriteData ( hi ); // Hi
FSMC_LcdWriteData ( lo ); // Low

// set_page_addres
FSMC_LcdWriteCmd ( 0x2B ); // SSD1963_SET_PAGE_ADDRESS
hi = y1 >> 8;
lo = y1 & 0x00ff;
FSMC_LcdWriteData ( hi ); // Hi
FSMC_LcdWriteData ( lo ); // Low
hi = y2 >> 8;
lo = y2 & 0x00ff;
FSMC_LcdWriteData ( hi ); // Hi
FSMC_LcdWriteData ( lo ); // Low


Столько плясок из-за одного пикселя.
У меня вопрос - кто это писал вообще и на какую мощь контроллера расчитывал?

Сообщение отредактировал zheka - Dec 13 2016, 06:29
Go to the top of the page
 
+Quote Post
Obam
сообщение Dec 13 2016, 07:30
Сообщение #22


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



А чему тут удивляться?
В цветных ЖКИ видеопамять адресуется попиксельно (3 байта на пиксель "вдуй" и не жужжи), единственно что помогает, автоинкремент/автодекремент по горизонтали/вертикали (как задашь) и окно вывода.


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
zheka
сообщение Dec 13 2016, 07:38
Сообщение #23


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Цитата
В цветных ЖКИ видеопамять адресуется попиксельно (3 байта на пиксель "вдуй" и не жужжи)


секунду...
можно один раз установить курсор (задать область) и гнать поток данных - один пиксель -> одна команда. Вы посмотрите в коде, сколько плясок вокруг одного пикселя.

Не... на фиг этот STemWin, он даже на 429 проце со SDRAM и то подтормаживал.

Скажите, может есть какая-нибудь библиотечка попроще? Безо всяких окон и виджетов, но чтобы кроме пикселя, прямоугольника и круга еще что-то могла делать?
Go to the top of the page
 
+Quote Post
Obam
сообщение Dec 13 2016, 08:03
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Вот чесслово, за всё время перетираний, если не три, то одну свою либу давно бы написали sm.gif


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Dec 14 2016, 05:29
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(zheka @ Dec 12 2016, 23:24) *
Заработало с Вашими файликами, когда SSD1963 подключил.
Вот только очень уж медленно. Неужели в памяти дело....
Та же самая демка на 429 (всего-то на 12 МГц больше) проце просто летает.

Хм... тестилка заливки случайных прямоугольников показала 52,9 млн пикселей в сек.
На 429 диско показывала около 62-х . То есть с шиной FSMC аппаратно все нормально... Но иконка не более чем 30х30 - видно как рисуется сверху вниз....


Гляньте, что может быть не так?


Сорри, долго не заглядывал сюда.
Сравнивать любой FSMC дисп с LTDC (а именно он стоит на 429 дискавери) по определению неверно. совершенно разные технологии.
Запись точки в SSD1963 - это 6 команд (запись x1, y1; x2, y2, потом команда засылки данных). Если брать в циклах обмена по FSMC - минимум в 2 раза больше.
А для LTDC - просто запись 2-3 байтов в память по прямому адресу ....

Хотите скорости - выкиньте FSMC и пользуйтесь LTDC. Но он есть только в F4x9 и выше. 407 такого не умеет.

другие либы есть, но в плане окошек они и рядом с emWin не стояли ...


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
zheka
сообщение Dec 14 2016, 05:57
Сообщение #26


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Цитата
Запись точки в SSD1963 - это 6 команд (запись x1, y1; x2, y2, потом команда засылки данных). Если брать в циклах обмена по FSMC - минимум в 2 раза больше.
А для LTDC - просто запись 2-3 байтов в память по прямому адресу ....

Похоже мы друг друга не понимаем....

Я не спорю что на одну точку уходит 6 команд. Но когда выводишь картинку на одну точку не должно уходить 6 команд. Точно так же задаете регион и сплошным потоком шлются данные. Я через FSMC подобным образом заполняю весь экран 800х480 где-то за 20 мсек. А тут простой прямоугольник 200х100 напоминает опускающийся занавес.
Go to the top of the page
 
+Quote Post
Rash
сообщение Dec 14 2016, 06:41
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Так никто не мешает переписать часть ф-ций в драйвере дисплея которые не устраивают по скорости.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Dec 14 2016, 09:08
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Попробуйте переписать функции в LCDConf.c. Я этого не делал, меня и так всё устаивало biggrin.gif
А сейчас вообще переехал на LTDC..


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
zheka
сообщение Dec 15 2016, 06:56
Сообщение #29


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



А как бы мне проследить иерархию от от функций GUI до базовых функций?
Лезу я в демку вижу там вызов функции GUI_DrawBitmap. А проследить что эта функция в себе содержит и что вызывает невозможно, это ведь библиотека, инструмент "Go to definition" в KEIL не работает.
Где прописывается соответствие функций EMWin базовым функциям, написанным пользователем?
Здесь?
Код
const GUI_DEVICE_API GUIDRV_API =
{
  //
  // Data
  //
  DEVICE_CLASS_DRIVER,
  //
  // Drawing functions
  //
  _DrawBitmap,
  _DrawHLine,
  _DrawVLine,
  _FillRect,
  _GetPixelIndex,
  _SetPixelIndex,
  _XorPixel,
  //
  // Set origin
  //
  _SetOrg,
  //
  // Request information
  //
  _GetDevFunc,
  _GetDevProp,
  _GetDevData,
  _GetRect,
};


Сообщение отредактировал zheka - Dec 15 2016, 06:57
Go to the top of the page
 
+Quote Post
Mister_DSP
сообщение Dec 15 2016, 08:24
Сообщение #30


Частый гость
**

Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050



Ой-ой-ой! Непорядок!.... Сколько работал с такого рода дисплеями (STN, TFT, OLED) -так у них всех вначале задаётся прямоугольная область по размерам изображения с привязкой к координатам, а потом дают команду рисования пикселей, и наконец идет пакет RGB (или код цвета для палитровых режимов) - линейная последовательность пикселей.

Делать каждый раз позиционирование для какждого пикселя и давать команду на каждый пиксель - ИМХО главный тормоз в отрисовке графики...

Впрочем, буферизация тут необходима: рисуем весь кадр в буфере (оператива CPU),затем даем команду на отрисовку всего экрана с буфера.
Иначе будут мерцания и затирания при движущихся объектах.

Ну и стирать буфер перед новой прорисовкой конечно!

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

P.S. работал с каким-то OLED-дисплеем, так его контроллер позволял несколько интересные вещи: круги и прямоугольники с линиями отрисовывать аппаратно sm.gif 128x128 цветной 65 тыс. цветов. Шина: 16 бит, 8 бит или SPI - любую выбрать можно было. Я брал 16 bit и к AT91RM9200 подключал к EBI sm.gif

Цитата(Obam @ Dec 13 2016, 07:30) *
А чему тут удивляться?
В цветных ЖКИ видеопамять адресуется попиксельно (3 байта на пиксель "вдуй" и не жужжи), единственно что помогает, автоинкремент/автодекремент по горизонтали/вертикали (как задашь) и окно вывода.

Ну и 8 бит на точку в режиме палитры(настраивается отдельно - 256 цветов из 32768 возможных) или напрямую R:G:B=3:3:2 bit

Сообщение отредактировал Mister_DSP - Dec 15 2016, 08:18


--------------------
SPY vs. SPY
Хорошо там, где нет ничего...
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01494 секунд с 7
ELECTRONIX ©2004-2016