Construcción de adaptador Joystick a PS/2

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por spark2k06 » 23 Oct 2016, 16:26

carmeloco escribió:
spark2k06 escribió:Por otro lado, una funcionalidad que me parece interesante de este addon, si la memoria del arduino lo permitiese, sería almacenar los últimos eventos y reproducirlos a partir de otro combo... sería divertido ver por ejemplo una partida grabada en el ZXUno mediante esta funcionalidad, aunque habría que establecer el comienzo de la misma (justo cuando se inicia el juego) :-)

Enviado desde mi thor mediante Tapatalk
En Arduino, se pueden grabar cosas en la flash, o incluso en una tarjeta SD. Los problemas que veo son que, no solo habría que grabar las pulsaciones, si no que también habría que grabar los tiempos de estas. El otro problema que veo, es que esa grabación, podría ralentizar todo el funcionamiento del Arduino, y con ello, los tiempos de respuesta del adaptador.
Correcto, la mayor dificultad sin duda es la sincronización, además tampoco valdría para todos los juegos, solo para aquellos de patrones fijos.

Enviado desde mi thor mediante Tapatalk

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por mcleod_ideafix » 24 Oct 2016, 16:46

spark2k06 escribió:Y por supuesto, no nos tenemos que preocupar por temas de ghosting, bueno en principio no que yo sepa.
Cierto. Si el diseño de tu pad no usa matriz, sino que usa una GPIO por botón, ni tendrás ghosting ni tendrás limitaciones de teclas pulsadas. Las limitaciones que se observan en los teclados (máximo número de teclas pulsadas, etc) viene precisamente por evitar el ghosting. En la matriz del teclado del Spectrum, al no haber restricciones sobre el máximo número de teclas a pulsar, sí que existe ghosting (pero no restricciones).

Respecto a lo que conectes a la FPGA, recuerda que los pines del teclado son en colector abierto. Es decir, que cuando envías un 1 a una salida de tu Arduino para enviarlo al ZX-UNO, en realidad estás dejando esa salida "flotante". En ningún caso debes enviar una salida "1" (5V) so pena de estropear la FPGA. El 0 lógico sí que son 0V.

Además, respetando esto, podrás poner a la vez un teclado completo y tu joystick PS/2, y operar con ambos (aunque no se reconocerán teclas que se pulsen a la vez en un dispositivo y en otro)
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por spark2k06 » 24 Oct 2016, 17:08

mcleod_ideafix escribió:Cierto. Si el diseño de tu pad no usa matriz, sino que usa una GPIO por botón, ni tendrás ghosting ni tendrás limitaciones de teclas pulsadas.
Mi diseño de joystick es como un Kempston de 3 botones (MasterSystem, sin utilizar el pin de 5V, y en lugar de 3 botones, de 6 botones (uno adicional, select y start). al pulsar uno de estos tres botones adicionales básicamente lo que hago es pulsar (arriba+abajo) (izquierda+derecha) y (arriba+abajo+izquierda+derecha), y utilizo unos diodos para evitar que al pulsar individualmente izquierda, abajo, derecha o izquierda se pulsen el resto, he adjuntado unas imagenes del prototipo en protoboard en este hilo, donde se puede ver bien :-). Lo que quiero es que ademas de PS/2, sirva para ser utilizado a traves del conector DB9.
mcleod_ideafix escribió:Respecto a lo que conectes a la FPGA, recuerda que los pines del teclado son en colector abierto. Es decir, que cuando envías un 1 a una salida de tu Arduino para enviarlo al ZX-UNO, en realidad estás dejando esa salida "flotante". En ningún caso debes enviar una salida "1" (5V) so pena de estropear la FPGA. El 0 lógico sí que son 0V.
Creo que eso lo tengo controlado, he hecho un test de VICTOR para comprobar si hay ghosting y no se ha roto nada :silbando:
mcleod_ideafix escribió: Además, respetando esto, podrás poner a la vez un teclado completo y tu joystick PS/2, y operar con ambos (aunque no se reconocerán teclas que se pulsen a la vez en un dispositivo y en otro)
Me gusta esa idea, puede que el diseño final con arduino nano haga eso mismo, un conector PS/2 macho para conectar al del ZXUno y dos entradas, una DB9 para el joystick y otra PS/2 por si se quiere utilizar el teclado al mismo tiempo.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por mcleod_ideafix » 24 Oct 2016, 17:12

