Pull to refresh

Comments 11

Да, надеюсь по мере выпуска новых частей у автора переводить.
ESP32 нет достаточно ОЗУ с возможностями DMA для хранения двух буферов кадров

Не вяжется с
ESP32 имеет 520 КБ встроенного ОЗУ

UFO just landed and posted this here
Дисплей 16-битный, поэтому 153 кБ на кадр.
По-моему, это абсолютно ни на что не влияет, если контроллер дисплея не поддерживает команду наподобие flip(), т. е. не даёт возможности загружать новый буфер и держать на дисплее старое содержимое, а потом быстро сменить. Для этого у самого контроллера должен быть экранный буфер двойного размера, и я таких контроллеров не нашёл. С учётом этого, я пока что так и не понял, как делать красивую и плавную графику, сколько бы памяти ни было доступно микроконтроллеру.
Это даёт возможность в самой ESP держать 2 буфера, а 153 кБ из одного буфера при тактовой частоте 40 МГц можно выплюнуть за 4 миллисекунды, это будет совершенно незаметно даже без синхронизации. В это время ESP будет неспешно отрисовывать картинку во втором буфере, и потом по событию за 4 мс загрузит её в дисплей. И даже одним буфером можно обойтись, если потеря этих 4 мс не окажется критичной.
Хмм, спасибо, не учёл скорость ESP32. Когда мучался с графикой, это была в лучшем случае Arduino Due (ARM 84 Мгц), а в худшем — Uno, где никак не 4 мс на это уходит.
Ili9341 spi (стоит именно он ) никак не перегрузится за 4 мсек. В лучшем случае порядка 30 мсек. Читайте доки на дисплей. Или посчитайте 320*240*16/40000000= 0.03 сек
И да в спеке не 40Мгц, а только 80 наносекунд на бит, что гораздо медленнее. Впрочем почти все экземпляры работают быстрее 36 МГц.
Потому игры смотрятся позорно.30 ФПС им мало
UFO just landed and posted this here

Я понимаю, что это перевод, но вдруг кто-то будет пытаться реализовать.
В проекте ESP32 Jumpstart есть компонент для работы со стандартными кнопками. Отлично отрабатывает события press, release, tap (нажали и отпутили), hold (нажали и держим, причём можно несколько таймеров настроить — например, установили таймеры на 2, на 5 и на 7 секунд и держали кнопку 6 секунд, — и вызвать соответствующий callback либо при срабатывании каждого, т.е. на 2 и на 5 секунде, либо только последнего — на 5 секунды) и serial (т.е. пока держим кнопку — будут идти уведомления через заданное время). Удобно, что не нужно писать самому.


Драйвер дисплея тоже может иметь смысл взять готовый, особенно если речь идёт не об Odroid Go. Есть как отдельные библиотеки, так и проекты типа LittlevGL для создания GUI в embedded-системах, там есть и для esp32 вариант с десятком поддерживаемых дисплеев\контроллеров. Можно вытащить драйвер оттуда.


Кстати, идея опрашивать кнопки вместо использования прерываний для меня выглядит несколько странно: автор говорит, что хочет сэкономить заряд, понижая тактовую частоту, и при этом загружает проц поллиногом.


P.S. Вообще, esp32 очень мощная штука. Особенно для своей цены (баксов за 5-6 с доставкой можно получить готовую дев-плату, ещё 2-5 баксов — дисплей, а чип для установки на свою плату — ~$2.5). Вообще не понимаю, почему люди до сих пор используют всякие Arduino-платы, которые и дороже, и имеют в разы, если не на порядки, меньше возможностей. При этом те, кто по какой-то непонятной мне причине предпочитает Arduino IDE и библиотеки — спокойно могут продолжать с ним работать, хотя esp-idf — отличная штука, особенно если нужно чуть больше, чем просто поморгать светодиодиками.

Sign up to leave a comment.

Articles