nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 17 Oct 2018 21:33



Reply to topic  [ 31 posts ]  Go to page 1, 2, 3  Next
Видеоадаптер для 8-бит систем на Atmega328 
Author Message
Maniac
User avatar

Joined: 13 Nov 2007 12:09
Posts: 275
Location: Ставрополь
Reply with quote
Собственно перелопатил конструкцию Гранта Сирла (который перелопатил конструкцию Дэрила Риктора) для применения во вновь собираемой СР/М-совместимой машинке. Ссылка на описание тут, http://qsl.net/rw6hrm/html/8bitdisp.htm
Кому лень переходить, кратко: Модуль обеспечивает вывод информации на обычный телевизор, обеспечиваются режимы 80х25, 40х25, 80х12, 40х12 (кодировка альтернативная, очень близкая к СР866/DOS), графика 100х160 совместно с любым текстовым режимом, а также микс из текстовых режимов и графики (построчно). Частично поддерживаются ANSI/VT52-команды, ну и кучка своих. Подключается к параллельной шине, возможно непосредственное подключение к LPT-порту для организации дополнительного вывода информации.
Пока к контроллеру не подключал, обошелся однорезисторным "эмулятором компьютера" - вывод картинки https://pp.userapi.com/c844724/v8447242 ... wF--U8.jpg Текст жирный, 80х25.
Антизвона нет, посему и куча повторов.
Обведённое в цветные квадратики можно не собирать, это чисто авторская необходимость. Прошу относиться не как к монолитной и нерушимой конструкции, а как к сборнику технических решений.


15 Apr 2018 02:37
Profile WWW
Doomed

Joined: 08 Apr 2013 05:04
Posts: 441
Location: 213.247.249.139
Reply with quote
Какая форма сигнала и скважность у этого кварцевого генератора? :)


16 Apr 2018 01:56
Profile
Maniac
User avatar

Joined: 13 Nov 2007 12:09
Posts: 275
Location: Ставрополь
Reply with quote
Фиг его знает, по ОМЛ-3 можно только факт генерации установить ;), скорее всего нечто похожее на синусоиду, генератор-то ламп... аналоговый. Подобрал базовый резистор по максимальной амплитуде. А если честно, то оно и не важно по идее. Картинка с ИЕ10 стабильная, не дёргается, точки не мельтешат, атмега не глючит и нормально выдаёт синхру, ЖК и стекляшка нормально отображают картинку - думаю, что этого достаточно.
Со вторым каскадом сложнее, резистором в базе подбирается не только максимальная амплитуда, но и сдвиг сигнала поближе к нулевой отметке. В принципе небольшая цена за простоту.
Нет, если у кого есть в наличии корпусный осциллятор - это самый лучший вариант. Но у меня его не было.


16 Apr 2018 02:14
Profile WWW
Doomed

Joined: 08 Apr 2013 05:04
Posts: 441
Location: 213.247.249.139
Reply with quote
rw6hrm wrote:
Фиг его знает, по ОМЛ-3 можно только факт генерации установить ;), скорее всего нечто похожее на синусоиду, генератор-то ламп... аналоговый. Подобрал базовый резистор по максимальной амплитуде. А если честно, то оно и не важно по идее. Картинка с ИЕ10 стабильная, не дёргается, точки не мельтешат, атмега не глючит и нормально выдаёт синхру, ЖК и стекляшка нормально отображают картинку - думаю, что этого достаточно.

Ну да -- достаточно для девайса, который будет работать только при комнатной температуре...

Quote:
Со вторым каскадом сложнее, резистором в базе подбирается не только максимальная амплитуда, но и сдвиг сигнала поближе к нулевой отметке. В принципе небольшая цена за простоту.

Вот я как раз хотел про него и сказать, но решил зайти издалека :) Это ж писец :) Поедет температура, поедет h21э иии? :) И скважность скорее всего аццкая после такого, т.к. в основном вытягивает этот каскад довольно большой развязывающий кондёр, заодно подискажая и генерацию первого каскада (в момент когда начинает течь ток в базу). Я бы поставил вначале эмиттерный повторитель после первого каскада, а далее уже делал бы импульсы во весь размах.
Ну и да, к вопросу о странных схемах из дендей: скорее всего именно дендя чхать хотела на скважность, там сразу делится. А вот атмега -- хзхз. В даташите вроде есть ограничения на скважность, Tlo min и Thi min.


