Подсчет кадров в секунду выводимых на дисплей
- Войдите на сайт для отправки комментариев
Добрый день! Благодаря теме Arduino и дисплеи от сотиков мобильных телефонов подключил дисплей 3.5" 320х480 с контроллером ILI9488(HX8357D) к stm32f103 методом программирования через ардуино IDE. Библиотеку для дисплея брал на github - Adafruit_TFTLCD_8bit_STM32. Удачно запустил пример graphicstest.ino, в котором выводится информация по бенчмарку в монитор:
TFT LCD test TFT size is 320x480 Found HX8357D LCD driver TFT begin done. rotation: 0, runtime: 22531 rotation: 1, runtime: 22532 rotation: 2, runtime: 22532 rotation: 3, runtime: 22533 Benchmark Time (microseconds) Screen fill 131094 Text 22531 Lines 385178 Horiz/Vert Lines 14663 Rectangles (outline) 9948 Rectangles (filled) 363669 Circles (filled) 194603 Circles (outline) 164090 Triangles (outline) 73226 Triangles (filled) 195374 Rounded rects (outline) 53120 Rounded rects (filled) 441364 Done!
В некоторых бенчмарках выводится количество кадров, которое отрисовывается экраном(или которое передается на экран?) в секунду - FPS. Подскажите как доработать скетч или поделитесь скетчем где есть бенчмарк с подсчетом количества FPS.
Предположительно Screen fill из бенчмарка нужно разделить на 1000(функция millis(1000) - это 1 секунда), который выводит функцию testFillScreen(полное заполнение экрана 5-ю цветами - 5 кадров, если я правильно понимаю), то получается 5/131094/1000(получаем количество отрисованных кадров за время, которое переводим в секунды) = 0,038 FPS, что как-то очень мало и не верится по отрисовке другой графики.
Подскажите пожалуйста
FPS - Frames Per Second. Если один фрейм рисуется 50мс, то сколько таких фреймов отрисуется за 1000мс?
Так я спрашиваю код который будет выводить время отрисовки одного фрейма или количество фреймов за 1 сек,(одно из другого легко высчитывается).
Вы указали 50 мс с потолка ведь так или по моим данным?
Не вижу, что что-то легко высчитывается. Пытаюсь понять - исходя из каких соображений получено 0,038.
Не вижу, что что-то легко высчитывается. Пытаюсь понять - исходя из каких соображений получено 0,038.
Как я написал в первом посте, то если я правильно понимаю, то функция testFillScreen() выводит поочередно 5 цветов на экран, можно ли это считать 5 кадрами, я не уверен. В мониторе Screen fill показывает за сколько миллисекунд произошло выполнение функции testFillScreen().
Опять же это догадки только. Видел бенчмарки где сразу выводится FPS, но все видео без приложенных библиотек и исходных кодов, что не дает возможности понять как это работает.
Во-первых - не миллисекунд, во-вторых - FPS при разных заполнениях экрана будет изменяться, в-третьих - вы легко можете найти ответ безо всяких предположений, подумав над моим первым вопросом.
И да, пять заполнений экрана разными цветами есть пять фреймов.
Перед выводом на дисплей засекаете врямя, после вывода смотрите сколько прошло. И вот сколько таких отрезков в одной секунде столько и кадров.
Обратил внимание, что в бенчмарке написано микросекунды, и используется функция micros(), а функция milis()...
Тогда получается 5 полных заполнений экрана происходит за 0,131 секунду, что соответствует (5/0,131) приблизительно 38 кадров
проще тем же стм-ом посчитать время выпонления функции заполнения и не страдать херней.
проще тем же стм-ом посчитать время выпонления функции заполнения и не страдать херней.
Если бы Вы почитали мои сообщения прежде чем писать, то увидели бы, что стм и так считает и выдает время заполнения,но не одного, а 5 цветов экрана и выводит это время
Если бы Вы почитали мои сообщения прежде чем писать, то увидели бы, что стм и так считает и выдает время заполнения,но не одного, а 5 цветов экрана и выводит это время
__Alexander просто намекает, что за вас уже все подсчитано в том выводе, который вы приводите. Совершенно непонятно, неужели ради того, чтобы поделить 131мс на пять, надо заводить ветку на форуме...
__Alexander просто намекает, что за вас уже все подсчитано в том выводе, который вы приводите. Совершенно непонятно, неужели ради того, чтобы поделить 131мс на пять, надо заводить ветку на форуме...
не, не так. В стм есть аппатарный счетчик тактов, если его обнулить перед вызовом и посмотреть результат после, то увидим колличество тактов, затраченное на выполнение этой функции. А если поделить результат на частоту тактирования, то получаем время в секуднах.
намек: DWT_CYCCNT
не, не так. В стм есть аппатарный счетчик тактов, если его обнулить перед вызовом и посмотреть результат после, то увидим колличество тактов, затраченное на выполнение этой функции. А если поделить результат на частоту тактирования, то получаем время в секуднах.
намек: DWT_CYCCNT
нафига эти сложности, если в тесте это время уже подсчитано?
нафига эти сложности, если в тесте это время уже подсчитано?
Та то мысли в слух, смотря как оно там в тех mills-ах считется. Как в авр, тоже запускается таймер? А в целом да, не понятно что ТС надо то.
... надо заводить ветку на форуме...
Я был невнимателен и поэтому не правильно посчитал из-за это возникло недопонимание и вопрос. Вопрос решен, но кнопки закрыть или удалить тему нет, по крайней мере у меня.
Вопрос решен.
Chxal, мне вот интересно, откуда из строки:
Screen fill 131094
следует, что "выдает время заполнения,но не одного, а 5 цветов экрана"?
Chxal, мне вот интересно, откуда из строки:
Screen fill 131094
следует, что "выдает время заполнения,но не одного, а 5 цветов экрана"?
В моем сообщении есть функция, которая выводит значение "Screen fill". В этой функции экран сначала полностью заполняется черным, потом красным, потом зеленым, потом голубым и опять черным.
Ну да, как обычно: каждый разработчик почему-то стремится изобретать своих попугаев вместо того, чтобы пользоваться более или менее общепринятыми единицами.