nedoPC.org

Community of electronics hobbyists established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Sep 2022 13:06



Reply to topic  [ 59 posts ]  Go to page Previous  1, 2, 3, 4
Видеотерминал - немного мыслей 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 20330
Location: Silicon Valley
Reply with quote
Post 
emax wrote:
c PAL камеры, LM1881 для связи с AVR. Или можно черное поле этой же AVR формировать, на это много ресурсов не надо


если авр сам будет видео генерить - может быть (хотя как там телетекст выводится - в сигнале гашения? не маловато времени?), а если принимать видео и выдавать модифицированное, то вряд ли...

_________________
:eugeek: https://twitter.com/Shaos1973


12 Feb 2015 11:25
Profile WWW
God

Joined: 02 Jan 2006 03:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
Идея любопытная. Формируем пустое ч/б видео и подмешиваем туда телетекст. А сам телевизор уже его декодирует и выводит, причём в цвете. :kruto:
Применение правда весьма ограниченое - только телевизоры понимающие телетекст.
И посимвольный вывод не организуешь, только страницами, причём довольно медленно.


12 Feb 2015 23:39
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 20330
Location: Silicon Valley
Reply with quote
Post 
Ну например в штатах все продаваемые телевизоры системы NTSC обязаны понимать субтитры (CC=Close Captioning), у меня лет 10 назад тоже была мысль попробовать генерить текст через CC - там буквы можно в любое место экрана ставить, однако строк там не так чтобы сильно дофига было - 16 чтоли...

_________________
:eugeek: https://twitter.com/Shaos1973


12 Feb 2015 23:42
Profile WWW
Writer

Joined: 15 Sep 2014 23:32
Posts: 24
Location: Пермь
Reply with quote
Post 
jdigreze wrote:
И посимвольный вывод не организуешь, только страницами, причём довольно медленно.


почему медленно, если в телетексте только одна страница, то телевизор будет перезагружать ее довольно быстро. Зависит от того сколько строк телетекста утолкать в один КГИ. В PAL сигнале получается больше, чем в SECAM.
Только вот как телевизор перерисовывает страницу, посимвольно или полностью гасит, а потом рисует заново? Если заново, то будут заметные моргания.


12 Feb 2015 23:58
Profile
Writer

Joined: 15 Sep 2014 23:32
Posts: 24
Location: Пермь
Reply with quote
Post 
готовую статичную страницу уже показывает:

Image


25 Feb 2015 02:26
Profile
Fanat
User avatar

Joined: 13 Dec 2020 22:11
Posts: 70
Reply with quote
Ну вот, добрался я после затяжного переезда до своих игрушек!

Первая попытка по теме (не ругайте за кривую синхронизацию, сплющенность по вертикали и т.д. - работал только над собственно выводом); тут я взял довольно высокую планку (параллельно учил этот ассемблер) - это VGA, а не обычный видеосигнал, то есть раза в два быстрее.

Аппаратно это Atmega328 (потом будет 1284) на 20 Мгц. Вывод через честный SPI, 9-й паразитный бит модулируется вручную, итого из 9 байт (#0-#8 ниже) делается 8 байт на SPI и 8 отдельных бит, далее - повторяется ещё два раза и третий - не до конца, в сумме ровно 256 пикселей:

// SPI #0 76543210
// bit #1.7
// SPI #1 6543210 #2 7
// bit #2 6
// SPI #2 543210 #3 76
// bit #3 5
// SPI #3 43210 #4 765
// #4 4
// SPI #4 3210 #5 7654
// #5 3
// SPI #5 210 #6 76543
// #6 2
// SPI #6 10 #7 765432
// #7 1
// SPI #7 0 #8 7654321
// #8 0

Чуть кривовато (если первый бит SPI - 1, то он западывает), но выглядит съедобно, свободные такты есть, легко добавить палитру (на внешний мультиплексор) или работу со знакогенератором; добавить И палитру И знакогенератор вместе уже сложнее.

В итоге хочу "рулить" блоками по 8 строк, устанавливая для них независимо флаги символ/графика и возможно - уменьшенное разрешение, плюс ещё может быть - деление пополам - слева 128 пикселей, справа - 16 символов и наоборот.


Attachments:
exolon-9bit.jpg
exolon-9bit.jpg [ 561.29 KiB | Viewed 362 times ]
15 Aug 2022 20:58
Profile
Writer

Joined: 15 Sep 2014 23:32
Posts: 24
Location: Пермь
Reply with quote
если переходить на 1284, то лучше использовать второй UART в синхронном режиме, там девятого бита нет. Или 328pb у нее тоже два UART, но на 20Мгц она заводится с трудом. Сам хотел поселить в 1284 terminal basic вместе с выводом на экран и PC клавиатурой, но споткнулся о прерывания в basic, они портят картинку.


15 Aug 2022 21:59
Profile
Fanat
User avatar

Joined: 13 Dec 2020 22:11
Posts: 70
Reply with quote
emax wrote:
если переходить на 1284, то лучше использовать второй UART в синхронном режиме, там девятого бита нет.


Ну тут с одной стороны как с Кеннеди - "Мы решили лететь на Луну не потому, что это легко, а потому, что это сложно", про UART в синхронном режиме было бы нечего писать :-) а с другой - теперь есть выбор - где-то полезнее свободный SPI, а где-то второй UART (а кто-то душу отдаст за целый Port D). Так-то эти такты один фиг надо чем-то занимать, хоть NOPами.
emax wrote:
Или 328pb у нее тоже два UART, но на 20Мгц она заводится с трудом.