spark2k06 escribió:
mcleod_ideafix escribió:Respecto a lo que conectes a la FPGA, recuerda que los pines del teclado son en colector abierto. Es decir, que cuando envías un 1 a una salida de tu Arduino para enviarlo al ZX-UNO, en realidad estás dejando esa salida "flotante". En ningún caso debes enviar una salida "1" (5V) so pena de estropear la FPGA. El 0 lógico sí que son 0V.
Creo que eso lo tengo controlado, he hecho un test de VICTOR para comprobar si hay ghosting y no se ha roto nada :silbando:
Compruébalo dos veces. La FPGA no se rompe a la primera si le metes 5V por donde no debes, pero si los sigues poniendo durante minutos, horas o días, acabarás estropeando, por lo menos, el driver de entrada de ese pin en particular.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por spark2k06 » 24 Oct 2016, 17:14

mcleod_ideafix escribió:
spark2k06 escribió:
mcleod_ideafix escribió:Respecto a lo que conectes a la FPGA, recuerda que los pines del teclado son en colector abierto. Es decir, que cuando envías un 1 a una salida de tu Arduino para enviarlo al ZX-UNO, en realidad estás dejando esa salida "flotante". En ningún caso debes enviar una salida "1" (5V) so pena de estropear la FPGA. El 0 lógico sí que son 0V.
Creo que eso lo tengo controlado, he hecho un test de VICTOR para comprobar si hay ghosting y no se ha roto nada :silbando:
Compruébalo dos veces. La FPGA no se rompe a la primera si le metes 5V por donde no debes, pero si los sigues poniendo durante minutos, horas o días, acabarás estropeando, por lo menos, el driver de entrada de ese pin en particular.
Lo comprobaré, gracias!

Enviado desde mi thor mediante Tapatalk

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por spark2k06 » 24 Oct 2016, 18:07

mcleod_ideafix escribió:
spark2k06 escribió:
mcleod_ideafix escribió:Respecto a lo que conectes a la FPGA, recuerda que los pines del teclado son en colector abierto. Es decir, que cuando envías un 1 a una salida de tu Arduino para enviarlo al ZX-UNO, en realidad estás dejando esa salida "flotante". En ningún caso debes enviar una salida "1" (5V) so pena de estropear la FPGA. El 0 lógico sí que son 0V.
Creo que eso lo tengo controlado, he hecho un test de VICTOR para comprobar si hay ghosting y no se ha roto nada :silbando:
Compruébalo dos veces. La FPGA no se rompe a la primera si le metes 5V por donde no debes, pero si los sigues poniendo durante minutos, horas o días, acabarás estropeando, por lo menos, el driver de entrada de ese pin en particular.
El código está basado en el de quest, donde finalmente llamamos aquí, en teoría lo deja abierto al ponerse como input_pullup:


