Просмотр полной версии : AVR Spectrum 128 in progress ...
Lisitsin
01.12.2011, 21:19
Здравствуйте.
Чтобы не терять время хочу попробовать реализовать версию Spectrum 128 на уже более менее рабочем AVR Spectrum 48. Сразу отвечаю про 48: работает бейсик, но половина игрушек не работает - таких, как ELITE и R-TYPE. Есть правда ухищрения для запуска последней, но и при этом работает она без звука.
Ну так вот, про 128: про него я мало что знаю. В общем то обращаюсь к знающим за помощью. Вот что собственно нужно:
1. Дизассемблер с комментариями;
2. Схемы 128 по возможности с описаловом;
3. Вразумления по поводу организации памяти и порта 254;
4. Тесты для проверки эмуляции 128;
5. Другие отличия 128 от 48 в смысле схемотехники;
Подключаль тупо дамп ПЗУ 128 вместо 48, но он, конечно же, висит ...
В общем, помогите, люди добрые ...
Всем спасибо. !!! . !!! . !!!
Lisitsin
01.12.2011, 21:29
Ещё вопросец: есть два дампа ПЗУ (вложение). Подскажите, пожалуйста: для каких моделей они есть чем отличаются?
организация памяти:
порт #7FFD (wr only)
bit0..2 - номер страницы в #C000-#FFFF
bit3 - номер отображающегося экрана (0-обычный, 1-теневой в 7й странице)
bit4 - пзу (0-128к, 1-48к)
bit5 - блокировка этого порта для дальнейшей записи
память включается страницами в область #C000-#FFFF. страницы 0,1,3,4,6,7 - обыкновенные, страница 2 - копия памяти #8000-#BFFF, страница 5 - копия #4000-7FFF.
этого должно быть более чем достаточно для того, чтобы менюшка бейсика 128к появилась.
порт 254 такой же как и в 48м, лишь бы дешифрация не конфликтовала с 7FFD (хотя, вообще-то, пофиг). но может придет бк и расскажет, как нужно непременно сделать по фен-шую.
Lisitsin
02.12.2011, 19:09
организация памяти:
порт #7FFD (wr only)
bit0..2 - номер страницы в #C000-#FFFF
bit3 - номер отображающегося экрана (0-обычный, 1-теневой в 7й странице)
bit4 - пзу (0-128к, 1-48к)
bit5 - блокировка этого порта для дальнейшей записи
память включается страницами в область #C000-#FFFF. страницы 0,1,3,4,6,7 - обыкновенные, страница 2 - копия памяти #8000-#BFFF, страница 5 - копия #4000-7FFF.
этого должно быть более чем достаточно для того, чтобы менюшка бейсика 128к появилась.
порт 254 такой же как и в 48м, лишь бы дешифрация не конфликтовала с 7FFD (хотя, вообще-то, пофиг). но может придет бк и расскажет, как нужно непременно сделать по фен-шую.
Благодарность !!!
Обрабатываю ...
работает бейсик, но половина игрушек не работает
Причины?
balu_dark
02.12.2011, 20:07
Уже выяснили причину - он не сделал обработку IM2. Информацию о IM2 уже дали - скоро ждем исправленную версию :) .
Информацию о IM2 уже дали - скоро ждем исправленную версию
хехехе:)))
в 128ой модели совсем другое рисование экрана - кол-во строк, и тактов за сколько рисуется линия.
balu_dark
03.12.2011, 00:28
ну это мелочи. Если так подходить к вопросу то 128ых было 2 или даже 3 модели совершенно разных по таймингам.
Lisitsin
05.12.2011, 17:58
Ещё вопросец можно?
ПЗУ1 и ПЗУ2 - кто из них кто, в каком адресном пространстве находятся и имеют ли страничную организацию?
Спасибо !!!
balu_dark
05.12.2011, 19:44
Пзу всегда находится с адреса 0. в зависимости от бита 4 порта 7FFD включается или одна или другая. Нулем в этом бите выбирается 16к пзу расширенное с новым меню. По 1це в этом бите выбирается немного измененное пзу 48к. Они как правило идут одним файлом 32к - на форуме было полно . визуально посмотреть где какое будет в найденом файле можно открыв в командере по F3 файл с ромом. в той половинке где будут видны токены Бэйсик - это есть 48к прошивка.
По ресету автоматически выбирается половинка в которой РОМ128. а потом оно уже само пререключает все.
Lisitsin
05.12.2011, 20:20
Благодарствую !
А если ROM48 вообще не использовать, т е всегда активно только ROM128, насколько это несовместимо и что потеряется? Просто не знаю где ещё взять 16 К внутри AVR ...
в таком случае лучше не использовать rom128, поскольку многим программам нужно 48ое пзу. кол-во софта использующего 128ой РамДиск (save!,load!) ничтожно мало.
balu_dark
05.12.2011, 21:56
Там и не получится испоьзовать только ром128 - в нем только менюхи и еще кое чего не существенного. Вывод на экран ввод с клавиатуры , загрузка с магнитофона и многое многое другое оно использует ром48. там просто в районе бейсиковых переменных ром128 кладет процедурку которая пересчелкивает нужное пзу и возвращается по нужному адресу. IM1 к слову тоже обрабатывается именно ром48.
Lisitsin
06.12.2011, 20:21
Дело всё в том, что у меня есть ещё видеопроцессор, у которого есть свободная flash, странички так на 4 по 16 к. Я могу подгружаться оттуда, но процесс это медленный. Мне бы знать насколько часто и когда происходят переключения страниц ...
переключения могут происходить сколько угодно часто, все зависит от программы. есть такие, которые побайтно копируют из одной в другую, здесь если странички перекачивать..... ниче не выйдет в таком случае.
Lisitsin
17.12.2011, 09:32
Всем благодарность !
Скоро должно бать.
Организовал вторую ROM и страничность RAM. Осталось сэмулировать порт. Доработка - одна микросхема 74HC257 с минимальной обвязкой.
Последние вопросики. Помогите, кто чем может
1. Теневой экран: где используется, и если пока его нет, т е он эквивалентен адресам 0X4000-0X5AFF, насколько страшно?
2. Как запись в порт 0X7FFD (OUT) влияет на флаги?
3. Бит 5 - запрещение дальнейшей записи в порт 0X7FFD. А сам он всегда доступен для записи?
balu_dark
17.12.2011, 11:49
1. В основном в демках и очень редко в играх. Помоему для начала не очень страшно.
2. Так же как и любая другая запись в порты( тоесть если не ошибаюсь то никак).
3. После запрещения записи 5м битом регистр для записи не доступен вообще до ресета.
1. В основном в демках и очень редко в играх
В фирменных редко, в отечественных часто.
Еще стоит учитывать, что почти каждая фирменная игра сопровождается отечественным интро...
balu_dark
17.12.2011, 17:32
Ну для старта - это не очень важно будет. Потом то естественно - допилит.
Я вообще - начинал тест своего расширения 128к. с 48к Exolon и Song in lines( на них проверял сопроцессор), потом 128к меню ( очень оно меня попервам перло тем что для загрузки не надо LOAD"" набирать. ) . Ну а полный тест - купил кассету со 128к играми первой загруженной игрой вроде был Nodes of yessod 128 или както так. потом был OUTRUN и CABAL128.
ЧВ вроде как только на 2м экране всё показывает, а на 1м только мусор. но и правда, программ таких, где 2й экран очень критичный - очень мало.
ЧВ вроде как только на 2м экране всё показывает, а на 1м только мусор. но и правда, программ таких, где 2й экран очень критичный - очень мало.а как-же STS ?
STS тоже, но... не уверен, что кто-то станет его активно юзать на этой железке:) он не очень смотрибелен.
Lisitsin
18.12.2011, 15:25
Короче порт 7FFD проэмулировал, но чё-йта сначала при старте в низу пишет слово "COPY", а потом в бейсик 48 сваливается. Никто не поможет понять в чём дело? Во вложении небольшой фрагмент трейсинга. Формат: PC (PC) (PC+1) (PC+2) (PC+3) BC DE HL AF IX IY SP + 3 байта (CONTROL, PORTB, PORTD).
ЗЫ: ни у кого нет дизассемблера с комментариями на 128?
Спасибо !!!
ни у кого нет дизассемблера с комментариями на 128?
http://www.fruitcake.plus.com/Sinclair/Spectrum128/ROMDisassembly/Spectrum128ROMDisassembly.htm
Lisitsin
18.12.2011, 17:20
ТА-ДА-А-А-М-М !!!
http://dl.dropbox.com/u/12408899/CVBS%20%28111218-170354%29%20128%20first%20correct%20start.zip
Lisitsin
18.12.2011, 19:40
Глюк есть один в бейсике 48. Никто не может объяснить?
Lisitsin
18.12.2011, 21:05
в калькуляторе 'print' не надо писАть. и так считает. А в остальном - неплохо.
а по поводу глюка - разве при переходе в 48й режим не должна сработать "защелка" на порту и заблокировать его ??
По ходу дела должна, и срабатывает. Но глюк в том, после нажатия ENTER в области атрибутов какой-то не тот код появляется и на экране - чёрный квадратик. Чё это такое - мне не понятно.
Lisitsin
19.12.2011, 18:59
у меня с точностью до наоборот было. в 128 режиме
это когда что-то с портами напутал, как я думаю...
А можно что-то по-подробнее?
Спасибо.
Lisitsin
20.12.2011, 18:43
Всё, разобрался ..
Всё, разобрался ..и в чём было дело ?
Lisitsin
20.12.2011, 20:25
Когда кроилм код под 128 в эмуляции команды ld(iу+d),e ошибочку допустил.
Lisitsin
20.12.2011, 20:31
Вопрос есть.
Кто подскажет, как из вайлов .rom делать формат, понятный для AVRStudio (пример во вложении). И ещё вопрос: что это за системка такая Service.rom (вложение) и что за ПЗУ требует в странице 1 ?
Lisitsin
20.12.2011, 20:50
Кстати, пентагон тоже работает, только trdos виснет:
http://dl.dropbox.com/u/12408899/CVBS%20%28111220-204200%29%20Pentagon.zip
balu_dark
20.12.2011, 22:35
ну вполне может и виснуть - обработчика портов TRDOS и переключалки пзу - нету же в проекте.
Lisitsin
21.12.2011, 17:33
ну вполне может и виснуть - обработчика портов TRDOS и переключалки пзу - нету же в проекте.
Не, ROMы теперь есть и переключаются !!! А вот портов под TRDOS нету ...
Lisitsin
21.12.2011, 19:23
Есть тут какой-то Atmtest3.rom (вложение). Проходит с ошибкой порта 7FFD. Кто-нибудь может объяснить что это?
http://dl.dropbox.com/u/12408899/CVBS%20%28111221-191032%29%20Atmtest3.zip
Lisitsin
21.12.2011, 20:14
Профи пытается работать ...
http://dl.dropbox.com/u/12408899/CVBS%20%28111221-195749%29%20Profi.zip
balu_dark
21.12.2011, 23:51
Не, ROMы теперь есть и переключаются !!! А вот портов под TRDOS нету ...
Виснет скорее всего в цикле ожидая какого нибудь определенного бита из определенного порта. скорее всего низкого уровня.
Смотрите реализацию TRDOS в SPECCY2007 там увидите какие порты куда смотрят.
Lisitsin
18.02.2012, 12:39
Всех приветствую. Давненько не захаживал.
Всем интересующимся сбрасываю проектную сзему и ПП на 128 машину, уже не макетная версия. Было бы очень интересно если бы кто собрал и поделился достижениями и проблемами. Готов помогать online до победного конца. С П А С И Б О ! ! !
Lisitsin, Интересная форма платки получилась :)
а нет еще собраной по шаблону платки?
Lisitsin
18.02.2012, 16:37
Lisitsin, Интересная форма платки получилась :)
а нет еще собраной по шаблону платки?
Не))) С финансами трудно, закажу только в марте ... Платка такая чтобы в стандартную клаву внутрь залезла ...
1. Не подписанные разъёмы на схеме, приходится только догадываться где какой.
2. Связываться с магнитофоном - это уже отживает. Не было мысли добавить поддержку SD карты?
3. Все AVR прошиваются через один разъём? По очереди?
Lisitsin
18.02.2012, 19:59
1. Не подписанные разъёмы на схеме, приходится только догадываться где какой.
2. Связываться с магнитофоном - это уже отживает. Не было мысли добавить поддержку SD карты?
3. Все AVR прошиваются через один разъём? По очереди?
По порядочку:
1. X1 - питание, +7...+12 В, плюс в центре; X2, X3 - вход и выход с / на магнитофон(а) (мини джек, мама); Х4 - двухрядный разъём для программирования видеопроцессора D1 (кон. 1-6) и центрального ссора D2 (кон. 7-12); X5-X8 - стандартный выход RGB; X9-X12 - контактные площадки для подключения интерфейса клавиатуры pc/2;
2. Про SD карту пока не думал, но можно повесить её на видеопроцессор и написать простенький DOS в будущем. Дело в том, что я косил под классический ZX Spectrum в том виде, в котором он был разработан и жил;
3. Как уже понятно из п. 1 - D1 и D2 прошиваем через X4, контроллер клавиатуры D4 отдельно перед запайкой на плату. Хотя, думаю, при необходимости можно будет шить внутрисхемно.
Спасибо за вопросы )))
Прекрасный проект! Не стандартное схемотехническое решение! Большой респект автору! Ждём изготовления и запуска представленной платы.
Я себе бы тоже собрал, если бы была поддержка SD читалки, да и так из хотелок хотябы один вход на джойстик добавить..
---------- Post added at 20:42 ---------- Previous post was at 20:35 ----------
Lisitsin, Добавить еще 1 корпус и будет по идее сверх быстрая магнитофонная SD читалка. FlashTaper (http://zx.pk.ru/showthread.php?t=423&highlight=FlashTaper), на ATMega.
Lisitsin
18.02.2012, 20:33
Я себе бы тоже собрал, если бы была поддержка SD читалки, да и так из хотелок хотябы один вход на джойстик добавить..
---------- Post added at 20:42 ---------- Previous post was at 20:35 ----------
Lisitsin, Добавить еще 1 корпус и будет по идее сверх быстрая магнитофонная SD читалка. FlashTaper (http://zx.pk.ru/showthread.php?t=423&highlight=FlashTaper), на ATMega.
У меня в разъёме для программирования видеопроцессора есть два провода для внешних дел. Сколько проводов надо для sd карты и где нарыть протоколец обмена? У меня ещё завались ресурсов у видеопроцессора ...
Спасибо.
Lisitsin, в интернете полно информации, я с программированием AVR не сталкивался, может это (http://avrlab.com/node/231) поможет?
или еще ссылки
1 (http://avrlab.com/node/156)
2 (http://robozone.su/index.php?newsid=46)
Lisitsin
21.02.2012, 19:42
Выкладываю последнюю версию схемы и печати - ввёл поддержку для SD карт (на будущее). Будут подключаться к разъёму программирования.
Lisitsin
23.02.2012, 12:42
Последняя версия: введена поддержка теневого экрана, появился перечень элементов, нумерация REFDES по ГОСТу.
Ой как бы пошёл бы такому компьютеру выход на VGA монитор! А что PS/2, SD есть.
Lisitsin
23.02.2012, 17:49
Ой как бы пошёл бы такому компьютеру выход на VGA монитор! А что PS/2, SD есть.
Где-то же должны быть преобразователи RGB в VGA ...
solegstar
23.02.2012, 17:56
SD-карте нужно 3.3 вольта питание, и уровни сигналов тоже вроде такие. еще нужна подтяжка всех сигналов к +3.3В через резисторы 10кОм.
Lisitsin
23.02.2012, 18:52
SD-карте нужно 3.3 вольта питание, и уровни сигналов тоже вроде такие. еще нужна подтяжка всех сигналов к +3.3В через резисторы 10кОм.
Да всё равно приходится для SD карты делать отделтную платку с разъёмом для стыковки с девайсом и с SD-адаптером. Вот на ней и будет стабилизатор 3,6 В с подтяжками. А там может и вовсе на 3,6 В спустимся.
Именно 3,3 вольта, не будем нарушать стандарты. Здесь (http://www.zxkit.ru/adaptery-i-perehodniki) можно купить готовый держатель карты.
solegstar
23.02.2012, 19:52
Да всё равно приходится для SD карты делать отделтную платку с разъёмом для стыковки с девайсом и с SD-адаптером. Вот на ней и будет стабилизатор 3,6 В с подтяжками. А там может и вовсе на 3,6 В спустимся.
это я к тому, как мега воспримет питание +3.3В? ведь если её оставить как есть, то питание у неё 5В, и сигналы с неё тоже 5 вольтовые.
Lisitsin
23.02.2012, 20:53
Именно 3,3 вольта, не будем нарушать стандарты. Здесь (http://www.zxkit.ru/adaptery-i-perehodniki) можно купить готовый держатель карты.
Мне бы понять как файлы, например, .z80 размещаются на SD карте под FAT32 - вот это круто. А уж с 3.3 В вопрос решим ...
питание у неё 5В, и сигналы с неё тоже 5 вольтовые.
Ну сам же предложил подтянуть все выводы SD карты резисторами к +3,3 В. Зачем переживать?
Lisitsin, ну как там дела с читалкой SD?
Lisitsin
18.03.2012, 14:57
Lisitsin, ну как там дела с читалкой SD?
Да пока никак. Жду печатные платы из Mосквы, сначала буду девайс начмсто собирать, а потом уже всё остальное ...
Lisitsin
02.04.2012, 19:30
Ну, в общем, работает, и неплохо. Правда пока только версия 48 К. Для 128 дорабатываю софт. В схеме допустил пару ляпов - в области мультиплексора схемы формирования видеосигнала. Фотка девайса по ссылке: http://dl.dropbox.com/u/12408899/ASpect%20128%20Photos.zip
схему корректирую ...
Lisitsin
02.04.2012, 20:31
Исправленная версия:
piroxilin
02.04.2012, 21:05
Нифига-себе!!!
Неожиданный размер !
:)
Lisitsin
02.04.2012, 21:07
Нифига-себе!!!
Неожиданный размер !
:)
А чё мелочиться-то? В смысле уж мелочиться - так мелочиться ...
Lisitsin
04.04.2012, 19:16
Желающим могу собрать под заказ платку 48. Пишем в личку.
ЗЫ- или радиоконструктор обеспечить.
ЗЗЫ - http://www.youtube.com/watch?v=7teBhk85eqM&context=C441fdb6ADvjVQa1PpcFNaf1LzwPwoBwRbjxHr16V9 m-5iIct-qBg= - просто летает )))
1. В чём заключаются изменения в схеме?
2. Неплохо было бы указать тип клавиатуры, куда будет вставляться собранная плата - не в каждую клаву войдёт печатная плата такого размера.
3. Цвета есть? Или пардон видео писалось с ТВ тюнера?
А чё мелочиться-то? В смысле уж мелочиться - так мелочиться ...
Первая мысль при чтении этой темы - это "прикольно, но зачем?". Но после взгляда на фото этот вопрос отпадает :)
Интересно, был ли в истории человечества более миниатюрный спектрум-совместимый комп :)
Lisitsin
04.04.2012, 22:38
1. В чём заключаются изменения в схеме?
2. Неплохо было бы указать тип клавиатуры, куда будет вставляться собранная плата - не в каждую клаву войдёт печатная плата такого размера.
3. Цвета есть? Или пардон видео писалось с ТВ тюнера?
1.1 Ноги 4 и 7, 10 и 11 мультиплексора D5 поменять местами (отражено в исправленной версии).
1.2 Для версии 48 мультиплексор D8 с обвязкой VD4, VD5, R43 не устанавливать. На контактных площадках 9 и 10, 12 и 13 D8 распаять нуль-омные резисторы-перемычки. Выводы 36, 35, 34 ОЗУ D7 замкнуть. Выводы 33 и 32 ОЗУ D7 притянуть к цепям GND и +5V соответственно через резисторы 1 кОм.
2. Разводился под MITSUMI KFK-EB9HY, но пока не вставлял.
3. Писал со входа тюнера. Есть сигналы RGB, так что для цвета нужен либо кодер либо стандартный RGB видеовход. Вобщем, всё как в классической модели ...
Да, размеры впечатляют ;) такую платку вставить в обычную писиклаву и готов спектрум :D
Lisitsin
06.04.2012, 21:46
Up #65
Kakos_nonos
07.04.2012, 13:10
А с помошью какой программы можно открыть файлы, которые в сообщении 62 (pcb и sch)?
Lisitsin
07.04.2012, 20:13
Ну что там, кто-нибудь собирать надумал ???
Ну что там, кто-нибудь собирать надумал ???
Цена вопроса? :)
Мне вообще в принципе интересна машина 128к с трдос в минимальных габаритах.
помоему это первый шаг:) машинка красавица:)
Lisitsin
07.04.2012, 22:21
Да тут в задумке у меня свой простенький дос написать и драйверок под SD карту.
piroxilin
07.04.2012, 23:14
Lisitsin, Я бы собрал, но ближе к лету только...
Вообще интересна не "голая" машина - хотябы 128к + загрузка не-с-магнитофона, ну хотябы ускоренная из ТАР-ов. А если ещё и с АУ будет , то вообще блеск!
Интересна ещё возможность "расширения" данной платы : если текущая аппаратура вашеперечисленное непотянет, то возможно-ли к ней дочерние расширители привинтить??
Lisitsin
08.04.2012, 00:26
Lisitsin, Я бы собрал, но ближе к лету только...
Вообще интересна не "голая" машина - хотябы 128к + загрузка не-с-магнитофона, ну хотябы ускоренная из ТАР-ов. А если ещё и с АУ будет , то вообще блеск!
Интересна ещё возможность "расширения" данной платы : если текущая аппаратура вашеперечисленное непотянет, то возможно-ли к ней дочерние расширители привинтить??
Пока не знаю. Надо читать и думать .
Lisitsin
09.04.2012, 19:30
Выкладываю сборочный чертёж:
Lisitsin
21.04.2012, 11:47
Всем привет.
128 режим пошёл, но что-то подглюкивает. Хотя Z80TESTS и ZEXALL проходит нормально ...
Ничего не пнимаю. Может есть какие-то ещё тесты для проверки эмуляции?
Хекс для ЦПУ вложен.
ЗЫ - есть несколько платок. Только сегодня приехали из Москвы.
Lisitsin, представишь девайс лично на ЦЦ?
Lisitsin
27.04.2012, 22:03
Lisitsin, представишь девайс лично на ЦЦ?
Прошу прощения, не в теме аббревиатуры "ЦЦ" ...
chaos constr. крупнейшее росийское it пати
Прошу прощения, не в теме аббревиатуры "ЦЦ" ...
youtube (http://youtu.be/3ClR44JMu0E)
Lisitsin
28.04.2012, 16:58
А это где вообще, и когда теперь, и как часто?
А это где вообще, и когда теперь, и как часто?
Санкт-Петербург, раз в год, последняя неделя Августа, меропритие идет два дня без перерыва. У иногородних со скромным бюджетом есть возможность ночевать прямо на пати в отдельном зале.
---------- Post added at 18:22 ---------- Previous post was at 18:21 ----------
Ну и кроме всего прочего это хорошая возможность увидеть известных спектрумистов в живую, а также обитателей этого форума.
Lisitsin
28.04.2012, 19:41
Хотелось бы выбраться. Но получится или нет в этом году - не знаю. Там нужно заявлятся заранее? Какие у них координаты?
Хотелось бы выбраться. Но получится или нет в этом году - не знаю. Там нужно заявлятся заранее?
Если хочешь сделать Семинар или Презентацию девайса и рассказать о нем на пати, то желательно об этом сообщить хотя бы за пару месяцев до мероприятия.
Скоро откроется сайт по этому году, там будет вся необходимая информация.
Большое спасибо автору за идею и конструкцию. Планируется ли релаизация каких либо особых графических режимов ? Когда-то я мечтал сделать спрайтовый контроллер на AVR. Идея состояла в том что картинка на экране должна была рисоваться аппаратно, т.е в момент отрисовки AVR управлял только шиной адреса SRAM, при том шина данных была подключена к сдвиговому регистистру аппаратной части видео контроллера. ШД SRAM мультиплексировавалась на AVR только в моменты строчных синхроимпульсов (мк читает цветовые атрибуты для строки), КГИ (мк читает карту спрайтов, при этом создавая в своей внутренней памяти таблицу увязанную с адресами в памяти знакогенератора) наибольшую трудность представляет обеспечение прозрачности обращения для Z80, ясно что в момент отрисовки шину данных SRAM дёргать нельзя, и в момент КГИ тоже, тк Z80 в этот момент и так есть чем заняться. решено было испьзовать отдельную микросхему SRAM для нижней области (0--0x500) она то и должна была садиться на шины z80 во время отрисовки экрана, правда есть недостаток, всё таки пришлось бы проверерять её доступность для z80 (и тратить на это процессорное время) но это того стоит,ведь по замыслу там,наряду с картой спрайтов, должна была находиться, например,часть информации о цвете, чтобы осталась возможность динамически манипулировать с цветами в каждой строке.еще недостаток - обновление знакогенератора возможно только при остановке видеопроцессора, если нигде не туплю то кажется вполне возможным работа этого хозяйства с приличным пиксельрейтом , ведь имея регистр сдвига,и отдельный регистр атрибутов, мы получаем минимум 8 тактов процессора (при гипотечическом 20мгц такте на регистр сдвига) между выдачей новой информации в порт, но ограничение накладывают вовсе не они (за эти такты вроде получалось даже вращать спрайты), а максимальная длинна цепочки look-up table, которую можно успеть построить за время прохождения гасящих импульсов, ну и конечно размер внутренней оперативки, доступной под это дело. если есть интерес могу раскопать тетрадь, где подробнее расписано с кусками кода
Lisitsin
18.05.2012, 18:11
...
Это просто жесть какая-то !!!
Я ещё пока до такого не дорос ...
Но с удовольствием полюбовался бы на проект. Он является пока только логической моделью или уже каким-то образом работал? Что если вместо сдвигового регистра использовать SPI при частоте пикселов 10 МГц?
Что если вместо сдвигового регистра использовать SPI при частоте пикселов 10 МГц?
SPI требует задержки в 1 такт SCK перед началом передачи очередного байта. В течение этого времени на ноге MOSI будет сохраняться значение последнего выведенного бита. На экране это будет вылядеть как пиксел двойной ширины. В общем SPI не очень подходит для вывода графики.
Lisitsin
19.05.2012, 14:31
SPI требует задержки в 1 такт SCK перед началом передачи очередного байта. В течение этого времени на ноге MOSI будет сохраняться значение последнего выведенного бита. На экране это будет вылядеть как пиксел двойной ширины. В общем SPI не очень подходит для вывода графики.
А если выводить следующий байт не дожидаясь полного вывода последнего бита? И поставить соответствующую фазу и полярность SCK?
А если выводить следующий байт не дожидаясь полного вывода последнего бита? И поставить соответствующую фазу и полярность SCK?
Прийдется дожидаться не просто полного вывода последнего бита, а еще и плюс длительность 1го такта SCK - прощупано лично: если произвести запись в Data Register не дождавшись этого момента, то будет устанвлен Write COLlision Flag и передача нового байта не начнется. Вот цитата из datasheet на ATmega32:
The system is single buffered in the transmit direction and double buffered in the receive direction.
This means that bytes to be transmitted cannot be written to the SPI Data Register before
the entire shift cycle is completed.
У других контроллеров, и не только ATmega, ситуация в режиме SPI таже. Также все вышеизложенное действительно и для всех вариантов фазы и полярности.
Здесь можно разве что поизголяться с двумя каналами SPI, естественно на тех контроллерах где они есть, объединив их выходы MOSI и попеременно: выводим через первый, когда MOSI второго в Z-состоянии, затем выводим через второй, переведя ногу первого в Z-состояние. Но на экране будет все же заметен момент переключния в Z, когда MOSI одного уже перевели в Z, а MOSI другого будет переведен на OUT только следующей командой + до момента реального начала вывода первого бита. Здесь можно поэксперементировать с очередностью действий, например сначала записать байт для вывода, а затем уже переводить ноги в Z / из Z, но все равно на экране этот переход между байтами будет слегка отличаться от переходов между битами.
В ситуации с внешним регистром сдвига тоже не все так гладко: очень сложно (=практически не возможно) произвести в него запись нового байта стробом от МК так, что бы не исказился последний, выводимый на экран, бит предыдущего байта. Получим примерно ту же ситуацию, что и с SPI за исключением 1го дополнительного такта SCK. Но здесь уже можно поискать решение:
Вариант1: МК выдает только "разрешение" на параллельную загрузку в сдвиговый регистр в момент окончания вывода предыдущего байта, а непосредственно самим стробом записи служит сигнал сдвига битов. Грубо говоря объединяем по AND строб сдвига битов и "разрешение" загрузки нового байта и результирующий сигнал подаем на вход "параллельная загрузка" регистра.
Вариант2: на выходе сдвигового регистра ставим еще один "буфер" (регистр / D-триггер), строб записи в который будет слегка задержан по времени относительно строба сдвига бит в сдвиговом регистре. Т.о. запись в последний, выходной, регистр будет производиться только тогда, когда на выходе сдвигового регистра установится заведомо правильное значение и не будет разницы между выводом битов в пределах одного байта и битами двух соседних байтов.
Lisitsin
20.05.2012, 12:09
Есть ещё вариант с SPI:
Конфигурируем ногу порта вывода данных SPI на выход. При этом при отключенном SPI нога будет обычным выходом, а включение SPI будет конфигурировать её в своих интересах.
Включаем SPI, начинаем передачу данных. В порт, по которому передаются данные SPI выдаём последний бит передаваемого байта. То есть при отключении SPI он окажется в порте. В конце предпоследнего бита передаваемого байта выключаем SPI по питанию. Тут же включаем его и следующей командой передаём очередной байт. По идее должно работать ...
Да, интересная мысль! Как реально отрабатывает SPI On/Off не проверял, но первое что видится, что в этом варианте будет искажаться не последний бит, а предпоследний. Т.к. момент переключения ноги с SPI на OUT, вполне возможно, не совпадет с моменом окончания такта SCK предпоследнего бита. Но это уже надо проверять и смотреть вживую.
Но в любом из этих всех вариантов появляется еще один недостаток: все эти манипуляции съедают драгоценные такты в пределах времени вывода одного байта.:(
Это просто жесть какая-то !!!
Я ещё пока до такого не дорос ...
Но с удовольствием полюбовался бы на проект. Он является пока только логической моделью или уже каким-то образом работал? Что если вместо сдвигового регистра использовать SPI при частоте пикселов 10 МГц?
собственно это просто одна давняя идея, реализовывать не стал из за того что действительно жесть, тем более,модель в тетрадке очень сырая, пересмотрел её свежим взглядом и думаю что в нынешнем виде работать не будет.
Набросал в протеусе проект mega664+hc165, и vsm для эмуляции телевизора, avr выплёвывает 32 байта за 64ms ( именно 64 потому что горизонтальная синхорнизация в vsm сделана не отдельным входом, - переход "луча" происходит перед каждым 5мс импульсом уровня чёрного,поэтому два последних байта из 32 всегда 0xff)
vsm пока довольно глючный, на выходных постараюсь доработать и выложу сюда, вроде в интернете не встречал такую
вобщем не всё гладко как хотелось бы - через hc165 плывёт картинка, грешил на несинхронную работу регистра, но проблема существует и на заведомо рабочем проекте http://pmd85.topindex.sk/ , где нет регистра, перелопатил VSM похоже там всё в порядке, простую графику (например линии толщиной 0.5мс) выводит без проблем, видимо сам протеус создаёт некий джиттер, на скрине видно как плывёт надпись ** PMD-85 READY /1.0 ** - буду думать как с этим бороться
balu_dark
28.05.2012, 23:43
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=844369
там народ обсуждает проблему и вроде даже решение найдено( во всяком случае чел положил какието сорсы).
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=844369
там народ обсуждает проблему и вроде даже решение найдено( во всяком случае чел положил какието сорсы).
я видал эту ссыль, но всё равно спасибо..в железе эмулятор PMD-85 из верхней ссылки тоже, должно быть, работает нормально, жаль у меня нет возможности убедится в этом - банально нет AVRки нужной жирности, по этому приходится в Протеусе моделировать, и скриншот - результат работы модели, а не железяки
shurik-ua
29.05.2012, 14:33
2 Zarax
Интересно было бы посмотреть на модель телевизора(монитора) для протеуса.
Вот тут http://zx.pk.ru/showthread.php?t=6499 вроде искали тоже.
P.S. У Вас и SDK для протеуса наверное есть ? )
Lisitsin
15.06.2012, 21:17
Offtop: Исходники здесь:
http://zx.pk.ru/showthread.php?p=515851#post515851
Допилил я наконец модель дисплея для Proteus до приемлемого состояния, еще присутствуют некоторые неприятные глюки , чуть позже выложу вместе с исходниками, а пока попробую запустить AVR Spectrum в эмуляторе
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot