Может можно без прерывания? Циклом проверять уровни сигналов.
А еще, вас будут преследовать глитчи. Рекомендую почитать ту винрарную ветку. Тайминги там применительно к Специалисту, что бегает на 2МГц, что довольно таки близко к РК. Странный глич продублирую тут:
Я уже писал про странный глитч на адресах. Оказывается, его выдает сам ВМ80А. Его длина - 1 такт и он находится непосредственно перед SYN:
И, естественно, не попадает ни под /RD, ни под /WR:
Получается, что находится он в 1 такте машинного цикла (я, правда, не проверял, но почему-то думаю что в M1, нужно выудить STATUS и проверить).
Касаемо сэмплирования адресной шины, то я нашел самый ближайший сигнал: 12 нога DD20.
Если сэмплировать сигналы выборки устройств этим сигналом (положительный фронт, использовать можно D триггер от ТМ2), тогда получаются самые длинные сигналы выборки микросхем. Вышеперечисленный глитч присутствует, но не мешает. Тайминги получаются следующие. Для чтения:
И для записи:
И это соответствует моим замерам, сделанным ранее. Только тут сигнал выбора четкий.
Последний раз редактировалось HardWareMan; 07.08.2013 в 15:47.
Нет, это будет слишком накладно. Кроме ответа ВМ80 нам нужно выполнять еще много интересных заданий. Например обработка интерфейса PC/2 клавиатуры, SD карточки и т.д. Чтобы не пропустить обращение ВМ80 придется очень часто проверять входы и на остальное времени не хватит.
Глинчи это, как я понимаю, глюки по русски.
Спасибо за предупреждение!
Я примерно предполагаю с чем они связаны. Я встречался с таким явлением когда работал с ИМС К556РТ4 или РТ5. Мы называли это "иголки". Очень короткие импульсы на выходах ИМС при смене уровней на адресных входах. Происходило это от того, что адресные данные поступали на вход ИМС не одновременно, а микросхема была очень быстрой (ТТЛШ), так что она выдавала данные раньше чем установились адресные входы.
В нашем случае такой быстрой ИМС является К555ИД7. Возможно ВМ80 не совсем равномерно выдает напряжения на шину адреса, а ИД7 моментально их транслирует. Вообщем это напоминает баяниста, который перед игрой быстро проходит по клавишам.
Значит если я начну тормозить ВМ80 только по переднему фронту /CS0, то из за этого глинча, я рискую ложно тормозить процессор в циклах, не относящихся к ВВ55.
Правильно я понимаю?
Да, "глюки" или "иголки". Они самые. Но суть предыдущего поста была в том, что ВМ80 выдает корректный адрес на целых полтакта, непосредственно перед сигналом SYNC в первом цикле команды. Дешифратор его чухает и мы видим стабильную выборку, которая не связана с самим циклом. Я не знаю, почему так происходит, но оно есть.
Да.
Я тут накропал схемку для задержки ВМ80 на 5-10 мкс при обращении его к ВВ55.
Прошу экспертов оценить и проверить на ошибки.
Схемка простая. не содержит обратных связей и триггеров. Но это и хорошо, ведь она будет зацеплена в авто петлю ( схемка - RDYIN - ВМ80 - (/WR, /RD, ИД7, /CS0, /CS1)). Если тут еще поставить защелку, то последствия оценить трудно, учитывая еще и глюки.
Объяснения по схеме:
Почему взята именно ЛА8, а не ЛА3?
У ЛА8 выход с открытым коллектором, следовательно к выводу RDYIN можно параллельно еще подключить пошагователь. Цена этого, установки дополнительных нагрузок R1 и R2.
Поскольку сигналы /CS0, /CS1, /WR, /RD инверсны, вентили DD1.1 и DD1.2 суммируют входные сигналы, работают как элемент ИЛИ. Дифференцирующая цепочка выдает на DD1.3 положительный импульс примерно на 7 мкс по фронту /WR или /RD. Этот момент максимально безопасен по отношению к глюкам на шине адреса. По спаду конденсатор разряжается через VD1.
Поскольку в схеме нет защелок и обратных связей отрицательный импульс на выводе 10 DD1.3 не может быть больше 7 мкс при любой комбинации сигналов на входах. Это обеспечивает надежность схемы.
Почему используется диф. цепочка?
Используется из соображений простоты и надежности. Точности задания задержки здесь не требуется, главное не уменьшать ее меньше 2.5 мкс ~40 тактов ATMega32. Синхронизация тоже не нужна, поскольку решение о вставке очередного Tw принимает процессор в активной части сигнала Ф2 такта Т2.
Последний раз редактировалось kovdry; 09.08.2013 в 12:19.
Следует прочитать доку на ВМ80, чтобы понять, какие сигналы участвуют при сканировании входа RDY процессором.
Я хочу сказать, что сигналы строба чтения и записи приходят слишком поздно. И, получается, что как только пришел сигнал обращения и процессор заморожен, тебе в АТмеге придется подготовить все варианты предполагаемого чтения, спустить процессор и наблюдать за стробами. Если чтение - то сразу выдать его (адреса будут стабильны до торможения), если запись - то считать состояние шины.
HardWareMan, я думаю, что в процессе торможения все сигналы, т.е. /CS0, /CS1, /WR и /RD будут стабильны, так что ATMega32 в течении от 40 до 120 тактов успеет выполнить любые проверки.
Другое дело, что после снятия активности /RD нужно быстро перевести порт PA на ввод до начала следующего машинного цикла. Но там никаких проверок делать не надо, а просто выполнить одну команду.
До тебя не дошел смысл послания. Чтобы проц зацепился за RDY сигнал, нужно анализировать только адреса.
Эх! Так бы сразу и сказал!!!
Но какой же, HardWareMan, по вашему выход из этого положения?
Что, неужели все так безнадежно?
Вы бы дали свои дельные предложения, а то все пугаете своими глитчами.
Я тут вспомнил, что при подключении к Ориону-128 флоппи накопителя по версии "Орионсофта", применялось подобное торможение.
Пошел я читать доку...
Последний раз редактировалось kovdry; 10.08.2013 в 08:15.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)