Pensando sobre o MSX que eu troquei recentemente com um amigo do IRC, resolvi aproveitar esse tempinho pra tentar utilizar o controle do Playstation 1 ou 2, para o MSX.
Veja abaixo a montagem provisória que fiz para os testes.
Eles não tem as chaves conectadas diretamente, mas sim pelo conector é feita uma comunicação serial síncrona para se transferir os comandos do PSX para o joystick.
Para então usar esse controle no MSX, eu trabalhei nessas horinhas que me sobraram em cima do protocolo desse pad, entendendo o mesmo, e também usando um microcontrolador para se ler os botões nesse controle.
Inicialmente, usando um kit com microcontrolador AVR ATMEGA16, fiz um programa e consegui a comunicação e decodificação desse protocolo, com ajuda da seguinte página:
http://sophiateam.undrgnd.free.fr/psx/index.html
Depois de interpretar, concluí que são transferidos dados de 8 bits, com dado válido no edge de subida do clock, onde temos dois dados:
1-Sinal DATA: Sinal de saída de dados serial do controle
2-Sinal COMMAND: Sinal de entrada de dados do controle
Além do já conhecido CLOCK, temos também o sinal ATT, que deve ser levado a nível baixo durante a requisição de comunicação pelo PSX ao controle.
Com um pouco de bitbang e, interpretando os dados que eram cedidos pelo controle após os comandos 0x01 e 0x42, com a ajuda de algumas funções lógicas no C consegui fazer uma função que faz a leitura do controle, retornando uma variável com os seguintes bits:
b7 = Botão direção abaixo
b6 = Botão direção direita
b5 = Botão direção acima
b4 = Botão direção esquerda
b3 = Botão X
b2 = Botão O
b1 = Botão Triângulo
Ou seja, caso o usuário aperte n botões ao mesmo tempo, o resultado final será a operação OU destes valores.
Abaixo mostro uma screenshot tirada no osciloscópio com o canal 2 sendo o clock gerado pelo AVR já programado e o canal 1 sendo a resposta enviada pelo controle, a rotina envia o clock e comando, lendo o dado e convertendo-o para este formato acima descrito.
Com a rotina já testada, agora os próximos passos são:
1-Portar o código em C da arquitetura AVR para um micro 8051 AT89C4051
2-Fazer o layout da placa
3-Testar o sistema agora com o micro definitivo
4-Montar e testar no MSX real
Estes passos são rápidos, o mais demorado é o frete para a placa chegar aqui em casa.
No final das contas, as 7 horas foram muito mais que suficientes, gastei 3 horas para fazer essa rotina, entender o protocolo e montar o setup todo desde a conexão do joystick ao kit.
Agora vou saindo para uma viagem, quando tudo estiver pronto posto o código, placas e demais resultados.
Um ótimo fim de semana e comentem!!
0 comentários:
Postar um comentário