Индикатор, то бишь дисплей

ATmega32, графический ЖКИ 128X64, панорама

Re: Индикатор, то бишь дисплей

Сообщение lizard66 » 22 апр 2017, 16:31

Покурил шит на St7920 и понял, почему он в двое дешевле. Работать в графике с ним настоящий гемор. Заливается "словами", да еще и по горизонтали, мало того, что придется переворачивать готовый знакогенератор, так еще чтоб прописать один символ 6х8, придется зачитать и «слить» данные с полем 8х16, а в случае, если символ на границе полей, то 8х32, а если символ двойной высоты…. Короче даже пробовать не буду, а я еще хотел по SPI запустить. :ne_ne_ne: Как алфавитник пойдет конечно, но для быстрой графики не годится ИМХО.
Аватара пользователя
lizard66
 
Сообщения: 152
Зарегистрирован: 11 фев 2011, 17:59
Благодарил (а): 4 раз.
Поблагодарили: 6 раз.

Re: Индикатор, то бишь дисплей

Сообщение lizard66 » 22 апр 2017, 16:56

Еще один сюрприз пропустил:

ST7920 is in serial interface mode when pulling down PSB pin. Two pins (SCLK and SID) are used to complete the
data transfer. Only write data is available in the serial interface mode.
Аватара пользователя
lizard66
 
Сообщения: 152
Зарегистрирован: 11 фев 2011, 17:59
Благодарил (а): 4 раз.
Поблагодарили: 6 раз.

Сообщение slav0n » 22 апр 2017, 17:13

да, он тормознутее, тайминги в 4 раза больше. И повёрнуто всё на 90 гр...
Но я не стал вертеть знакогенератор и глобально переписывать функции вывода. Просто сделал кадр в ОЗУ - буфер 1024 байт и всё, почти...
Могу снять видос живости панорамы на новом дисплее.
while(1||!1);
slav0n
Site Admin
 
Сообщения: 4327
Зарегистрирован: 15 ноя 2009, 18:43
Благодарил (а): 24 раз.
Поблагодарили: 384 раз.

кино

Сообщение slav0n » 22 апр 2017, 17:49

демонстрационное видео ST7920

while(1||!1);
slav0n
Site Admin
 
Сообщения: 4327
Зарегистрирован: 15 ноя 2009, 18:43
Благодарил (а): 24 раз.
Поблагодарили: 384 раз.

Сообщение lizard66 » 22 апр 2017, 19:24

slav0n писал(а): Просто сделал кадр в ОЗУ - буфер 1024 байт и всё, почти...

Это, конечно вариант, но выделять целый килобайт рамы под видеобуфер меня жаба душит, тем более оперативки под завязку. Я такой метод применил, чтоб компас оживить, но там только фрагмент был – всего 350 байт, и то рука тряслась, когда выделял.
Аватара пользователя
lizard66
 
Сообщения: 152
Зарегистрирован: 11 фев 2011, 17:59
Благодарил (а): 4 раз.
Поблагодарили: 6 раз.

Сообщение slav0n » 22 апр 2017, 19:40

каждому своё...
у меня со всеми примочками и видеобуфером рама как раз на 0.9 заполнена.
Data: 1858 bytes (90.7% Full)
while(1||!1);
slav0n
Site Admin
 
Сообщения: 4327
Зарегистрирован: 15 ноя 2009, 18:43
Благодарил (а): 24 раз.
Поблагодарили: 384 раз.

Сообщение slav0n » 22 апр 2017, 19:55

lizard66 писал(а): Only write data is available in the serial interface mode.

кстати, как видно из моей схемы включения дисплея, я не использую чтение из него. Сугубо Only write data.
while(1||!1);
slav0n
Site Admin
 
Сообщения: 4327
Зарегистрирован: 15 ноя 2009, 18:43
Благодарил (а): 24 раз.
Поблагодарили: 384 раз.

Сообщение lizard66 » 23 апр 2017, 08:56

slav0n писал(а):кстати, как видно из моей схемы включения дисплея, я не использую чтение из него. Сугубо Only write data.

Это я заметил еще на «старте». :a_g_a:

Метод расточителен не только в отношении расхода рамы. В идеале необходимо следить за тем, какие изменения произошли с момента последнего обновления образа на ЛЦД и отправлять только модифицированный фрагмент. Если же упростить и обновлять весь кадр с постоянным FPS, то что остается основному приложению? Если нельзя прочитать флаг “BF”, то придется выдержать паузу в 72мкС после отправки каждого байта, при отправке всего видеобуфера получается примерно 13 кадров в секунду и это без учета времени на обмен с тюнером по I2C и обработки данных. Можно отправлять байт в ЛЦД по прерыванию от таймера (72мкС), пока таймер отсчитывает интервал – проц занимается делом, но нужно выделять таймер. Слишком большая «цена».
Аватара пользователя
lizard66
 
Сообщения: 152
Зарегистрирован: 11 фев 2011, 17:59
Благодарил (а): 4 раз.
Поблагодарили: 6 раз.

Сообщение slav0n » 23 апр 2017, 10:06

на самом деле всё не так мрачно. Результат я показал в кино.
Меня ничто не обязывает обновлять экран с постоянной частотой.
А проблему вывода только модифицированного фрагмента можно частично решить, например, применением флага модиф. строки. При выводе просто чекать байт флагов.
Идею с флагами я ещё не реализовывал - нет особой необходимости.
while(1||!1);
slav0n
Site Admin
 
Сообщения: 4327
Зарегистрирован: 15 ноя 2009, 18:43
Благодарил (а): 24 раз.
Поблагодарили: 384 раз.

S-240416-ST7920

Сообщение slav0n » 24 апр 2017, 11:18

прошивка под дисплей ST7920.
Дисплей подключается точно также как и старый. Нужно всего лишь убрать резистор регулировки контрастности, так-как на новом дисплее подстроечник контраста уже впаян с завода.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
while(1||!1);
slav0n
Site Admin
 
Сообщения: 4327
Зарегистрирован: 15 ноя 2009, 18:43
Благодарил (а): 24 раз.
Поблагодарили: 384 раз.

Пред.

Вернуться в primuss3-spectrum

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1