Я уже Z80Card собрал, только сам Z80 никак не могу найти, а так собираюсь сделать весь орион по максимуму, плюс RS232 на тиньке 2313 приделать.
Вид для печати
Я уже Z80Card собрал, только сам Z80 никак не могу найти, а так собираюсь сделать весь орион по максимуму, плюс RS232 на тиньке 2313 приделать.
Если эти программы работают с портом напрямую, то нужно знать алгоритм обмена, а если через драйвер, то можно организовать свой, кроме того в тиньке можно заделать буфер FI-FO, если конечно он нужен...
Более того, можно предусмотреть возможность смены прошивки.
Консоль CP/M и xModem - напрямую. Алгоритм такой:
Kermit и stat/pip - через консольные п\п CP/MКод:; Отправка байта - запись в порт F764.
; Прием байта - чтение порта F764.
; Контроль состояния передачи - порт F765 на чтение:
; D7 - TX_Ready (0 = идет отправка байта, порт не готов. 1 = можно записывать следующий байт для отправки)
; D6 - RX_Status (0 = нет нового принятого байта. 1 = принят новый байт. После считывания байта из F764 этот бит сбрасывается в 0).
; Управление режимами - порт F765 на запись:
; D0, D1 - Скорости UART (4800 (умолчание), 9600, 19200, 38400)
; D6 - "1" = разрешает прерывание по приему байта. На ШД ставится 0FDh.
А прерывание как организуется (если не брать в расчёт 50Гц)?
А всётаки буфер придётся делать...
Периферийное устройство выдает импульс /INT и в какой-то момент (не помню диаграмм) на ШД выставляет 0FDh. Поскольку Z80 работает в режиме IM2, то считав с ШД код он перейдет на некий обработчик в памяти (в нашем случае в этом обработчике идет считывание байта с RS232 и помещение его во временный FIFO-буфер в ОЗУ Ориона). CP/M же читает данные уже из временного буфера (из ОЗУ Ориона) и готовность определяет по наличию в буфере данных. Так работает CP/M в режиме с поддержкой прерываний (режим INT)
На самом деле париться на счет прерываний нет смысла: та же CP/M и все программы поддерживают и режим POLL (опрос готовности RS-232 в процессе работы). Как показала практика с Орион-2010, никакого выигрыша режим прерываний не приносит (разницы по скорости нет, и "проглатывания" символов ни в каком из ражимов тоже нет).
Значит с прерываниями можно не париться?
Кварц, скорее всего, будет 18.432, так как при тактовой процессора 5Мгц нужно успевать принимать и выдавать данные на ШД. Думаю скорости тиньки должно хватить, а биты состояния тинька будет выдавать напрямую через буфер типа ЛП8, с которого процессор их может считать в любой момент.
Ну да, как-то так
Боюсь, как бы вейтить не пришлось...
Mick, вообще-то тема про СОМ порт на орионе, а не про клавиатуру или спектрум
Можно без WAIT, но добавить пару мсх - 2 регистра для данных (по одному в каждом направлении, в один Орион пишет, из другого читает; Тини - комплиментарно): поскольку алгоритм POLL синхронный (ориентируется по выводам Тини TX_Ready/RX_Status), то Тини сможет рулить процессом в зависимости от собственной готовности (уже она прочитала первый регистр или уже записала ли во второй регистр). Провод RX_Status еще надо будет простробировать на d-триггере типа ТМ2 (чтобы Тини туда записывала состояние RX_Status, но при чтении Орионом второго регистра этот d-триггер сбрасывался). Итого кроме ATTiny имеем 3 корпуса логики (два ИР33, один ТМ2) + еще какая-нибудь мелочь-обвязка для дешифрации и селекторов /RD /WD
Error404, как вариант, интересно, у ИР33 есть 3е состояние на выходе при защёлкнутых данных?
Да, есть 3-e состояние. ИР33 это тоже что и ИР22 (8-разрядный асинхронный регистр с 3 состоянием), только цоколевка разная. А ИР23 - синхронный регистр (запись по фронту тактового сигнала) с 3 состоянием. Тут уж надо смотреть логику схемы - где что будет лучше: регистры с синхронной записью или асинхронной.
ФронтовЫе наверно лучше будут...:D
Предварительный вариант схемы,
http://photo.qip.ru/photo/alx32.nmru...l/97931304.jpg
Error404, может будут предложения насчёт дешифратора, не хочется РТ4 ставить, а без неё получается ещё 3 дополнительных корпуса?
Не взлетит.
Да, типа того.
РТ4 конечно не хотелось бы. Если уж ставить в дешифратор нечто программируемое, то тогда уж сразу GAL, в который половина этой схемы влезет.
Дешифратор на логике можно применить типа такого (картинка ниже). У меня оно выбирает таймер и SD-карту (F760, F761, F762, F763), но если на вход подавать сигнал A2 инверсным, то такая же схема будет выбирать F764, F765, F766, F767
Или можно на монтажном поле основной платы сделать общий дешифратор области F760...F767 на паре ИД7 (ИД4) вместо того чтобы на каждой перефирийной плате его делать.
Триггер статуса должен очищаться в конце цикла чтения, у тебя же всегда или в начале. Включение должно быть таким:
http://savepic.su/2006977.png
Таким образом, по заднему фронту сроба записи данный триггер запишет в себя 0, установить в единицу его можно в любое время. При использовании ЛП8 инвертор не нужен.
Один кристалл ИД14 дает тебе управление 2мя ячейками (у тебя же ячейка данных и ячейка статуса).
http://savepic.su/1987520.png
Использование тактируемых регистров (ИР23 для данных и ТМ2 для статуса) позволяет избавиться от инвертора.
Триггеры управления - да (справа вверху, там все оке).
Триггеры статуса - нет (по центру снизу).
http://savepic.su/1990595.png
Так, ладно, пока приостановим эту тему, нужно ещё орион отладить, а потом заниматься всякими свистульками к нему.
Народ, гляньте схему не замыленым глазом, перерисовал в ГОСТе, а так-же изменил дешифратор, согласно рекомендациям Error404.
P.S. Копируйте ссылку и вставляйте в новой вкладке, с qip.ru творится что-то неладное...
Вроде как-то так.
Единственно, ИР33 труднодоставаемая, проще доставаема ИР22 (функционально - аналог, отличается цоколевкой)
Единственное напрягает 9 корпусов...
Я сначала попробую без регистров, напрямую, возможно и успеет, ваш же контроллер клавиатуры при 8МГц успевает, а я хочу запустить тиньку при 18,432МГц.
Нет не хочу, я и сам ее могу нарисовать.Цитата:
Сообщение от alx32
Вот и я про совсем другой вариант схемы, если не ставить 512ВИ1, 580ВИ53, в общем ограничиться грубой дешифрацией и посадить тиньку в диапазон F760-F76F, то можно ограничиться вообще одной микросхемой...
Дешифратор - не то место, где следует экономить. :)
ПО уже вряд ли кто-то перепишет, проще пару мсх пришаманить.
Error404, это я понимаю, просто для отработки прошивки МК, можно воспользоваться и такой грубой дешифрацией, пустить на МК сигналы A0, /RD, /WR, /F76x. А уж потом достаточно добавить ИД7 для более точной дешифрации.
Народ, посмотрите пожалуйста исходничек к этой схеме:
http://alx32.nm.ru/tty2-small.png
Вложение 35820
Как оказалось, сигнал /WR не пришлось использовать...
P.S. Добавил скорость 115200...
Люди, есть у кого тайминги шины процессора Z80?