4-x
Вид для печати
У проекта настолько странные тайминги всего, что я не очень понимаю, как он вообще работает.
1. Крутим не глядя проц на 50 тыщ тактов.
2. Смотрим, нет ли прерывания. Если есть - пересылаем его процессору.
3. Повторяем п. 1
В процессе выполнения пункта 1 крутим ещё пустые циклы на глазок, чтобы не работать уж слишком быстро :v2_dizzy_facepalm:
А в фоне по прерыванию работает отрисовка экрана с частотой... 10 кадров в секунду :)
Но вообще экран может общаться по SPI на огромных частотах - стабильно запустился у меня на 120 МГц, да и на 160 Мгц лишь артифачит при касаниях.
При условии, что занимаемся только экраном, нам потребовалась частота бы всего в 320 * 240 точек * 16 бит * 50 кадров = 61 мегагерц
Понятно, что накладные расходы, проц, клавиатура etc съедят ещё столько же. Но наших 160 МГц должно быть с запасом.
Перепилил главный цикл и прерывания, добился 50 Герц. Но пиксельной точности всё же не будет: SPI у ESP8266 может отсылать сразу по 16 32-битных слов, в них влезают 32 точки. Поэтому вместо обычного спектрумского чередования один такт CPU - одна точка экрана, нам приходится чередовать 32 точки и 32 такта процессора. Самые злые мультиколоры в демах уплывут. Но о демах ли нам думать с 48 килобайтами ОЗУ? :) А сделанные на "нирване" игры вроде бы должны работать.
Убил неделю, добился 50 Герц. Точнее, мне казалось, что добился. А потом заметил, что при разгоне c 80 МГц до 160 МГц частоты системных таймеров почему-то не удваиваются :v2_dizzy_facepalm:
А с правильными делителями снова в один фрейм отрисовка не укладывается. Копаем дальше.
Архитектура у ESP8266 такая, что у него случаются непредсказуемые тормоза из-за того, что код перед исполнением должен быть скопирован в кэш инструкций. Причем, эти тормоза прозрачны для программиста, и отлавливать их жутко муторно.
Что только эти студенты не придумают, лишь бы не доплатить 100 руб за ESP32 :)
Во, на ESP32 надо делать вот на такой платформе: https://aliexpress.com/item/4000527495064.html
Экран 160x80, должно быть относительно читаемо. Кемпстон замаппить на акселерометр, клаву прицепить как-нибудь через wi-fi :)
Тогда хоть какая-то интересность появляется.
Да ну, разрешение же никуда не годится. Есп32 должна тащить полноценный пиксель-в-пиксель экран с бордером.
порты можно дергать ?