Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

T-VGA

Вт мар 14, 2023 20:42:06

В связи с предложениями по реанимации одного давнего замороженного проекта изучается интерес общества к ниже указанным и им подобным устройствам на платформе Arduino. Все устройства объединяет одно - шилд, позволяющий выводить изображение на стандартный VGA-монитор.

1. Крупные часы, календари, таймеры обратного отсчета.

2. Бегущие строки (высота символа около 20см), и горизонтальные и вертикальные, в том числе состоящие из нескольких расположенных в ряд дисплеев (количество шилдов на одной Arduino по количеству дисплеев).

3. Панели индикации погодных станций. Отображение температуры, влажности воздуха в помещениях и на улице, направления и силы ветра, давления и т.д. Списки измерений за прошедшие периоды.

4. Панели индикации автоматики "умного дома". Установленные и текущие температуры воздуха в помещениях, воды в бойлерах, напряжения в сети, в аккумуляторах и т.д. Логи событий с датчиков.

5. Панели индикации домашних аудиокомплексов. Ползунки регуляторов, шкалы приёмников, состояния входов/выходов, включенные режимы, показометры уровней по каналам и частотам, спектроанализаторы (вертикальные и горизонтальные).


Функционал шилда будет обеспечивать возможность реализовать указанные устройства на самых простых платах Arduino. Основные моменты:

- выходной режим 640x480@72Hz, фактическое разрешение 320х240, на нативном разрешении 1280х1024 самых распространённых 17,19-дюймовых 5:4 мониторах, позволит настроить масштабирование изображения пиксель в пиксель, без интерполяции и характерных для неё искажений. Таких мониторов сейчас на авито хоть взрывай, по ценам от 600р вместе с доставкой.

- режим отображения только текстовый, 40 символов, 20 строк (18.5 в зоне видимости, 1.5 строки невидимы, в них можно будет готовить данные, затем аппаратно вдвигать в видимую область).

