|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Видеотерминал - немного мыслей
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22743 Location: Silicon Valley
|
если авр сам будет видео генерить - может быть (хотя как там телетекст выводится - в сигнале гашения? не маловато времени?), а если принимать видео и выдавать модифицированное, то вряд ли...
|
12 Feb 2015 10:25 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1390 Location: Abakan
|
Идея любопытная. Формируем пустое ч/б видео и подмешиваем туда телетекст. А сам телевизор уже его декодирует и выводит, причём в цвете.
Применение правда весьма ограниченое - только телевизоры понимающие телетекст.
И посимвольный вывод не организуешь, только страницами, причём довольно медленно.
|
12 Feb 2015 22:39 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22743 Location: Silicon Valley
|
Ну например в штатах все продаваемые телевизоры системы NTSC обязаны понимать субтитры (CC=Close Captioning), у меня лет 10 назад тоже была мысль попробовать генерить текст через CC - там буквы можно в любое место экрана ставить, однако строк там не так чтобы сильно дофига было - 16 чтоли...
|
12 Feb 2015 22:42 |
|
|
emax
Novelist
Joined: 15 Sep 2014 22:32 Posts: 29 Location: Пермь
|
почему медленно, если в телетексте только одна страница, то телевизор будет перезагружать ее довольно быстро. Зависит от того сколько строк телетекста утолкать в один КГИ. В PAL сигнале получается больше, чем в SECAM.
Только вот как телевизор перерисовывает страницу, посимвольно или полностью гасит, а потом рисует заново? Если заново, то будут заметные моргания.
|
12 Feb 2015 22:58 |
|
|
emax
Novelist
Joined: 15 Sep 2014 22:32 Posts: 29 Location: Пермь
|
готовую статичную страницу уже показывает:
|
25 Feb 2015 01:26 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Ну вот, добрался я после затяжного переезда до своих игрушек!
Первая попытка по теме (не ругайте за кривую синхронизацию, сплющенность по вертикали и т.д. - работал только над собственно выводом); тут я взял довольно высокую планку (параллельно учил этот ассемблер) - это 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 символов и наоборот.
|
15 Aug 2022 19:58 |
|
|
emax
Novelist
Joined: 15 Sep 2014 22:32 Posts: 29 Location: Пермь
|
если переходить на 1284, то лучше использовать второй UART в синхронном режиме, там девятого бита нет. Или 328pb у нее тоже два UART, но на 20Мгц она заводится с трудом. Сам хотел поселить в 1284 terminal basic вместе с выводом на экран и PC клавиатурой, но споткнулся о прерывания в basic, они портят картинку.
|
15 Aug 2022 20:59 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Ну тут с одной стороны как с Кеннеди - "Мы решили лететь на Луну не потому, что это легко, а потому, что это сложно", про UART в синхронном режиме было бы нечего писать а с другой - теперь есть выбор - где-то полезнее свободный SPI, а где-то второй UART (а кто-то душу отдаст за целый Port D). Так-то эти такты один фиг надо чем-то занимать, хоть NOPами. Сейчас это как раз 328, у моей только 1 UART и она работает на 20 МГц, хотя вроде как расчитана на 16. Но для телевизионного вывода даже и 16 даст более 400 пикселей, это мне на VGA надо побыстрее. А вот в синхронном режиме UART я бы аналогичным образом поиграл с "шестибитными байтами" - в 256 пикселей тогда влезет 42 символа 6*8 пикселей (а на телевизор влезет целых 85, что даст реализовать честный терминал нормального размера). С прерываниями я кажется знаю, что можно сделать, но надо тоже покопаться. Сначала же починю синхронизацию и добавлю мультиплексор на порт с атрибутами. Вот это выше ^^^ надеялся довести до состояния "грузит спектрумовскую заставку с магнитофона не гася экрана (а не как RK-86)" с единственным отличием - вместо мерцания второй бит яркости.
|
15 Aug 2022 22:14 |
|
|
emax
Novelist
Joined: 15 Sep 2014 22:32 Posts: 29 Location: Пермь
|
с 6-битными я уже поигрался, в 3байта по 8 уталкиваю 4 по 6. получается на 240 пикселей 30 байтов или 40 символов. А с прерываниями там не знаю, что делать. Атомарные операции рекомендовано обрамлять CLI -SEI , в ардуинских библиотеках так и сделано, что рушит строчки если строчное прерывание попадает на это место. Про внешний мультиплексор тоже думал для цветов, но как-то не спортивно - еще один чип.
|
15 Aug 2022 22:33 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Угу, а теперь [s]без рук[/s] байты брать из таблицы символов, а не видеопамяти, чтоб получить "аппаратный" знакогенератор и разумное потребление памяти. Не, CLI/SEI тут надолго радикально нельзя. А ненадолго оно само получится - одни команды 1 байт, другие 2, третьи 3... Эти мелкие неточности вроде можно отловить/поправить по регистру ICR, а вот что-то больше... надо пробовать. Но я если что в микроконтроллерах __совсем__ начинающий, едва ли суммарно сутки (24 часа) проковырялся. Ну тут надо; так-то по уму там надо и какие-то формирователи ставить (в Спектрумах вон на кт315), хотя можно вместо мультиплексора по аналогии с XMEM (у 1284 его нет) использовать дополнительную память одновременно и как мультиплексор и как хранилище палитры (выходит вкусно - отнимая от памяти всего 512 байт, можно задавать для каждого кода атрибута независимые цвет символа и фона из 256 возможных, например красный на чёрном сделать ярче чем на белом, только с этой памятью работать надо будет аккуратно и вручную).
|
15 Aug 2022 22:49 |
|
|
emax
Novelist
Joined: 15 Sep 2014 22:32 Posts: 29 Location: Пермь
|
так и делал, получилось на текстовый экран 40х25=1000 байтов ОЗУ.
|
15 Aug 2022 22:55 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Чёт-то мало, это на VGA или на телевизоре? Кажется мне, что добрая половина софта (Unix, CP/M) на таком работать нормально не будет, 80 захочет. Даже при 16 МГц на телевизоре можно по 5 бит (не самый красивый шрифт, знаю) набрать 80 символов. Или дело было в имеющейся памяти?
|
15 Aug 2022 23:08 |
|
|
emax
Novelist
Joined: 15 Sep 2014 22:32 Posts: 29 Location: Пермь
|
на VGA, обычный телек для меня уже давно не актуален. У 328 всего 2кб ОЗУ, один из них под экран - это норм.
|
16 Aug 2022 00:33 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Понятно, потому я и думаю опробовать 1284, что хочется даже не сколько графики, сколько шрифтов и цвета, а они любят память. Учитывая, что я обдумываю терминал, то мне придётся переезжать на телек как раз ради 80 символов.
|
16 Aug 2022 01:17 |
|
|
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
|
|