Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Пока нет, возможно тинька успеет за процессором, в прошивке сделано два прерывания, одно на данные, другое на статус, выбираются они с помощью ИД7 и реагируют на смену уровня, то есть за время цикла чтения данных из тиньки или записи в неё прерывания срабатывают два раза, первый, при спадающем импульсе на соответствующем входе, она выдаёт или забирает данные с ШД в зависимости от состояния сигнала /RD, а при возрастающем переводит порт в высокоимпедансное состояние, ну а всё остальное работает в основном цикле программы.
Желательно прерывания на входах МК стробировать сигналами WR и RD, иначе придется реагировать на весь шум, идущий на шине адресов процессора.Сообщение от alx32
Вход прерывания надо использовать один, никакого выигрыша от того, что вы используете оба аппаратных прерывания не будет, поскольку всё равно придется по INT0 делать безусловный переход на отработку прерывания, а это дополнительно два такта, эквивалентно тому, что вы будете анализировать на входе МК состояние входа A0.
Почти уверен, что без WAIT обойтись не удастся, слишком коротки циклы RD и WR у INTEL 8080.
PS. Желательно конечно расписать все величины в цифре, но что-то давно я не занимался времянками 8080
Что касается Z80, то для него, при тактовой частоте = 3.5 Мгц время отработки прерывания не должно превышать два с половиной периода тактовой частоты Z80. А это получается порядка 715 нсек.
Надо еще учитывать, что только реакция на прерывание у Тиньки занимает порядка 4..6 тактов, а это даже при 20 Мгц уже 300 нсек.
Последний раз редактировалось caro; 01.06.2012 в 14:05.
Я ориентировался на тайминги Z80 при частоте 5МГц, там период обращения к шине получается где-то 400нс, но вейтить всё равно придётся, хотя бы пропустить 1-2 такта МП.
Z80 хорош стробом адреса (MREQ), а значит гличей на сигналах CS не будет. А вот ВМ80 этим не может похвастать, поэтому я еще когда свой собирал видел гличи на дешифраторе портов F4xx-F7xx.
Я о том же.Сообщение от HardWareMan
Нельзя подавать на прерывание сигнал без подтверждения устойчивости данных (WR или RD).
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Порт UART поддержан софтинками для Z80, поэтому...
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Собираю свой вариант UART. Покурив даташиты, выбрал Тини2313 в ДИПе. Порт В целиком уходит на шину данных, INT0 и INT1 идут на дешифратор ИД7 (F764 и F765), PD4 - WR, PD5 - RD, PD6 - WAIT. Вейт пока подключаю "на всякий случай", возможно он не понадобится. Время покажет. В качастве USB2UART использую готовый модуль на одной мелкосхемке CP2102. Лапки Таньки для подключения кварца пока свободны, можно будет воткнуть кварц на 20Мгц. Это пока тоже под вопросом, использую внутренний генератор 8Мгц.
Возможно, придется выбирать из двух вариантов - или вейт, или кварц. Как считаете, что лучше?
---------- Post added at 13:35 ---------- Previous post was at 13:32 ----------
Используем этот факт, обойдемся без буферов и прерываний. На Орион-2010 нужды в них не возникало. А схема (и код) упростятся в разы.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)