Joy2PS2 v1.0 para ZXUno

Proyectos ajenos al equipo oficial pero desarrollados o promovidos por la comunidad, relacionados con el ZX-UNO / Projects outside the official team but developed or promoted by the community, related to the ZX-UNO
Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Os presento Joy2PS2 para ZXUno

Mensaje por antoniovillena » 14 Dic 2016, 18:50

Independientemente del protocolo, lo importante es que el arduino no meta ningún voltaje por esos pines. En colector abierto significa que la salida del arduino debe ser o 0V o alta impedancia. Cualquier otra señalización es incorrecta, y que funcione no quiere decir que sea seguro.

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

Re: RE: Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 14 Dic 2016, 18:52

antoniovillena escribió:Independientemente del protocolo, lo importante es que el arduino no meta ningún voltaje por esos pines. En colector abierto significa que la salida del arduino debe ser o 0V o alta impedancia. Cualquier otra señalización es incorrecta, y que funcione no quiere decir que sea seguro.
Eso ya lo comprobé en el otro hilo, parte del mismo código.

Creo que hay colisión con códigos 0xFE enviados por el teclado y por eso no escucha al arduino con el teclado conectado, pero a ver como lo demuestro.

Enviado desde mi Thor mediante Tapatalk

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 14 Dic 2016, 21:13

Lo primero que hace el código arduino es inicializar las lineas clk y data poniendolas en alto (HI-Z):

void ps2Init()

{

  //ponemos en alto ambas señales

  PS2_PORT &= ~_BV(PS2_DAT); //A 0

  PS2_PORT &= ~_BV(PS2_CLK); //A 0

  ps2Mode(PS2_DAT, HI);

  ps2Mode(PS2_CLK, HI);

}

Yo las pruebas en su día las hice en un arduino uno, por si el comportamiento del arduino nano fuese diferente he vuelto a comprobar con un polimetro las lineas clk y data tras la inicialización, no hay tensión alguna.

Dicho esto, mantengo mi teoría de la colisión del teclado, pero no era la funcionalidad principal del adaptador, yo lo considero algo secundario. No obstante, un ratón seguro que funciona.


Enviado desde mi Thor mediante Tapatalk

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Os presento Joy2PS2 para ZXUno

Mensaje por antoniovillena » 14 Dic 2016, 21:35

Nada yo solo era para asegurarme de que habías entendido la advertencia de McLeod. Ya veo que eso lo tienes controlado.

El protocolo PS/2 es punto a punto, o sea que si tienes conectado un teclado a la vez que este conversor es normal que tengas colisiones. Para evitar las colisiones lo único que se me ocurre es que desde el arduino te encarges de arbitrar lo que entra por teclado y lo que entra por joystick. Desconozco cómo lo tienes hecho. Seguramente lo haces así.

Como sugerencia de mejora y debido a que los mandos de NEOGEO son caros, puedes aceptar mandos de NES. Estos se pueden conseguir baratos por internet y los conectores también. La pega es que no son pines directos, sino que tienes que demultiplexar en el tiempo.

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

Re: RE: Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 14 Dic 2016, 22:06

antoniovillena escribió:Nada yo solo era para asegurarme de que habías entendido la advertencia de McLeod. Ya veo que eso lo tienes controlado
Si, he entendido la advertencia. Es la misma que me dió cuando empece con este proyecto en el otro hilo, y por lo cual revisé en su día metódicamente, con los siguientes resultados:
spark2k06 escribió:Las pruebas han dado los siguientes resultados:

Tensión de entrada: 5,06V

1. Output LO -> 0V, entre GND y A2/A3 existe una pequeñísima resistencia de 22 ohmios. (Funcionamiento en PS/2 -> LO)

2. Output HI -> 5,06V

3. Input HI pullup -> 4,86V

4. Input HI-Z -> 0,06V (Funcionamiento en PS/2 -> HI-Z)

Como vemos, en el modo de funcionamiento PS/2 como mucho entran 0,06V en HI-Z a la FPGA, algo insignificante.

