terça-feira, 28 de novembro de 2006

Touchpads: Primeiras investigações

Controladores Touchpad para MSX

Muito pouco se sabe sobre o funcionamento dos "touchpads" do MSX, desde a pinagem deste dispositivo ao seu protocolo de comunicação. As observações abaixo são o resultado das análises da rotina GTPAD da BIOS.

O Touchpad do MSX é composto de 2 conversores A/D, que transferem seus bits ser

Pinagem do Touchpad:


Pino Direção Nome Função
1 S SENSE Indica quando a caneta do Touchpad toca sua superfície (0=Tocando)
2 S EOC Indica fim da conversão (1=Conversão terminada)
3 S DATA Dados enviados serialmente (MSB primeiro) pelo conversor A/D
4 S BTN Botão da caneta do touchpad (0=pressionado)
5 - Vcc Alimentação +5Volts
6 E CS Inicia uma conversão A/D (0=iniciar conversão)
7 E X/Y Seleciona conversor A/D (X=0, Y=1)
8 E SCK Clock para transferência de dados
9 - GND Negativo da alimentação.


O Pino CS (Trigger A) é levado a "0" (zero) para iniciar uma conversão. O conversor A/D é selecionado pelo pino X/Y (Trigger B; 0=X, 1=Y). O MSX então aguarda até que o conversor A/D termine de realizar sua conversão, liberando a linha EOC (DOWN), fazendo com que esta seja igual a "1" (um). Em seguida o MSX libera a linha CS, que novamente assume o valor "1" (um).

A partir deste momento começa a transferência do valor do conversor A/D. O pino SCK (Pulse) é levado a "1" (um) e em seguida o sinal presente na linha DATA (LEFT) é lido e colocado no registrador L. O pino SCK (Pulse) é então levado de volta a "0" (zero). Desta forma, 8 bis são lidos e armazenados em L. O pino SENSE (UP) é amostrado a cada bit lido, porém somente o estado do pino durante o bit menos significativo é levado em consideração. Caso seja "0" (zero), o MSX assume que a caneta manteve-se em contato com o "touchpad" durante o tempo da conversão, e que portanto, a coordenada lida é válida. Caso contrário, a rotina termina retornando o valor do pino SENSE.

As coordenadas X/Y são amostradas duas vezes seguidas. Caso a diferença de valor de cada eixo seja maior do que 5 (cinco) nestas amostragens consecutivas, ou seja, caso duas leituras consecutivas resultem em posições muito diferentes, todo o processo se repete. Caso contrário, as coordenadas X e Y são armazenasdas em PADX (FC9D) e PADY (FC9C), e a rotina termina, retornando o valor do pino SENSE.



Nenhum comentário: