если авр сам будет видео генерить - может быть (хотя как там телетекст выводится - в сигнале гашения? не маловато времени?), а если принимать видео и выдавать модифицированное, то вряд ли...emax wrote:c PAL камеры, LM1881 для связи с AVR. Или можно черное поле этой же AVR формировать, на это много ресурсов не надо
Видеотерминал - немного мыслей
Moderator: Shaos
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Ну например в штатах все продаваемые телевизоры системы NTSC обязаны понимать субтитры (CC=Close Captioning), у меня лет 10 назад тоже была мысль попробовать генерить текст через CC - там буквы можно в любое место экрана ставить, однако строк там не так чтобы сильно дофига было - 16 чтоли...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Novelist
- Posts: 43
- Joined: 15 Sep 2014 22:32
- Location: Пермь
почему медленно, если в телетексте только одна страница, то телевизор будет перезагружать ее довольно быстро. Зависит от того сколько строк телетекста утолкать в один КГИ. В PAL сигнале получается больше, чем в SECAM.jdigreze wrote: И посимвольный вывод не организуешь, только страницами, причём довольно медленно.
Только вот как телевизор перерисовывает страницу, посимвольно или полностью гасит, а потом рисует заново? Если заново, то будут заметные моргания.
-
- Novelist
- Posts: 43
- Joined: 15 Sep 2014 22:32
- Location: Пермь
-
- Fanat
- Posts: 95
- Joined: 13 Dec 2020 21:11
Re: Видеотерминал - немного мыслей
Ну вот, добрался я после затяжного переезда до своих игрушек!
Первая попытка по теме (не ругайте за кривую синхронизацию, сплющенность по вертикали и т.д. - работал только над собственно выводом); тут я взял довольно высокую планку (параллельно учил этот ассемблер) - это 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 символов и наоборот.
Первая попытка по теме (не ругайте за кривую синхронизацию, сплющенность по вертикали и т.д. - работал только над собственно выводом); тут я взял довольно высокую планку (параллельно учил этот ассемблер) - это 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 символов и наоборот.
You do not have the required permissions to view the files attached to this post.
-
- Novelist
- Posts: 43
- Joined: 15 Sep 2014 22:32
- Location: Пермь
Re: Видеотерминал - немного мыслей
если переходить на 1284, то лучше использовать второй UART в синхронном режиме, там девятого бита нет. Или 328pb у нее тоже два UART, но на 20Мгц она заводится с трудом. Сам хотел поселить в 1284 terminal basic вместе с выводом на экран и PC клавиатурой, но споткнулся о прерывания в basic, они портят картинку.
-
- Fanat
- Posts: 95
- Joined: 13 Dec 2020 21:11
Re: Видеотерминал - немного мыслей
Ну тут с одной стороны как с Кеннеди - "Мы решили лететь на Луну не потому, что это легко, а потому, что это сложно", про UART в синхронном режиме было бы нечего писатьemax wrote:если переходить на 1284, то лучше использовать второй UART в синхронном режиме, там девятого бита нет.