16 Apr 2018 23:19
Profile
Maniac
User avatar

Joined: 13 Nov 2007 12:09
Posts: 275
Location: Ставрополь
Reply with quote
Если есть у кого достаточно высокочастотный осциллограф, то можно попробовать посмотреть на что получается.
Вообще такой генератор используется не только в дендях, но и в автомобильных КВ-конвертерах, а там нормальная синусоида желательна. Повторитель хорош только тогда, когда нагрузка генератора резко меняется со временем, тут она постоянна, даже несмотря на возможный уход от температуры, которым можно пренебречь, поскольку и домашние условия, и кремниевый транзистор. Стоял бы германий - можно было бы обращать внимание.
Скважность... опять же, не думаю, что она важна. Даже для 6502, которому подавай меандр, не очень, для Z80 вообще пофиг, тут, я думаю, тоже можно не обращать внимания, скорее всего берётся фронт импульса, по нему весь остальной такт и привязывается. Но это имхо, поскольку внутреннего строения атмеги я не знаю.

Вдогонку вспомнил. Пока не стояло конденсатора 20 пФ в коллекторе генератора, наблюдались периодические подёргивания всей картинки вправо. Можно предположить и возможность не той скважности, либо каких-либо палок в спектре, поэтому в атмеге накапливалась некая ошибка, периодически корректируемая.

Что ещё можно было попробовать - запуститься от встроенного генератора, а с 10 ноги взять сигнал и через буфер подать далее куда требуется. Но я не стал этим заморачиваться, поскольку генерация на меге была уже нестабильная (на 14 МГц ещё все нормально) и срывалась от каждого чиха или пролетающей мимо руки. Конденсаторами это дело не особо стабилизировалось. То ли особенность конкретного корпуса, то ли уменьшенная активность кварца - не знаю, неинтересно было копаться. Решил в лоб, с подножного корма. Но раз запустилось, значит проблема не в кварце.
Ещё раз хочу сказать желающим повторить схему без копания - ищите отдельный осциллятор и будет вам щясте.


16 Apr 2018 23:58
Profile WWW
Maniac
User avatar

Joined: 13 Nov 2007 12:09
Posts: 275
Location: Ставрополь
Reply with quote
Если кому-то это проект ещё интересен, то фото семи текстовых режимов из восьми. Разумеется, что мы можем одновременно построчно использовать все режимы на одном экране.

80 символов в строке, нормальный шрифт (25 строк на экран) -
Image
80 символов в строке, жирный шрифт -
Image
40 символов в строке, нормальный шрифт -
Image
40 символов в строке, жирный шрифт -
Image
40 символов в строке, жирный шрифт, двойная высота (12 строк на экран) -
Image
40 символов в строке, нормальный, двойная высота - нет фото, лень было делать.
80 символов в строке, жирный шрифт, двойная высота -
Image
80 символов в строке, нормальный шрифт, двойная высота -
Image
Вот уже увидел один косяк в буковке.., придется перетранслировать прошивку. А есть ещё и графический режим, который тоже можно выводить одновременно со всеми текстовыми, но об этом возможно позже...


16 May 2018 14:57
Profile WWW
Maniac
User avatar

Joined: 13 Nov 2007 12:09
Posts: 275
Location: Ставрополь
Reply with quote
Как это обычно бывает, внезапно случился облом. Наш общий знакомый Грант, продекларировав частичную поддержку ANSI-последовательностей, в реале поставил на обработку сигнала ESC заглушку, а саму обработку вынес в другой чип, занимающийся клавиатурой. А я-то думаю, что это никак не могу настроить отображение WordStar'а... Придётся колупать, если , конечно, позволит место в памяти.


Last edited by rw6hrm on 21 Jun 2018 13:22, edited 1 time in total.



18 Jun 2018 00:09
Profile WWW
Maniac
User avatar

Joined: 13 Nov 2007 12:09
Posts: 275
Location: Ставрополь
Reply with quote
...мож кто подскажет алгоритм обработчика ANSI-последовательностей? Не знаю, с какой стороны подбираться...


19 Jun 2018 14:14
Profile WWW
Maniac
User avatar

Joined: 13 Nov 2007 12:09
Posts: 275
Location: Ставрополь
Reply with quote
Хорошо, пример кода для Атмеги на Си нашёл. Как кусок сишной проги переделать в ассемблерный код? Или как вставить кусок сишной проги в ассемблерный код чтобы в последующем компилятор не ругался?


