прога для конвертации обычных шрифтов в матричные:
https://gitlab.com/riva-lab/matrixFont
статья о ней на хабре https://habr.com/ru/post/575332/
Just_Fluffy, точно, открутил, посмотрел, так и есть.. Подтяжку после стаба я не учёлJust_Fluffy писал(а):так там на плате дисплея бортовой стаб есть обычно. И подтяжка и2ц к питанию дисплея (после стаба)
Нее.. мне не грустно..)) Хоть и данные идут 16 бит на пиксель.Just_Fluffy писал(а): Но на атмегах гонять такие дисплеи грустно. Памяти в меге мало, частота низкая....
ну можно обсудить принципы вывода информации.. если лого, то можно не по пиксельно лить, а индексированно..Just_Fluffy писал(а):shonty, ну вам повезло, и шрифты поместились, и место для кода. А у меня 8-битное лого 240*240 не поместилось в мегу...
Чисто по визуальным ощущениям задержка только при первоначальной заливке. Не хватает частоты ровно в 1,5 раза. Т.е. 30MHz уже идеально. Дальше разгоняться для себя не вижу смысла. Тем более на асме всё оптимизированно до предела.Adrift писал(а):У меня есть такой дисплей, он способен работать в 7 раз быстрее, примерно на 70MHz.
Да.. тогда согласен. Полноценное фото не впихнуть. Но оно там всё равно с искажением будет. В этих дисплеях кодирование цвета идёт в формате 565, иной раз переходы даже в градациях серого фиг подберёшь) то в зеленоватый съедешь, то ещё куда))Just_Fluffy писал(а):Полноцветное лого. на алгоритмах сжатия без потерь 20-30% получается. а jpeg в мегу328
Спорить не буду, но как то странно, что на 70MHz работает в 7 раз быстрее чем на 20MHzAdrift писал(а):У меня есть такой дисплей, он способен работать в 7 раз быстрее, примерно на 70MHz.
Сорри.. на 10 ))Adrift писал(а):У вас на меге SPI работает на 20MHz? )
в атмегах нет буфера SPI. Единственный вариант - писать на асме (или ассемблерную вставку) и подбирать NOPы в цикле отправки в SPI так, что б загрузка нового байта в SPDR происходила сразу после отправки последнего бита.shonty писал(а):не совсем буферизация как таковая, а скорее изврат))
Нее.. готовить данные сначала, и только потом выполнять spi_wait.Just_Fluffy писал(а):Единственный вариант - писать на асме (или ассемблерную вставку) и подбирать NOPы в цикле отправки в SPI так
Да, так и есть.Adrift писал(а):Там вроде SPI в принципе не умеет биты непрерывно слать, в любом случае будет задержка между байтами в такт или два, не помню точно.
Мы же говорим об максимально возможной скорости обмена по SPI. Опрос флага SPIF - если повезет - то будет быстро. Если не повезет - можно потерять несколько тактов. Если заранее известна частота тактирования SPI - вместо цикла опроса флага готовности просто ставятся NOPы в нужном количестве. Можно даже не высчитывать, а заведомо поставив больше нопов, чем надо, смотреть логическим анализатором и посчитать, сколько нопов надо выбросить. Но как на буферируемом SPI - на обычном не выйдет. Пауза будет, минимальная. Но будет.shonty писал(а):готовить данные сначала, и только потом выполнять spi_wait.
Да, там минимальная задержка должна быть, надо смотреть в ДШ тайминги SPIAdrift писал(а):Там вроде SPI в принципе не умеет биты непрерывно слать, в любом случае будет задержка между байтами в такт или два
А где вы увидели в моих словах программный SPI? Я исключительно про аппаратный.Starichok51 писал(а):нет необходимости делать программный SPI с NOPами