Сейчас это как раз 328, у моей только 1 UART и она работает на 20 МГц, хотя вроде как расчитана на 16. Но для телевизионного вывода даже и 16 даст более 400 пикселей, это мне на VGA надо побыстрее.emax wrote:Или 328pb у нее тоже два UART, но на 20Мгц она заводится с трудом.
А вот в синхронном режиме UART я бы аналогичным образом поиграл с "шестибитными байтами" - в 256 пикселей тогда влезет 42 символа 6*8 пикселей (а на телевизор влезет целых 85, что даст реализовать честный терминал нормального размера).
С прерываниями я кажется знаю, что можно сделать, но надо тоже покопаться. Сначала же починю синхронизацию и добавлю мультиплексор на порт с атрибутами.emax wrote:Сам хотел поселить в 1284 terminal basic вместе с выводом на экран и PC клавиатурой, но споткнулся о прерывания в basic, они портят картинку.
Вот это выше ^^^ надеялся довести до состояния "грузит спектрумовскую заставку с магнитофона не гася экрана (а не как RK-86)" с единственным отличием - вместо мерцания второй бит яркости.
-
- Novelist
- Posts: 43
- Joined: 15 Sep 2014 22:32
- Location: Пермь
Re: Видеотерминал - немного мыслей
с 6-битными я уже поигрался, в 3байта по 8 уталкиваю 4 по 6. получается на 240 пикселей 30 байтов или 40 символов.
А с прерываниями там не знаю, что делать. Атомарные операции рекомендовано обрамлять CLI -SEI , в ардуинских библиотеках так и сделано, что рушит строчки если строчное прерывание попадает на это место.
Про внешний мультиплексор тоже думал для цветов, но как-то не спортивно - еще один чип.
А с прерываниями там не знаю, что делать. Атомарные операции рекомендовано обрамлять CLI -SEI , в ардуинских библиотеках так и сделано, что рушит строчки если строчное прерывание попадает на это место.
Про внешний мультиплексор тоже думал для цветов, но как-то не спортивно - еще один чип.
-
- Fanat
- Posts: 95
- Joined: 13 Dec 2020 21:11
Re: Видеотерминал - немного мыслей
Угу, а теперь [s]без рук[/s] байты брать из таблицы символов, а не видеопамяти, чтоб получить "аппаратный" знакогенератор и разумное потребление памяти.emax wrote:с 6-битными я уже поигрался, в 3байта по 8 уталкиваю 4 по 6. получается на 240 пикселей 30 байтов или 40 символов.
Не, CLI/SEI тут надолго радикально нельзя. А ненадолго оно само получится - одни команды 1 байт, другие 2, третьи 3... Эти мелкие неточности вроде можно отловить/поправить по регистру ICR, а вот что-то больше... надо пробовать.emax wrote: А с прерываниями там не знаю, что делать. Атомарные операции рекомендовано обрамлять CLI -SEI , в ардуинских библиотеках так и сделано, что рушит строчки если строчное прерывание попадает на это место.
Но я если что в микроконтроллерах __совсем__ начинающий, едва ли суммарно сутки (24 часа) проковырялся.
Ну тут надо; так-то по уму там надо и какие-то формирователи ставить (в Спектрумах вон на кт315), хотя можно вместо мультиплексора по аналогии с XMEM (у 1284 его нет) использовать дополнительную память одновременно и как мультиплексор и как хранилище палитры (выходит вкусно - отнимая от памяти всего 512 байт, можно задавать для каждого кода атрибута независимые цвет символа и фона из 256 возможных, например красный на чёрном сделать ярче чем на белом, только с этой памятью работать надо будет аккуратно и вручную).emax wrote:Про внешний мультиплексор тоже думал для цветов, но как-то не спортивно - еще один чип.
-
- Novelist
- Posts: 43
- Joined: 15 Sep 2014 22:32
- Location: Пермь
Re: Видеотерминал - немного мыслей
так и делал, получилось на текстовый экран 40х25=1000 байтов ОЗУ.masterspammer wrote:
Угу, а теперь [s]без рук[/s] байты брать из таблицы символов, а не видеопамяти, чтоб получить "аппаратный" знакогенератор и разумное потребление памяти.
-
- Fanat
- Posts: 95
- Joined: 13 Dec 2020 21:11
Re: Видеотерминал - немного мыслей
Чёт-то мало, это на VGA или на телевизоре? Кажется мне, что добрая половина софта (Unix, CP/M) на таком работать нормально не будет, 80 захочет.emax wrote: так и делал, получилось на текстовый экран 40х25=1000 байтов ОЗУ.
Даже при 16 МГц на телевизоре можно по 5 бит (не самый красивый шрифт, знаю) набрать 80 символов. Или дело было в имеющейся памяти?
-
- Novelist
- Posts: 43
- Joined: 15 Sep 2014 22:32
- Location: Пермь
Re: Видеотерминал - немного мыслей
на VGA, обычный телек для меня уже давно не актуален. У 328 всего 2кб ОЗУ, один из них под экран - это норм.
-
- Fanat
- Posts: 95
- Joined: 13 Dec 2020 21:11
Re: Видеотерминал - немного мыслей
Понятно, потому я и думаю опробовать 1284, что хочется даже не сколько графики, сколько шрифтов и цвета, а они любят память. Учитывая, что я обдумываю терминал, то мне придётся переезжать на телек как раз ради 80 символов.emax wrote:на VGA, обычный телек для меня уже давно не актуален. У 328 всего 2кб ОЗУ, один из них под экран - это норм.