Сейчас это как раз 328, у моей только 1 UART и она работает на 20 МГц, хотя вроде как расчитана на 16. Но для телевизионного вывода даже и 16 даст более 400 пикселей, это мне на VGA надо побыстрее.

А вот в синхронном режиме UART я бы аналогичным образом поиграл с "шестибитными байтами" - в 256 пикселей тогда влезет 42 символа 6*8 пикселей (а на телевизор влезет целых 85, что даст реализовать честный терминал нормального размера).

emax wrote:
Сам хотел поселить в 1284 terminal basic вместе с выводом на экран и PC клавиатурой, но споткнулся о прерывания в basic, они портят картинку.


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

Вот это выше ^^^ надеялся довести до состояния "грузит спектрумовскую заставку с магнитофона не гася экрана (а не как RK-86)" с единственным отличием - вместо мерцания второй бит яркости.


15 Aug 2022 23:14
Profile
Writer

Joined: 15 Sep 2014 23:32
Posts: 24
Location: Пермь
Reply with quote
с 6-битными я уже поигрался, в 3байта по 8 уталкиваю 4 по 6. получается на 240 пикселей 30 байтов или 40 символов.
А с прерываниями там не знаю, что делать. Атомарные операции рекомендовано обрамлять CLI -SEI , в ардуинских библиотеках так и сделано, что рушит строчки если строчное прерывание попадает на это место.
Про внешний мультиплексор тоже думал для цветов, но как-то не спортивно - еще один чип.


15 Aug 2022 23:33
Profile
Fanat
User avatar

Joined: 13 Dec 2020 22:11
Posts: 70
Reply with quote
emax wrote:
с 6-битными я уже поигрался, в 3байта по 8 уталкиваю 4 по 6. получается на 240 пикселей 30 байтов или 40 символов.

Угу, а теперь [s]без рук[/s] байты брать из таблицы символов, а не видеопамяти, чтоб получить "аппаратный" знакогенератор и разумное потребление памяти.

emax wrote:
А с прерываниями там не знаю, что делать. Атомарные операции рекомендовано обрамлять CLI -SEI , в ардуинских библиотеках так и сделано, что рушит строчки если строчное прерывание попадает на это место.

Не, CLI/SEI тут надолго радикально нельзя. А ненадолго оно само получится - одни команды 1 байт, другие 2, третьи 3... Эти мелкие неточности вроде можно отловить/поправить по регистру ICR, а вот что-то больше... надо пробовать.

Но я если что в микроконтроллерах __совсем__ начинающий, едва ли суммарно сутки (24 часа) проковырялся.

emax wrote:
Про внешний мультиплексор тоже думал для цветов, но как-то не спортивно - еще один чип.

Ну тут надо; так-то по уму там надо и какие-то формирователи ставить (в Спектрумах вон на кт315), хотя можно вместо мультиплексора по аналогии с XMEM (у 1284 его нет) использовать дополнительную память одновременно и как мультиплексор и как хранилище палитры (выходит вкусно - отнимая от памяти всего 512 байт, можно задавать для каждого кода атрибута независимые цвет символа и фона из 256 возможных, например красный на чёрном сделать ярче чем на белом, только с этой памятью работать надо будет аккуратно и вручную).


15 Aug 2022 23:49
Profile
Writer

Joined: 15 Sep 2014 23:32
Posts: 24
Location: Пермь
Reply with quote
masterspammer wrote:

Угу, а теперь [s]без рук[/s] байты брать из таблицы символов, а не видеопамяти, чтоб получить "аппаратный" знакогенератор и разумное потребление памяти.

так и делал, получилось на текстовый экран 40х25=1000 байтов ОЗУ.


15 Aug 2022 23:55
Profile
Fanat
User avatar

Joined: 13 Dec 2020 22:11
Posts: 70
Reply with quote
emax wrote:
так и делал, получилось на текстовый экран 40х25=1000 байтов ОЗУ.

Чёт-то мало, это на VGA или на телевизоре? Кажется мне, что добрая половина софта (Unix, CP/M) на таком работать нормально не будет, 80 захочет.

Даже при 16 МГц на телевизоре можно по 5 бит (не самый красивый шрифт, знаю) набрать 80 символов. Или дело было в имеющейся памяти?


16 Aug 2022 00:08
Profile
Writer

Joined: 15 Sep 2014 23:32
Posts: 24
Location: Пермь
Reply with quote
на VGA, обычный телек для меня уже давно не актуален. У 328 всего 2кб ОЗУ, один из них под экран - это норм.


16 Aug 2022 01:33
Profile
Fanat
User avatar

Joined: 13 Dec 2020 22:11
Posts: 70
Reply with quote
emax wrote:
на VGA, обычный телек для меня уже давно не актуален. У 328 всего 2кб ОЗУ, один из них под экран - это норм.

Понятно, потому я и думаю опробовать 1284, что хочется даже не сколько графики, сколько шрифтов и цвета, а они любят память. Учитывая, что я обдумываю терминал, то мне придётся переезжать на телек как раз ради 80 символов.


16 Aug 2022 02:17
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 59 posts ]  Go to page Previous  1, 2, 3, 4

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  

Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.