Imagen
No obstante, como las pruebas se llevaron a cabo en un arduino uno, y las placas están diseñadas para arduino nano, me he asegurado que en éste tampoco se produce ningún tipo de voltaje con el mísmo código de arduino, que a modo de recordatorio, lo tenéis disponible en mi perfil de github.
antoniovillena escribió: El protocolo PS/2 es punto a punto, o sea que si tienes conectado un teclado a la vez que este conversor es normal que tengas colisiones. Para evitar las colisiones lo único que se me ocurre es que desde el arduino te encarges de arbitrar lo que entra por teclado y lo que entra por joystick. Desconozco cómo lo tienes hecho. Seguramente lo haces así.
Tenía en mente que cuando no se está utilizando el teclado, éste no debía enviar nada pero al parecer... y leyendo los enlaces que os he pasado, deduzco (porque no tengo un analizador lógico para comprobarlo), que el teclado escucha en el PS/2 y ante un comando desconocido (cuando arduino envía sendcodes debido a los eventos joystick), devuelve un código 0xFE que significa RESEND, éste tipo de códigos enviados por el teclado creo que son los que entran en conflicto con lo que en ese momento pueda estar enviando el arduino, y ésta casuística no hay manera de arbitrarla desde arduino con las líneas CLK y DATA comunes... la única posibilidad es que el segundo puerto PS/2 vaya a otras entradas de arduino en lugar de puenteado, y envíe la comunicación por el otro puerto PS/2 conectado al ZXUno sincronizada con los eventos del joystick. Creo que esta gestion para sincronizar todos los eventos se le puede quedar grande al arduino, y tampoco era el objetivo principal, pero un ratón por ese puerto sin embargo va a funcionar sin problemas.

Al decir @mcleod_ideafix que este comportamiento no debería pasar y que podía ser por el tema de pullup, etc... me asusté y suspendí los envíos, pero al documentarme bien sobre protocolo PS/2 (+ teclado PS/2) y del posible motivo de colisión, ahora estoy mucho mas tranquilo... a ver si nos puede comentar algo al respecto para dar por concluído este asunto y pueda continuar con los envíos.
antoniovillena escribió: Como sugerencia de mejora y debido a que los mandos de NEOGEO son caros, puedes aceptar mandos de NES. Estos se pueden conseguir baratos por internet y los conectores también. La pega es que no son pines directos, sino que tienes que demultiplexar en el tiempo.
No tengo interés en meterme en otros diseños, una vez finalizado éste quiero trastear con el código verilog de la FPGA, para aprender y de paso mejorar lo que pueda, como el puerto PS/2 por ejemplo o dar soporte a cores que no tienen control PS/2. Existen conversores de gamepads a NeoGeo, como este de psx:

http://www.tototek.com/store/index.php? ... ucts_id=50

Para los manitas, tutorial de adaptación de cualquier pad a Neogeo:

http://www.mmmonkey.co.uk/snk-neo-geo-c ... r-joystick

Desde luego, este proyecto sólo es para quien le guste experimentar creando (filosofía do it yourself)... si no hay que pasar por caja :mrgreen:

Gracias no obstante por la sugerencia.
Última edición por spark2k06 el 15 Dic 2016, 09:52, editado 4 veces en total.

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 15 Dic 2016, 09:27

Editado mensaje anterior para dar mejor respuesta a los comentarios de @antoniovillena

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 15 Dic 2016, 17:05

Solucionado un fallo que hacía que no detectara la liberación de los botones 5 y 6 del Joystick, con la consecuente repetición indefinida de los mismos (teclas G y H) en el ZXUno. Código de arduino corregido en github, también he aprovechado para añadir el fichero HEX y poder grabarlo directamente al mismo sin necesidad de compilar.

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: Os presento Joy2PS2 para ZXUno

Mensaje por brunosilva » 15 Dic 2016, 17:12

So everything is solved?

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 15 Dic 2016, 17:18

Yo diría que sí, no veo peligro alguno. Ya he comentado por qué creo que se producen las colisiones con un teclado conectado, pero me gustaría conocer la opinión de mcleod... no tendrá mucho tiempo para comentar. Voy a dejar unos días de margen por si alguien tiene alguna duda, especialmente relativa a la integridad física del ZXUno, resolverla dentro de mis conocimientos/posibilidades.

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: Os presento Joy2PS2 para ZXUno

Mensaje por brunosilva » 15 Dic 2016, 17:25

deal!

Responder