PDA

Просмотр полной версии : обесните пожалуйста что такое WAIT



sevol
23.09.2010, 17:55
в чем отличие WAITовой и безWAITовой клавиатуре.

Viktor2312
23.09.2010, 18:04
Ну вообще WITE это ожидание. Я конечно не супер спектрумист, но понял так, что безвайтовая клавиатура будет как минимум меньше тормозить проц. Может и ошибаюсь.

fan
23.09.2010, 18:08
WAIT нога проца . Низкий уровень на оной даёт отмашку процу бросить дела и тупо ждать . Контроллер тормозит проц чтоб успеть подготовить данные которые проц собирается прочесть с порта .

Безвэйтовый контроллер просто успевает всё сделать и не тормозит проц .

Viktor2312
23.09.2010, 18:20
Ну значит я всё правильно понял, контроллер принудительно переводит проц в режим ожидания. А в безвайтовой клавиатуре всё успевается сделаться быстро, что не требуется переводить проц в режим ожидания.

spensor
24.09.2010, 10:17
в чем отличие WAITовой и безWAITовой клавиатуре.
Но в общем случае, конкретно по клавиатуре для пользователя разница только в подключении - не требуется переделывать цепи WAIT-сигнала. А то что проц затормаживается на доли процента в случае нажатия на клавишу, то это можно не принимать во внимание.

jerri
24.09.2010, 13:52
не скажи
видел бы ты как здорово настраивать мультиколор на скорпе с такой клавой,
если опрос портов делать на верхнем бордюре

psb
24.09.2010, 14:29
а напомните, что был за прикол с постоянным опросом ваитовой клавы?

jerri
24.09.2010, 15:47
loop
xor a
in a,(#fE)
cpl
and #1f
jr z,loop

вот это наглухо вешало скорпионовский контроллер PC клавы

а если сделать так


loop
djnz $
xor a
in a,(#fE)
cpl
and #1f
jr z,loop

то все ОК

кстати в ACTION FORCE 1 невозможно было изза этого нормально поиграть с клавиатуры

psb
24.09.2010, 17:53
во-во! я ж помню, что где-то был косяк, но здравый смысл был уверен, что цикл из 3-4 команд не должен вешать намертво...

caro
24.09.2010, 18:43
во-во! я ж помню, что где-то был косяк, но здравый смысл был уверен, что цикл из 3-4 команд не должен вешать намертво...Косяк в том, что при таком коротком цикле опроса, контроллеру просто нет времени заниматься
ещё чем нибудь, кроме отработки прерывания по запросу порта клавиатуры со стороны Спектрума.
И дело в данном случае не в большой длительности /WAIT,
а в большом времени выхода контроллера из процедуры прерывания после снятия /WAIT.

psb
24.09.2010, 19:27
а, ну да, понятно:)

jerri
24.09.2010, 23:03
Косяк в том, что при таком коротком цикле опроса, контроллеру просто нет времени заниматься
ещё чем нибудь, кроме отработки прерывания по запросу порта клавиатуры со стороны Спектрума.
И дело в данном случае не в большой длительности /WAIT,
а в большом времени выхода контроллера из процедуры прерывания после снятия /WAIT.

Кстати да, а в чем именно причина такого поведения контроллера скорпионовского?
с точке зрения железа там или еще чего

caro
25.09.2010, 13:34
Кстати да, а в чем именно причина такого поведения контроллера скорпионовского?
с точке зрения железа там или еще чего
Всё дело в низком быстродействии МК (семейство MSC51) , который используется в Скорпионовском контроллере.
Вот фрагмент кода, завершающего обработку прерывания по запросу от Спектрума:


movx @DPTR, A ;Снять /WAIT
;---- Восстановление регистров и выход из прерывания
mov DPH, R0 ;1
mov R0, temp_R0 ;1
pop PSW ;2
pop ACC ;2
reti ;2
;8 мксек при 12 Мгц
;----------------------------------

Тоесть после снятия WAIT контроллер еще 8 мксек занят, прежде чем будет выполнять остальные задачи.
За это время Спектрум при тактовой частоте 3.5 Мгц выполнит несколько команд (можете сами прикинуть сколько).

PS. То же самое выполняется на ATTiny2313 на порядок быстрее, что исключает указанную проблему.