fifan wrote:...только запись в порт/чтение из порта ВВ55 длиться всего 500 нс - успеваем опрашивать PS/2, перкодировать коды клавиатуры, отправить их в порт?
А и не надо! Технология такая: есть 3 байта в ОЗУ, которые отражают текущее состояние порта A, B и C. Когда приходит чтение - тупо отдаем соответствующий байт. А вот когда идет запись, во время самой записи хватаем что есть на шине, делаем черное дело, и пишем байтики в ОЗУ где храниться состояние. PS/2 - полностью в фоне + использование таблиц для уменьшения действий вычислений. Вот так я это вижу. А между записю (любой, как по MOV так и по OUT) и последующим чтением полюбому 4-5 тактов целевой системы (он должен прочитать опкод чтения, ведь так?). А если взять Мегу и распедалить ее до 24МГц (есть у меня человечек, сказал что на его опыте из 10 Мег 8515, которые по идее 16МГц, 8 заработали стабильно на 24МГц, 1 подглючивала интерфейсом и одна не запустилась). Ну а ежели сразу взять быструю мегу? А частоты PS/2 настолько мелкие, что даже если сам опрос будет прерываться чтением/записью целевой системой и то он все успеет.
Caro wrote:HardWareMan wrote:каково типичное время реагирования на прерывание у разных быстрых чипов (AVR/PIC/etc..)?
Порядка 4..5 тактов.
Т.е. если принять во внимание, что фактическое чтение (ширина строба чтения) всего 1 такт (это наихудший вариант, для ВМ80), то это будет в наихудшем варианте 3,5МГц = 285нс. Это время при 16МГц займет 0,286/(1/16)=4,5 такта. Мдэмс. Мега потратит их тока на реагирование, ниокаком полезном действии речи и быть не может. Нужен камень, что шустрее раза в три. 33МГц...