- кодировка ASCII, кириллица CP1251, псевдографика для рисования красивых прогрессбаров и таблиц в традициях MS-DOS`а и Нортон-коммандера. Знакоместо 8х13 пикселей, на 19-дюймовом мониторе физический размер 1х1.5см.

- цвет, для каждой текстовой строки можно выбрать 1 из 64 цветов для символа и 1 из 64 для фона (RGB-222, 6 бит).

- атрибуты: инверсия. Мигание цветом, гашением, инверсией.

- отключаемый курсор.

- операции с видеопамятью (экран, строка, столбец): очистка, заполнение шаблоном, сдвиг в разных направлениях, обмен соседних элементов. Масштабирование - извлечение пикселей изображения символа в знакоместа строки или столбцы.

- интерфейс UART, 115200bps, только приём, примитивный протокол управления, совместимый с обычной терминалкой. Вход разрешения для простого каскадирования нескольких шилдов.


Вообще в разное время выпускалось много разных VGA-шилдов, но все они померли в общем по одной причине - несоответствие цены своим возможностям. Вот и хочется понять, за какие деньги оно кому-то может быть надо? Будет ли при этом хоть какой-то коммерческий смысл этим заниматься, или вообще не ввязываться в этот мутняк.

Re: T-VGA

Вт мар 14, 2023 21:46:38

В связи с предложениями по реанимации одного давнего замороженного проекта изучается интерес общества к ниже указанным и им подобным устройствам на платформе Arduino. Все устройства объединяет одно - шилд, позволяющий выводить изображение на стандартный VGA-монитор.
Задумка хорошая (на CGA такое уже сделано на 5+), но постановка задачи неудачная, изначально кривая.
- выходной режим 640x480@72Hz, фактическое разрешение 320х240, на нативном разрешении 1280х1024 самых распространённых 17,19-дюймовых 5:4 мониторах, позволит настроить масштабирование изображения пиксель в пиксель,
Уже ошибка! На первом же предложении. Это кривое разрешение, которое мониторы будут интерполировать. Без интерполяции 1280х1024 масштабируется в 320х256. А для 320х240 нужны мониторы 1280х960. Они тоже встречались в природе, но реже.
- режим отображения только текстовый, 40 символов, 20 строк
Тоже неправильно. Этого же мало! Надо 80 знаков в строке, то есть хотя бы 480, а то и все 640 точек по горизонтали. А отсюда хотелось бы вырисовать и 384, а то и все 512 строк, то есть точек по вертикали. И текстовых строк надо 25. Можно одну (или ещё одну) служебную. Но можно и без неё. Да, я понимаю, что 480 по горизонтали — это минимум 15 МГц тактовой (и то у проца больше ни на что не останется времени). А 640 — все 20 МГц на том же условии. И для двадцати пяти с копейками ВГАшной частоты пикселей придётся мастырить двухпортовое ОЗУ на 60-80 байт с нехилым быстродействием и перетактирование целой строки пикселей из него, потому как AVR тактовую 25 просто не сдюжит. Но это будет годное решение. А 320х240 (40х20 текста) не годится даже для игрушек на бейсике.
- кодировка ASCII
Ну к этому вопросов нет. При наличии исходников каждый сам сможет нарисовать себе знакогенератор в любой кодировке.
- цвет, для каждой текстовой строки можно выбрать 1 из 64 цветов для символа и 1 из 64 для фона (RGB-222, 6 бит).
А оставшиеся 2 бита на что ушли? Может, их пустить на R и B? Пусть им будет по 3 бита, а зелёному 2. И где планируется хранить атрибуты вроде курсора, мигания, инверсии и пр.? Они же в 2 бита не помещаются...
- интерфейс UART, 115200bps, только приём, примитивный протокол управления
Это правильно, тут излишеств не надо.
Вот и хочется понять, за какие деньги оно кому-то может быть надо?
320х200 при 40х20 текста ни за какие деньги не надо.
Будет ли при этом хоть какой-то коммерческий смысл этим заниматься, или вообще не ввязываться в этот мутняк.
Да никакого коммерческого смысла в этом блудняке не будет! Это надо делать открытым проектом, как с CGA — каждый делает как хочет, либо слепо копируя оригинальный проект, либо модифицируя его под себя.

P.S.: update - вместо двухпортового ОЗУ можно, пожалуй, взять однопортовое, но на две строки, то есть 120-160 байт, и первую строку формировать загодя (ещё в кадровом импульсе), а потом всю дорогу работать с опережением на одну строчку.
Последний раз редактировалось Eats Вт мар 14, 2023 21:52:19, всего редактировалось 1 раз.

Re: T-VGA

Вт мар 14, 2023 21:51:54

Было бы неплохо сделать это в виде модуля, подключаемого сразу к LVDS матрицы и чтобы на борту была GRAM и доступ по SPI - то есть, сделать из любой матрицы обычный дисплей с SPI. Тормознутость не так страшна - можно загнать статическую картинку и менять только некоторые области, для умного дома самое-то.

Re: T-VGA

Ср мар 15, 2023 11:13:00

Уже ошибка!

Да, по вертикали интерполяция остается, но видимо с искажениями от неё производители мониторов научились более-менее бороться. Проблемы создает только горизонтальная интерполяция. Это можно увидеть на компьютере с монитором 1280х1024 и старой Windows, установив там разрешение 640х480.

Тоже неправильно.

Вот вам не кривой проект, больше символов, больше строк, больше цветов, исходники на халяву, заточка на олдскул-игры, всё как вам нравится. Только вот что-то не видно конструкций с этим шилдом. Интересно почему?

Этого же мало!

Задача не сделать наикрутейшее, если снять ограничение по себестоимости, можно и полноценную видеокарту с fullhd замутить. Задача сделать доступное, чтоб любой пионер дописав несколько строк в свой скетч получил какой-никакой практический результат. И чтоб ему не требовалась для этого квалификация, позволяющая собирать чужие исходники в квартусе для фпга.

С другой стороны есть проекты вообще бесплатные, чисто софтверные, но они совсем убогие по возможностям, поэтому тоже не "взлетают". Хочется нащупать золотую середину, если она вообще есть.

320х200 при 40х20 текста ни за какие деньги не надо.

Человеку с достаточной квалификацией конечно не надо. Но посмотрите самые массовые наборы для DIY, это всякие мигалочки, ёлочки из светодиодов, часики, светодиодные кубы. Кто-то ведь их покупает, значит востребовано. Мне это не понятно, собственно поэтому и завёл эту тему.

Martian, простейшая LVDS-матрица уже не слабо стоит, чтобы экономить на интерфейсе. Да и есть уже аналоги типа Nextion.

ЗЫ: сложился стереотип, раз VGA, значит должно быть разрешение, цвета, fps, как на большом ПК, в лучших традициях маркетинга. А по сути обсуждаемый тут шилд - это просто "большой ОЛЕД", подключённый к примитивной ардуине.

Re: T-VGA

Ср мар 15, 2023 13:15:16

Матрицы очень часто попадаются от техники. У меня три от нотубуков и штук 5 от мониторов. Не стоят, а валяются )) Да и бэу они недороги. А если делать для умного дома, то толщина мониторчика не последнее значение имеет: толстый заводской на стене - это ужасно

Re: T-VGA

Ср мар 15, 2023 14:16:32

согласен нс Martian, Martian, Martian, донорскиематрицы сутилизаци техники стоят символически а качество зачастую выше
но проблема в том что новые мосты и процики перестали апаратно подерживать эти матрицы апаратно перейдя на хитрожопый интерфэйс eDP -экономия ног однако или желание всех пересадитьна диф пары навроде Sata|PCIeXhres?? причем отделныхчипоф переходникоф этих интерфэйсоф на полках не наблюдаюется

Re: T-VGA

Ср мар 15, 2023 15:01:21

Вот вам не кривой проект, больше символов, больше строк, больше цветов, исходники на халяву, заточка на олдскул-игры, всё как вам нравится. Только вот что-то не видно конструкций с этим шилдом. Интересно почему?
     Сразу вижу две причины:
1. Он небесплатный.
2. Он 3-вольтовый. За 30 евров могли бы сделать и 5-вольтовый.
     Но ещё немаловажно и то, что он реально наворочен: там одного только внешнего статического ОЗУ полмегабайта, не считая динамического. У первых IBM PC не всегда было на борту столько. И 25-мегагерцовый контроллер о 100 выводах смонтировать не каждому по силам (я, например, за такие работы невооружённым глазом уже в силу возраста не берусь). А монохромный текст 80х25 в графическом поле 640х480 вполне реализуется на 20-мегагерцовой (и, как следствие, 5-вольтовой) атмеге328. Я тут прикинул, даже внешнего ОЗУ на одну пиксельную строку не надо, вполне хватает родных 2 кБ ОЗУ атмеги (которая, кстати, ещё бывает и в ДИПе). Только утроитель частоты прикрутить для 6-мегагерцового ТТЛ-сигнала. Поскольку частота фиксирована, то и задача эта вполне проста, всяко проще внешнего ОЗУ.
     А режим 40х25 (с широкими буквами) уменьшает требования к объёму ОЗУ вдвое, значит второй байт можно отдать под цвет/атрибуты, реализовав этим режимом примерно то или близко к тому, с чего вы начали тему.
     А вот предусмотреть ли программное переключение режимов "на ходу" или отдать это на откуп перемычкам, которые опрашивать только при старте, это уже можно прикинуть и обсудить.
     Ну и паять микросхемы в ДИП-корпусе можно чуть ли не вслепую, на ощупь. :-)

Re: T-VGA

Ср мар 15, 2023 15:43:11

Для вывода текста и простой графики низкого разрешения и малого количества цветов вообще ничего почти не надо делать, кроме как программки, например: http://www.pic24.ru/doku.php/osa/ref/examples/intro

Re: T-VGA

Ср мар 15, 2023 22:50:19

Для вывода текста и простой графики низкого разрешения и малого количества цветов вообще ничего почти не надо делать, кроме как программки, например:
Этот пример старый и неудачный, потому что текст 80х25 (и даже 40 знаков в строке!) Виктор не осилил. А уж графику и подавно. Оно и понятно: у pic18f252 всего полтора килобайта своего ОЗУ, тогда как 80*25=2000, то есть даже от 2КБ (если брать атмегу328) остаётся всего 48 байт на стек и прочее. По быстродействию не смотрел, потому как 40 МГц у пика не очень равны десяти мегагерцам у AVR. Тем более, что у AVR не 10, а 20 МГц. Десятилетием (точнее, девятью годами) позже Grant Searl предложил вполне годное и развёрнутое решение для 80х25, которое надо лишь смасштабировать по временам и уровням с CGA до VGA.
Хотя раз пошла такая пьянка, то глянул бегло текст для пика: там 5 команд на символ (которые, если я правильно понял, выполняются за 8*4=32 такта 40-мегагерцовой тактовой), тогда как Грант на AVR тоже уложился в 8 тактов, но у AVR такт не надо умножать на 4, плюс вдвое бОльшая тактовая (20 против 10), плюс бОльший объём ОЗУ... В общем, на том PICе я бы не взялся за 80х25 для VGA. Не укладывается он в эту задачу. А атмега328 укладывается.

Re: T-VGA

Ср мар 15, 2023 22:52:14

А монохромный текст 80х25 в графическом поле 640х480 вполне реализуется на 20-мегагерцовой (и, как следствие, 5-вольтовой) атмеге328. Я тут прикинул, даже внешнего ОЗУ на одну пиксельную строку не надо, вполне хватает родных 2 кБ ОЗУ атмеги

Только для хранения символов 80x25 уйдёт 2кБ ОЗУ. Ну пусть урежем осетра вполовину, и наскребём памяти под пиксели на пару строк, одну выводим, другую готовим, когда МК это будет успевать делать? Если применять внешнее ОЗУ, потребуется немаленькая кучка внешней логики, ну или fpga, чтоб обеспечить перекачку данных. И сколько это будет по себестоимости?

Ну и паять микросхемы в ДИП-корпусе можно чуть ли не вслепую, на ощупь. :-)

DIP-корпуса удорожают монтаж, увеличивают требуемую площадь печатной платы, что тоже сказывается на цене. Кроме того они хуже по частотке/ЭМС в плане трассировки.

Martian, такие проекты это скорее демосцена, выдавливание всей до капли производительности МК. Достойно, интересно, но в массовом сегменте применить практически невозможно.

Re: T-VGA

Ср мар 15, 2023 22:59:14

ну, в массовом сегменте и светодиод вызывает проблему... Я давно решил не заморачиваться на массовость - это очень расплывчато и всем не угодить

Но если сделаешь задуманное - воспользуюсь наверняка

Re: T-VGA

Ср мар 15, 2023 23:33:40

А монохромный текст 80х25 в графическом поле 640х480 вполне реализуется на 20-мегагерцовой (и, как следствие, 5-вольтовой) атмеге328. Я тут прикинул, даже внешнего ОЗУ на одну пиксельную строку не надо, вполне хватает родных 2 кБ ОЗУ атмеги
Только для хранения символов 80x25 уйдёт 2кБ ОЗУ.
Не 2, а поменьше. 48 байт ещё остаётся на всякие накладные расходы.
Ну пусть урежем осетра вполовину, и наскребём памяти под пиксели на пару строк, одну выводим, другую готовим,
Я, возможно, не совсем понятно выразился. ВГАшный режим 640х480 укладывается в быстродействие 328-й атмеги, то есть буфер на строку, о котором я подумывал изначально, и уж тем более на пару строк после расчётов оказался вообще не нужен. Достаточно текстового буфера в 2000 байт.
когда МК это будет успевать делать?
На лету при запрещённых прерываниях. Только быстродействие надо не 16 МГц, как было у Гранта, а все 20 (точнее, 18.9). И синхронизацию делать не программно, а аппаратно. Это один счётчик на 6 или на 8. Всё уже посчитано до нас.
такие проекты это скорее демосцена, выдавливание всей до капли производительности МК. Достойно, интересно, но в массовом сегменте применить практически невозможно.
Дык я про это и сказал в первом же своём сообщении: никакого коммерческого смысла в этом блудняке не будет! А что до выдавливания, так в законченном устройстве жалко, что ли, мегагерцев и килобайтов?! :-) Кварцы что на 16 МГц, что на 25.175 стОят одних и тех же денег.

Re: T-VGA

Чт мар 16, 2023 08:23:29

Только для хранения символов 80x25 уйдёт 2кБ ОЗУ.

В 1991-м делал автономный терминал, для CRT правда. 80х25, 4(!) кодовых таблицы, переключение на лету, скроллинг такой что ПК курило в сторонке), клавиатура, 10 чипов всего - ТЕХ времён. ВГ75 и 2КБ ОЗУ хватало на всё.

Re: T-VGA

Чт мар 16, 2023 10:09:56

Дык я про это и сказал в первом же своём сообщении: никакого коммерческого смысла в этом блудняке не будет!

Правильно ли я понял, если отбросить незначительные детали, то вам не нравится только 40 символов в строке? В первом сообщении я привел пример конкретных устройств, которые можно будет реализовать на мелкой Arduio с помощью обсуждаемого шилда. На мой взгляд 40 строк для них подходят больше, чем 80. Высота символа на мониторе 15мм, это комфортное наблюдение отображаемых данных с 1.5 метра. Я даже больше склоняюсь к 20 символам в строке при том же разрешении, высота символа 3см красивым шрифтом. А вот под 80 символов я не могу придумать задачу для Arduino, интересную в массовом применении. Не того плана это железка, чтоб генерить поток информации, за которым нужно было бы следить сидя за монитором впритык.

Навороченные и наоборот софтверные проекты возможно и не взлетали, потому что первые пытались объять необъятное по функционалу, раздуваясь в цене, а вторые наоборот, минимизируя стоимость, реализовывали то, что получалось выдавить из скудных ресурсов, без каких-то прикидок о том, для чего это можно применить.

OKF, скорее всего делали под ТВ, ну или CGA, или EGA. У VGA времянки пошустрее, не на много, но как раз на столько, что дешёвые решения на мелких контроллерах возможны только сильно урезанные по функционалу, да ещё требующие подвига написания на жестком асме.

ЗЫ: Я проводил некоторые эксперименты с разными доступными мониторами. После этого и пришлось остановиться на 640х480@72Гц, потому что более лёгкие режимы, тоже прописанные в стандарте VESA, типа 640х480@60Гц или 800х600@56Гц, на некоторых мониторах не поддерживались.

Re: T-VGA

Чт мар 16, 2023 13:35:07

Правильно ли я понял, если отбросить незначительные детали, то вам не нравится только 40 символов в строке?
Речь не обо мне, а ещё и об остальных потенциальных пользователях. Мне 40 символов нравятся! Мне и 20 символов нравятся. Мне не нравится, что нет 80-ти символов. Без них я бы такой девайс не купил бы.
Я даже больше склоняюсь к 20 символам в строке при том же разрешении
Эта мысль мне понятна, хотя я больше склоняюсь к ряду 128-64-32-16.
А вот под 80 символов я не могу придумать задачу для Arduino
А не надо ничего придумывать! Всё уже придумано до нас: терминал. Если в 98-й винде он ещё был, то потом незаметно исчез, и сейчас применить компьютер в роли терминала не так-то легко. А вот такой шилд вполне мог бы быть и терминалом (помимо того, что просто большим ЛЕД-дисплеем). Повторюсь, не обязательно уметь переключать режимы на лету, можно делать это перемычками, которые опрашивать только при включении питания.
OKF, скорее всего делали под ТВ, ну или CGA, или EGA.
Естественно! 8275 может уместить 80 символов только в 38 микросекунд. У ТВ и ЦГА на это 50 микросекунд, в которые 8275 укладывается. А у ВГА вдвое меньше, и в них 8275 уже не укладывается. Но главное, 8275 исповедует 7-битный знакогенератор, то есть на 128 символов. Русскую половину кодовой таблицы в нём негде размещать, разве что попытаться воспользоваться каким-нибудь атрибутом и сгородить для этого внешнюю обвязку для управления старшим битом. Но ведь не для того используют СБИС, чтобы вокруг них городить ещё что-то.
У VGA времянки пошустрее, не на много, но как раз на столько, что дешёвые решения на мелких контроллерах возможны только сильно урезанные по функционалу, да ещё требующие подвига написания на жестком асме.
Ой, да был бы подвиг! Всё уже подвигнуто до нас, осталось взять и воспользоваться. Ну разве что немножко смасштабировать вот на то самое "не на много, но как раз на столько", на которое 8275 не хватит, а атмеги328 уже хватает, пусть бы и в притык, без запаса для дальнейшего расширения.
более лёгкие режимы, типа 640х480@60Гц, на некоторых мониторах не поддерживались.
А вот здесь можно поподробнее? Много ли таких мониторов? Что за модели? Режим-то уж больно вкусный, тем более один из родных ВГАшных... Возможно, надо было попробовать 640х400, этот-то уж самый родной для ВГА. ИЗ 400 растровых строк тоже получаются 25 текстовых (и 20 тоже получаются, и 16), так что решение было бы вполне годным. Не знаю, что при этом будет по вертикали у ЖК-мониторов, но CRT-мониторы этот режим умеют готовить наилучшим образом.

Re: T-VGA

Чт мар 16, 2023 13:52:11

Естественно! 8275 может уместить 80 символов только в 38 микросекунд с копейками. У ТВ и ЦГА на это 50 микросекунд, в которые 8275 укладывается. А у ВГА вдвое меньше, и в них 8275 уже не уложится. Но главное, 8275 исповедует 7-битный знакогенератор, то есть на 128 символов. Русскую половину кодовой таблицы в нём негде размещать, разве что попытаться воспользоваться каким-нибудь атрибутом и сгородить для этого внешнюю обвязку для управления старшим битом. Но ведь не для того используют СБИС, чтобы вокруг них городить ещё что-то

Нет, т.к. рулил всем отдельный проц, то ничто не мешало заниматься перекодировкой - недостающие кириличные символы заменялись латинскими. Ну и скроллинг делался без перемещения всего буфера, а изменением адресации "DMA". В кавычках - потому что как таковой DMA отсутствовал, его функции выполнял CPU.

Re: T-VGA

Чт мар 16, 2023 14:29:47

Если в 98-й винде он ещё был, то потом незаметно исчез, и сейчас применить компьютер в роли терминала не так-то легко.

Под современные системы есть отличный терминальный инструментарий, который и не снился убогому гипертерминалу 98винды. Dockligh, Putty, ModbusPool, Zoc, Eltima, земечательный инструмент SerIO и куча других. Зачем человеку, которому потребовалась терминалка, обязательно это реализовывать именно на ардуино и стационарном мониторе? Да и у него в хламовнике (или накрайняк на авито), наверняка валяются старые ноуты или PC, подходящие для этих целей, с гибкой настройкой, и с клавиатурой, и с возможностью сохранения истории.

Ой, да был бы подвиг!

Моё мнение, что подход с высчитыванием тактов на символ, успеет-не успеет, загрузка проца на 99.5%, в массовом, коммерческом изделии неприемлем.

Много ли таких мониторов? Что за модели?

Десяток мониторов разных пробовал, конкретно 640х480@60Гц не заработал на парочке, один не помню какой, другой помню - AOC E2250S. В характеристиках мониторов иногда встречается параметр "минимальная частота строк", возможно имеются какие-то ограничения на эту тему.
Ответить