21 Jun 2018 13:21
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
rw6hrm wrote:
Хорошо, пример кода для Атмеги на Си нашёл. Как кусок сишной проги переделать в ассемблерный код?

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

rw6hrm wrote:
Или как вставить кусок сишной проги в ассемблерный код чтобы в последующем компилятор не ругался?

А вот это, скорее всего, не получится... :-?
В сишный текст обычно включают ассемблерный код, а наоборот - мне такого не встречалось. :o

_________________
iLavr


21 Jun 2018 14:01
Profile
Maniac
User avatar

Joined: 19 Feb 2017 04:46
Posts: 212
Location: Россия
Reply with quote
rw6hrm wrote:
кто подскажет алгоритм обработчика ANSI-последовательностей?
Вопрос не ясен. Алгоритм такой же как у любого драйвера CONOUT. Если обслуживания ANSI-последовательностей нет, то непонятно зачем их вводить. Разве у Вас есть программы, которые использую ANSI-коды? Полезнее ввести упр.коды стандартные для 8-ми разрядок, которые к тому же удобнее.

Lavr wrote:
rw6hrm wrote:
как вставить кусок кода на Си в ассемблерный код, чтобы в последующем компилятор не ругался?
А вот это, скорее всего, не получится... В сишный текст обычно включают ассемблерный код, а наоборот - мне такого не встречалось.
Atmega это совсем иное. Для неё есть только то, что поставляют изготовители.

А для обычных компиляторов ЯВУ в которых код генерируется не сразу, а линкуется из отдельно странслированных модулей в перемещаемом формате, - это не проблема. Транслируется модуль на ЯВУ содержащий процедуру или функцию (интерфейс с ними известен) и полученный файл с перемещаемым кодом прилинковывается к основной программе странслированной с ассемблера.

Другое дело, что основную программу на ассемблере легко написать для MSDOS, а вот для Windows сложно, - намного выгоднее использовать ЯВУ. И даже, если 99.999% строк программы написано на ассемблере, то обрамление написанное на Си экономит работу. Например, при написании программы на ассемблере, в стартовом модуле на Си я получаю память для ассемблерной программы и на Си пишу сложные процедуры вызываемые из ассемблера.
Code:
printf("\n Программа на ассемблере\n");
if (allocmem( (unsigned) needmem, &datseg)!=-1) {
sprintf(uk_fatal,"\n Not enough memory !");  goto avral; }
if (asmprog(datseg)!=0) goto avral;
exit: freemem(datseg); exit(0);
avral: printf("\n"); printf(uk_fatal);
getchar(); goto exit;



21 Jun 2018 18:34
Profile
Maniac
User avatar

Joined: 13 Nov 2007 12:09
Posts: 275
Location: Ставрополь
Reply with quote
barsik wrote:
Разве у Вас есть программы, которые использую ANSI-коды?

WordStar, BBCBASIC, Multiplan, DBaseII,.. могу продолжить ;) Да и ANSI-коды стандартны для 8-разрядок, это у нас клепали кто во что горазд.
Да, подумавши склоняюсь к мысли, что проще дописать conout и слегонца уменьшить ТРА, чем лезть в атмегу...
Image


21 Jun 2018 22:46
Profile WWW
Doomed
User avatar

Joined: 05 Nov 2007 06:08
Posts: 405
Location: Украина
Reply with quote
rw6hrm wrote:
Как кусок сишной проги переделать в ассемблерный код?
понять алгоритм и написать ручками :) каков объем "куска"? ;)


21 Jun 2018 22:57
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
shoorick wrote:
rw6hrm wrote:
Как кусок сишной проги переделать в ассемблерный код?
понять алгоритм и написать ручками :) каков объем "куска"? ;)

А чем хуже - скомпилировать исходник на на Си и дизассемблировать его?
Компилятор Си генерирует довольно оптимальный ассемблерный код, порой
у него даже не грех поучиться! "Ручками", порой, такое и не придумаешь!!!

_________________
iLavr


21 Jun 2018 23:09
Profile
Doomed
User avatar

Joined: 05 Nov 2007 06:08
Posts: 405
Location: Украина
Reply with quote
Lavr wrote:
А чем хуже - скомпилировать исходник на на Си и дизассемблировать его?

я пробовал - мне не понравилось. хотя можно и так. посмотреть и сделать хорошо :)


22 Jun 2018 00:13
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 31 posts ]  Go to page 1, 2, 3  Next

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.