С экранчиком сегодня закончил все основные операции, обновил на гитхабе. Вот так выглядит:
"Артефакты" слева вверху каждой строчки — неспроста! Это я прокосячил: когда вычислял индекс нужного спрайта в массиве, я ширину экрана в спрайтах умножал на координату Y и делил на ширину спрайта в пикселях. Вот поближе:
А скобочки вокруг "Y/W" забыл… Здесь все просто, заработало:
Сам по себе шрифт высотой в 16 пикселей (а надо же еще и про межстрочный интервал не забывать, т.е. фактически 14 выходит, кроме некоторых "выдающихся" символов) оказался очень мелким для этого экрана:
поэтому я сделал операцию масштабирования (тупое масштабирование: вместо 1 пикселя выводится квадрат n×n пикселей, где n — от 1 до 10). Думал еще сегодня успею обработчик кнопок включить (там в основном из старого скопировать + простой custom_buttons.c наваять), но пора уж и ко сну готовиться — вчера досидел до полвторого, потом еле-еле с утра раскачался на работу идти. Еще добавлю индикацию светодиодами, подсветку экрана и светодиоды включать на время (скажем, 30 секунд после последней активности кнопок), чтобы не создавать паразитную засветку ПЗС-ке, в которую азот заливается. Менюшку, опять же, добавить (я в "тетрисе" продумал одноуровневую, но, похоже, надо таки уже полноценную написать). Не знаю, правда, что там в менюшке будет, но уже подумать стоит. Настройки какие-нибудь и т.п. Окончательно будет понятно после экспериментов "на кошках": с двумя дьюарами и имитацией реальной системы заливки (с датчиками температуры около горловины заливаемого — детектировать перелив). Ну и откалиброваться по уровню азота в дьюаре. Прошлый раз у нас ничего не вышло, т.к. "24-вольтный" нагреватель при включении в 24В умудрился натурально сгореть, будучи погруженным на дно дьюара, полного азота! До этого мы его в 12В включали, азот весело из дьюара вытекал — надо, видимо, неплохо мощность ограничить.
Да, воткнул в блокирующем чтении SPI четыре считывания SPI2->DR перед операцией. Стало выдавать одно и то же. Однако, с DMA это не прошло, а вот если SPI сбрасывать и заново настраивать каждый раз перед запуском чтения по DMA, то детерминированно получается (но треш же какой-то!). Частоту SPI поднял до 18МГц. На шлейфе длиной сантиметров 35 вроде никаких проблем не возникает. А вот насчет того, что нога MISO скорей всего вообще не подключена к драйверу экрана — думаю, правда. Потому как каждый раз при смене скорости получаю при чтении одного и того же регистра разные значения (но при этом экран заполняется нормально и "артефактов" не видно). Следовательно, здесь MISO служит исключительно для работы с тачскрином (знать бы еще, как эти китайские шельмы его подключили! что-то вменяемых схем в интернете на этот экран не обнаруживается).