SSD1306 без использования буфера
- Войдите на сайт для отправки комментариев
Чт, 15/10/2015 - 14:38
Парни! Есть данный дисплей и Atmega8. Необходимо работать с данным дисплеем без использования framebuffer-а, т.к ОЗУ всего 1024 байта. Сейчас пишу "драйвер" для работы с данным дисплеем. Но что-то не могу сообразить как рисовать примитивы без использования буфера при этом не затирая предыдущие символы и т.д имеющиеся на дисплее? Есть идеи?
P.S: IDE AtmelStudio. Arduino библиотеки не используются. Чистый С++.
Идея есть: в общем случае это невозможно. Возможно только в отдельных частных случаях.
Другими словами, можно придумать, как в данной конкретной программе отображать то, что хочется, но невозможно написать универсальный инструмент для рисования.
Это все, разумеется, при условии, что Вы работаете по I2C. По параллельному интерфейсу можно читать из видеопамяти контроллера.
А как тогда это делает библиотека u8glib?
Идея есть: в общем случае это невозможно. Возможно только в отдельных частных случаях.
Другими словами, можно придумать, как в данной конкретной программе отображать то, что хочется, но невозможно написать универсальный инструмент для рисования.
Это все, разумеется, при условии, что Вы работаете по I2C. По параллельному интерфейсу можно читать из видеопамяти контроллера.
Вот так вообщем.
http://microsin.net/programming/avr/u8glib-picture-loop.html
Идея есть: в общем случае это невозможно. Возможно только в отдельных частных случаях.
Другими словами, можно придумать, как в данной конкретной программе отображать то, что хочется, но невозможно написать универсальный инструмент для рисования.
Это все, разумеется, при условии, что Вы работаете по I2C. По параллельному интерфейсу можно читать из видеопамяти контроллера.
Ну не все так печально, но ограничения есть и их надо учитывать при проектировании. Проблема в том что за один раз выводить приходится сразу 8 пикселей. Даже если нужен 1 а значения остальных надо гдето брать а напрямую негде. Вариантвы решения:
1. Использовать экран с SPI, там вроде как можна вычитать с экрана.
2. Чисто текстовый экран и шрифты кратны 8 по высоте. Буфер не нужен, с флеша прямо отправляем на экран.
3. Картинки битмапы, аналог п.2
4. Графические примитивы не пересекающиеся, на чистый экран без буфера.
5. Графические примитивы пересекающиеся, т.к. мы их знаем то организуем наложение как надо без буфера. Аналогично примитивы по битмапу.
6. Комбинация пп2-5 в одной области экран, сложно геморно, лучше избегать. Если элементы не заданы в нашей программе то могут требоватся буфера.
7. Динамический буфер для части экрана. Весь экран можна как несколько частей перерисовать.
8.Грамотно спроектировать интерфейс как совокупность областей каждая из них соответствует пп 2-5