|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
nedoText/SX - вывод текста 80x25 на экран ТВ с помощью SX28
Author |
Message |
lbodnar
Novelist
Joined: 24 Dec 2004 13:58 Posts: 39 Location: UK
|
Эта плата разработана для другого приложения и я ее взял только как временную макетку для PIC24FJ256DA***. Там есть еще масса всякой периферии которую я не использую. В принципе задействованных устройств всего три - дисплей, PIC и кварц. Ну и конденсаторы развязки. PIC24 работает на своей штатной тактовой частоте 32МГц т.е. 16MIPS. USB требует фиксированной частоты 96МГц которая жесткой связана с частотой ядра и не дает свободно выбирать скорость процессора. Я использую USB для диагностики и наблюдения за работой i8080. Хочется замутить или VGA терминал с USB клавиатурой или полноценный CP/M компьютер на одной микросхемке. Пока балуюсь и прикидываю что к чему. Всегда писал и пишу на ассемблере P.S. Пример разводки PIC24FJ256GA206 скоро выложу - тут один джентельмен нарисовал платку для демо-партии и в ней как раз кроме чипа, резисторной матрицы и VGA и USB разъемов больше ничего нет.
Last edited by lbodnar on 29 Jun 2015 05:12, edited 1 time in total.
|
27 Sep 2014 14:27 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
Страничка с конкурсом перестала существовать какое-то время назад - теперь только в архиве (и без картинок): https://web.archive.org/web/20080906101956/http://www.parallax.com/tabid/591/Default.aspx
|
06 May 2015 18:36 |
|
|
Odin P. Morgan
Senior
Joined: 23 Feb 2015 15:37 Posts: 151 Location: OMS
|
Shaos, если использовать твою схему для реализации на PIC32, но и с изменениями, ругать будешь?
|
29 Jun 2015 05:10 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
А зачем? PIC32 и без схемки всё тоже самое умеет делать
|
29 Jun 2015 06:11 |
|
|
Odin P. Morgan
Senior
Joined: 23 Feb 2015 15:37 Posts: 151 Location: OMS
|
Ну дык по неведению спрашиваю, пока ещё пика на руках нет
|
29 Jun 2015 09:16 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
Достал эту кучку платок, сдул пыль, воткнул проводочки и оно заработало (выводя случайные символы из ОЗУ) - как будто и не прошло почти 12 лет с последнего включения
|
23 Feb 2019 18:56 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
чото не заводится у меня драйвер параллельного порта на современном линухе - видать пора уже забыть про LPT UPDATE: таки настроил параллельный порт - у меня PCI-ная платка с LPT, так вот ей надо было опции задать в /etc/modprobe.d/parport_pc.conf: options parport_pc io=0xe030 irq=20и вручную подгрузить модули parport_pc, parport, ppdev через modprobe (и убрать модуль lp если есть) | | | | Shaos wrote: Взаимодействие с девайсом предпологается осуществлять по 10 сигналам (плюс земля): D0, D1, D2, D3, D4, D5, D6, D7, IFLAG, OFLAG (из них выходной только OFLAG, а все остальные - входы).
Внешнее устройство ждёт когда OFLAG=0, затем выводит в D0...D7 нужный код и взводит IFLAG=1, далее ждём когда OFLAG=1 и сбрасываем IFLAG=0. Пока не станет OFLAG=0 новый код засылать нельзя. | | | | |
к системе на Z80 это можно подключить скажем так - IFLAG будет инвертированным сигналом выбора порта, а OFLAG будет инвертироваться и подаваться на !WAIT процессора (если лениво делать програмный опрос занятости) UPDATE: хотя нет, надо IFLAG защёлкивать пока недотекст не прочитает байт и это может быть дольше цикла обращения от Z80... P.S. Смотрю на схему недотекста и непонимаю что такое идёт на JP7: JP6 это IFLAG, OFLAG и земля - возможно JP7 это запасной инвертированный /IFLAG? в текущем подключении этот вход никак не используется (т.е. там всегда "1" т.к. подтянуто резистором к +5В) Вот описание ног SX-28 из исходника прошивки (порт A это JP1, порт B это JP2 и порт C это JP3):
|
23 Feb 2019 20:29 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
Вспомнил - это перемычка NTSC/PAL PAL выбирается путём установки перемычки в JP7 - просто в режиме чтения регистров (или всё-таки памяти?) вместо IFLAG внутрь SX-28 идёт состояние этой перемычки Про это в самом первом сообщении этого топика написано P.S. вот про растактовки PAL: http://www.nedopc.org/forum/viewtopic.php?p=82075#p82075
|
24 Feb 2019 10:33 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
По прошествии 12 лет собираю второй текстовый модуль - на этот раз он будет прямым
|
26 Feb 2019 23:49 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
Надо посмотреть возможно ли в существующий код добавить частичную поддержку команд терминала VT52 и скролл... https://gitlab.com/nedopc/pix/blob/master/SX/sx-video.asmP.S. Расшифровываю свой запутанный код 12-летней давности По-идее скрол сделать несложно - надо просто вместо одного счётчика строк, который одновременно используется при формировании адреса вычитки строки из внешнего ОЗУ, сделать два - один будет считать физические строки в кадре, а второй - использоваться для формирования адреса - в этом случае можно будет начинать видимый кадр с любой строки из памяти (не обязательно первой как сейчас). А вот со спец-символами несколько сложнее - входной байт проверяется в конце каждой строки и сейчас оно укладывается в 20 пикселов (120 тактов). По идее там существует запас ещё тактов 100, ну или перенести приёмку символов из прерывания в основную программу, т.к. она сейчас у меня выглядит вот так (после инициализации периферии): P.P.S. Описываю словами как там в программе всё устроено - прерывание вызывается с частотой строчной развёртки и далее программа смотрит номер текущей строки - если это от 0 до 199, то это видимый кадр, иначе в зависимости от номера строки формруются те или иные синхропоследовательности. В случае видимого кадра - каждая текстовая строка занимает 8 графических строк и первая графическа строка всегда пустая, т.к. во время неё процык лезет во внешнее ОЗУ, чтобы вычерпать оттуда очередные 80 символов, которые будучи запомненными в регистрах данных процессора, используются следующие 7 строк, чтобы нарисовать видимое представление этих 80 символов. Ну и как я чуть выше написал, в конце каждой строки порядка 20 пикселов тратится на вычитку пришедшего символа, отработку команд позиционирования курсора 1 и 2, а также смещение курсора вправо, и если надо - в низ, после "печати" пришедшего символа... P.P.P.S. Сейчас если слать кучу символов в недотекст, то они будут печататься слева-направо сверху-вниз, заполняя все строки, пока не добегут до правого нижнего угла - потом координаты "курсора" обнулятся и заполнение продолжится опять с левого-верхнего угла. При наличии скрола весь экран при добегании до конца должен будет сдвинуться на одну текстовую строку вверх, при этом снизу появится то, что раньше было сверху (бывшая первая строка) и текст будет "печататься" в этой новой нижней строке слева-направо, затирая собой то, что было там до этого. Это не совсем то, как должен выглядеть настоящий терминал - настоящий терминал должен сдвинуть экран и добавить снизу ПУСТУЮ строку, а не копию первой, поэтому между хостом и этой платкой придётся ставить интеллектуальную прослойку (пик), который будет сам реализовывать терминал V52, общаясь с недотекстом всё тем же самым способом как и сейчас, а после скрола пик пошлёт 80 пробелов, чтобы затереть нижнюю строку и только потом будет посимвольно печатать... P.P.P.P.S. Вот листинг выложил: https://gitlab.com/nedopc/pix/blob/master/SX/build_1_0_0/sx-video.lst - как видим места в прошивке практически не осталось: Между кодом и шрифтом (который идёт до самого конца) осталась дырка в 30 байт...
|
01 Mar 2019 20:50 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
Вот тест загнал в nedoText, чтобы все символы поглядеть: P.S. Исходник генератора текста под спойлером: test.c | | | | Code: #include <stdio.h> #include <stdlib.h> #include <string.h>
int main() { int i,j; FILE *f = fopen("text","wt"); if(f==NULL) return -1; fprintf(f, "nedoText test ASCII table 5x7 font http://nedoPC.org "); fprintf(f, "===================================================== "); fprintf(f, " x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF "); for(j=0;j<16;j++) { fprintf(f,"0x%2.2X ",j<<4); if(j>=2) { for(i=0;i<16;i++) fprintf(f," %c",(j<<4)|i); fprintf(f," "); } else for(i=5;i<80;i++) fputc(' ',f); } fprintf(f, " "); fprintf(f, "Sorry, last line is garbage (and it's expected)"); fclose(f); return 0; }
| | | | |
|
02 Mar 2019 15:45 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
Вместе с телеком это выглядело так:
|
02 Mar 2019 17:35 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
У меня было две такие микросхемы, но вторая плохая - там пара битов всегда в 1 выдавалось, а мне надо собирать второй экземпляр (который плоский) - взял другую 2К ОЗУ постарше, которую я использовал в nedoVideo в 2004 году - тошибовская TMM2016AP-12 (которая 120нс) и как оказалось она работает ничуть не хуже чем HM6116P-7 (которая 70нс) т.к. по ногам они абсолютно одинаковые
|
02 Mar 2019 19:33 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Последняя строка - "гарбадж" - это просто выход за знакогенератор?
_________________ iLavr
|
02 Mar 2019 23:27 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22589 Location: Silicon Valley
|
Да - она тупо не влезла в код, если исходник поглядишь По идее из нее только первые 2 символа были бы полезны (Ё и ё) - остальные кто как делал P.S. Судя по повторяемости мусора после перезагрузки, оно видимо заворачивается на начало кодовой памяти и оттуда байты берёт при переполнении...
|
03 Mar 2019 01:33 |
|
|
Who is online |
Users browsing this forum: No registered users and 22 guests |
|
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
|
|