|
|
Joystick
Funcionamento e programação do Joystick
Ao invéz de se utilizar de um Driver para se interagir com o hardware (ex. MOUSE), o
joystick é programado diretamente atravéz de sua porta I/O (201h). A porta I/O de Jopystick do
PC suporta até 2 joysticks. Também diferente do Mouse e Teclado que possuem codificação
no formato digital, o Joystick utiliza um circuito elétrico de resistor-capacitor.
Pode-se Observar este circuito no desenho abaixo.
Funcionamento: A parte mecânica do joystick controla o
potenciômetro (RV), conforme sua posição o capacitor (C) se carregará mais rapidamente ou
mais lentamente. Quando um "write" é feito à porta do joystick, a chave (interuptor mostrado
no desenho) se fecha causando um curto no capacitor aterrando sua 2 extremidades, isso faz
com que o inversor tenha uma saída lógica 1, após o término do "write" a chave volta para sua
posição inicial e o capacitor começa a se recarregar. O capacitor se recarregará até que
na entrada do inversor tenhamos um estado lógico 1, causando a saída à ser zero. O tempo
de carga do capacitor varia em função da posição do potenciômetro.
Cada "direcional" (Axis) do joystick é conectado à um esquema como este acima.
Disposição dos Bits da porta 201h (Joystick)
Como programar:
Deve-se fazer um "write" à porta 201h, ou seja, enviar um dado à porta (a porta ignora o
que for enviado, basta enviar qualquer coisa) para que ela descarregue os
capacitores, em seguida efetuamos uma leitura dessa porta e teremos como retorno os Bits
relativos aos botões e aos capacitores.
A leitura dos botões é simples, basta testar os bits. O valor 1 significa que o botão não
está pressionado, zero (obviamente) significa que está pressionado. Os bits dos botões são
os 4 de maior ordem.
Para leitura do direcional, é necessário algo mais do que só testar os bits, já que temos que
saber sua posição relativa ao centro. Para se detectar isso, utilizo um loop que vai
medir quanto tempo leva para a saída do inversor se tornar ZERO após ter sido feito o
"write" à porta do joystick. Os bits do direcional são os 4 primeiros bits.
|
|