SSD1306 без использования буфера

gppsoft
Offline
Зарегистрирован: 13.10.2014

Парни! Есть данный дисплей и Atmega8. Необходимо работать с данным дисплеем без использования framebuffer-а, т.к ОЗУ всего 1024 байта. Сейчас пишу "драйвер" для работы с данным дисплеем. Но что-то не могу сообразить как рисовать примитивы без использования буфера при этом не затирая предыдущие символы и т.д имеющиеся на дисплее? Есть идеи?

P.S: IDE AtmelStudio. Arduino библиотеки не используются. Чистый С++. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Идея есть: в общем случае это невозможно. Возможно только в отдельных частных случаях.

Другими словами, можно придумать, как в данной конкретной программе отображать то, что хочется, но невозможно написать универсальный инструмент для рисования.

Это все, разумеется, при условии, что Вы работаете по I2C. По параллельному интерфейсу можно читать из видеопамяти контроллера.

gppsoft
Offline
Зарегистрирован: 13.10.2014

А как тогда это делает библиотека u8glib?

Logik
Offline
Зарегистрирован: 05.08.2014

andriano пишет:

Идея есть: в общем случае это невозможно. Возможно только в отдельных частных случаях.

Другими словами, можно придумать, как в данной конкретной программе отображать то, что хочется, но невозможно написать универсальный инструмент для рисования.

Это все, разумеется, при условии, что Вы работаете по I2C. По параллельному интерфейсу можно читать из видеопамяти контроллера.

gppsoft
Offline
Зарегистрирован: 13.10.2014
Logik
Offline
Зарегистрирован: 05.08.2014

andriano пишет:

Идея есть: в общем случае это невозможно. Возможно только в отдельных частных случаях.

Другими словами, можно придумать, как в данной конкретной программе отображать то, что хочется, но невозможно написать универсальный инструмент для рисования.

Это все, разумеется, при условии, что Вы работаете по I2C. По параллельному интерфейсу можно читать из видеопамяти контроллера.

Ну не все так печально, но ограничения есть и их надо учитывать при проектировании. Проблема в том что за один раз выводить приходится сразу 8 пикселей. Даже если нужен 1 а значения остальных надо гдето брать а напрямую негде. Вариантвы решения:

1. Использовать экран с SPI, там вроде как можна вычитать с экрана.

2. Чисто текстовый экран и шрифты кратны 8 по высоте. Буфер не нужен, с флеша прямо отправляем на экран.

3. Картинки битмапы, аналог п.2

4. Графические примитивы не пересекающиеся, на чистый экран без буфера.

5. Графические примитивы пересекающиеся, т.к. мы их знаем то организуем наложение как надо без буфера. Аналогично примитивы по битмапу.

6. Комбинация пп2-5 в одной области экран, сложно геморно, лучше избегать. Если элементы не заданы в нашей программе то могут требоватся буфера.

7. Динамический буфер для части экрана. Весь экран можна как несколько частей перерисовать.

8.Грамотно спроектировать интерфейс как совокупность областей каждая из них соответствует пп 2-5