void ps2Mode(uint8_t pin, uint8_t mode) { if(mode) { //high PS2_DDR &= ~_BV(pin); //input (Truco DDR. Como input sin estado, se pone en modo Hi-Z) } else { //low PS2_DDR |= _BV(pin); //output (Truco DDR. Como output, se pone a 0v) } }


Enviado desde mi thor mediante Tapatalk

Avatar de Usuario
yombo
Mensajes: 487
Registrado: 05 Oct 2015, 14:10

Re: RE: Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por yombo » 24 Oct 2016, 23:27

spark2k06 escribió:
mcleod_ideafix escribió:
spark2k06 escribió:
mcleod_ideafix escribió:Respecto a lo que conectes a la FPGA, recuerda que los pines del teclado son en colector abierto. Es decir, que cuando envías un 1 a una salida de tu Arduino para enviarlo al ZX-UNO, en realidad estás dejando esa salida "flotante". En ningún caso debes enviar una salida "1" (5V) so pena de estropear la FPGA. El 0 lógico sí que son 0V.
Creo que eso lo tengo controlado, he hecho un test de VICTOR para comprobar si hay ghosting y no se ha roto nada :silbando:
Compruébalo dos veces. La FPGA no se rompe a la primera si le metes 5V por donde no debes, pero si los sigues poniendo durante minutos, horas o días, acabarás estropeando, por lo menos, el driver de entrada de ese pin en particular.
El código está basado en el de quest, donde finalmente llamamos aquí, en teoría lo deja abierto al ponerse como input_pullup:


void ps2Mode(uint8_t pin, uint8_t mode) { if(mode) { //high PS2_DDR &= ~_BV(pin); //input (Truco DDR. Como input sin estado, se pone en modo Hi-Z) } else { //low PS2_DDR |= _BV(pin); //output (Truco DDR. Como output, se pone a 0v) } }
Yo no estaría muy seguro. Los Arduino (Atmega) no tienen salidas en colector abierto. Recuerdo haber medido 5V en pines configurados como entrada.

Avatar de Usuario
yombo
Mensajes: 487
Registrado: 05 Oct 2015, 14:10

Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por yombo » 24 Oct 2016, 23:41

mcleod_ideafix escribió:
spark2k06 escribió: Respecto a lo que conectes a la FPGA, recuerda que los pines del teclado son en colector abierto.

Además, respetando esto, podrás poner a la vez un teclado completo y tu joystick PS/2, y operar con ambos (aunque no se reconocerán teclas que se pulsen a la vez en un dispositivo y en otro)
Sobre la posibilidad de conectar dos teclados ps2 al mismo conector, ya que es en colector abierto:

Habría problemas por la configuración inicial que se envía a los teclados? Desconozco cuál es el diálogo de los bytes que se envían, pero intuyo que el ZX-Uno envía bytes y no espera respuesta. O sí?
Es que he estado indagando en el código verilog y por lo que veo esta configuración se realiza desde el Z80, y no he encontrado dónde se hace exactamente.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por mcleod_ideafix » 25 Oct 2016, 00:03

yombo escribió:Es que he estado indagando en el código verilog y por lo que veo esta configuración se realiza desde el Z80, y no he encontrado dónde se hace exactamente.
En la BIOS. Si te fijas, cuando el ordenador arranca, en un momento determinado se enciende Num Lock. Eso lo hace la BIOS para indicar que el teclado ha sido inicializado. En rigor, la mayoría de teclados no requiere inicialización, pero algunos sí, y Quest incorporó esta inicialización. Si conectas un teclado y el joystick PS/2, el joystick simplemente puede ignorar cualquier comando que venga por el puerto PS/2. Su única misión es enviar scancodes.

Si en lugar de un teclado y un joystick lo que se conectan son dos teclados completos, en un PC seguramente haya colisiones en la inicialización. En el ZX-UNO puede que no, pero la verdad es que no tengo ni idea de lo que podría pasar :D
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: RE: Re: RE: Re: Construcción de adaptador Joystick a PS/2

Mensaje por spark2k06 » 25 Oct 2016, 05:27

yombo escribió:
spark2k06 escribió:
mcleod_ideafix escribió:
spark2k06 escribió:
mcleod_ideafix escribió:Respecto a lo que conectes a la FPGA, recuerda que los pines del teclado son en colector abierto. Es decir, que cuando envías un 1 a una salida de tu Arduino para enviarlo al ZX-UNO, en realidad estás dejando esa salida "flotante". En ningún caso debes enviar una salida "1" (5V) so pena de estropear la FPGA. El 0 lógico sí que son 0V.
Creo que eso lo tengo controlado, he hecho un test de VICTOR para comprobar si hay ghosting y no se ha roto nada :silbando:
Compruébalo dos veces. La FPGA no se rompe a la primera si le metes 5V por donde no debes, pero si los sigues poniendo durante minutos, horas o días, acabarás estropeando, por lo menos, el driver de entrada de ese pin en particular.
El código está basado en el de quest, donde finalmente llamamos aquí, en teoría lo deja abierto al ponerse como input_pullup:


void ps2Mode(uint8_t pin, uint8_t mode) { if(mode) { //high PS2_DDR &= ~_BV(pin); //input (Truco DDR. Como input sin estado, se pone en modo Hi-Z) } else { //low PS2_DDR |= _BV(pin); //output (Truco DDR. Como output, se pone a 0v) } }
Yo no estaría muy seguro. Los Arduino (Atmega) no tienen salidas en colector abierto. Recuerdo haber medido 5V en pines configurados como entrada.
Me dejas mosqueado, polímetro en mano, lo verificaré en cuanto pueda, ya os contaré.

Enviado desde mi thor mediante Tapatalk

Responder