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
spark2k06
Mensajes: 1136
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: Os presento JOY2PS2 para ZXUno

Mensaje por spark2k06 » 12 Dic 2016, 14:30

brunosilva escribió:after finished I also want one! :)
Sorry, I didn't answer you. You are already on the list for revision 2 of the PCB.

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

Re: RE: Re: Os presento JOY2PS2 para ZXUno

Mensaje por brunosilva » 12 Dic 2016, 14:36

spark2k06 escribió:
brunosilva escribió:after finished I also want one! :)
Sorry, I didn't answer you. You are already on the list for revision 2 of the PCB.
hi no problem... I saw my username in the first post so... all ok by me :)

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 13 Dic 2016, 13:05

Actualizada información de gastos de envío en el primer post.

Actualizado en mi repositorio de github la revisión 2:

-> Con ground plane.
-> Modificado texto "Name" por "ARDUINO".
-> Corregido pinout para conector DB15 macho en capa superior en lugar de hembra.
-> Mismas dimensiones y disposición de componentes que en la revisión 1.
-> Misma funcionalidad que la revisión 1.

https://github.com/spark2k06/zxuno/tree/master/joy2ps2

Top:
Imagen

Bottom:
Imagen

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por brunosilva » 13 Dic 2016, 13:57

Hi

I also want one v1 adapter (assembled) :)

Thanks

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 13 Dic 2016, 14:04

brunosilva escribió:Hi

I also want one v1 adapter (assembled) :)

Thanks
I'll send you a private message, thanks!

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 13 Dic 2016, 18:28

http://www.mmmonkey.co.uk/snk-neo-geo-d ... ller-plug/

Ahí van unas instrucciones para adaptar un conector db15 que se pueden encontrar baratos en Aliexpress y construirse un cable para hacer o modificar un pad o stick arcade. Esto si hay dificultades en encontrar un cable o no se dispone de pad NeoGeo.

Enviado desde mi Thor mediante Tapatalk

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por mcleod_ideafix » 14 Dic 2016, 00:14

spark2k06 escribió:...teniendo en cuenta que no se debería usar al mismo tiempo para evitar colisiones (en cuanto al ratón no hay problema porque utiliza pines independientes), pero al probarlo he comprobado que con éste conectado los sendcodes del arduino son ignorados, sólo funcionando el teclado... si se desconecta en caliente vuelve a funcionar el arduino y si se vuelva a conectar deja de funcionar (parece como si el teclado "absorbiera" los códigos enviados por el arduino). Esta parte queda pendiente de revisar pero la funcionalidad principal del adaptador funciona correctamente.
Esto que comentas no debería pasar, si la interfaz física PS/2 se ha implementado de acuerdo a los estándares, que especifican que los dos pines del puerto PS/2 en un dispositivo deben ser de colector abierto SIN PULLUP. El pullup lo pone el host. ¿Está configurado de esa manera? Si no lo está, y has configurado una resistencia interna de pullup en el Arduino Nano, estás llevando esas salidas a 5V, y, aunque la resistencia esté por medio, corres el riesgo de meter 5V a una entrada de la FPGA, y no es tolerante a ellas. Peor aún si en lugar de salida con pullup es una salida en totem-pole, porque entonces la intensidad que recorre la entrada de la FPGA cuando se le conecta a una señal que esté a 5V es mayor, y con ello, el riego de estropear la FPGA.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 14 Dic 2016, 04:52

mcleod_ideafix escribió:
spark2k06 escribió:...teniendo en cuenta que no se debería usar al mismo tiempo para evitar colisiones (en cuanto al ratón no hay problema porque utiliza pines independientes), pero al probarlo he comprobado que con éste conectado los sendcodes del arduino son ignorados, sólo funcionando el teclado... si se desconecta en caliente vuelve a funcionar el arduino y si se vuelva a conectar deja de funcionar (parece como si el teclado "absorbiera" los códigos enviados por el arduino). Esta parte queda pendiente de revisar pero la funcionalidad principal del adaptador funciona correctamente.
Esto que comentas no debería pasar, si la interfaz física PS/2 se ha implementado de acuerdo a los estándares, que especifican que los dos pines del puerto PS/2 en un dispositivo deben ser de colector abierto SIN PULLUP. El pullup lo pone el host. ¿Está configurado de esa manera? Si no lo está, y has configurado una resistencia interna de pullup en el Arduino Nano, estás llevando esas salidas a 5V, y, aunque la resistencia esté por medio, corres el riesgo de meter 5V a una entrada de la FPGA, y no es tolerante a ellas. Peor aún si en lugar de salida con pullup es una salida en totem-pole, porque entonces la intensidad que recorre la entrada de la FPGA cuando se le conecta a una señal que esté a 5V es mayor, y con ello, el riego de estropear la FPGA.
Me dejas con el miedo en el cuerpo, tampoco quiero estropear ZXUnos a nadie. Te acuerdas que comentamos este asunto en el otro hilo?:

viewtopic.php?f=35&t=648&start=20

Como en éste comento, hice las pruebas correspondientes multímetro en mano a la salida del PS/2 (modifiqué el código temporalmente para mantener HI-Z durante un largo periodo de tiempo), y determiné que en CLK/DATA no se producía tensión alguna.

No obstante, creo que debo aclarar que a nivel de PCB no debería estar mal. El CLK y DATA del puerto PS/2 estan conectados directamente a los I/O A2 y A3 del arduino, en todo caso, si algo estuviese mal sería en código de arduino, corregible por supuesto:

https://github.com/spark2k06/zxuno/blob ... ps2/main.c

o directamente para compilar con el entorno IDE:

https://github.com/spark2k06/zxuno/blob ... oy2ps2.ino

Ya no me quedo tranquilo. Hasta que no resuelva este asunto quedan paralizados los envíos, @brunosilva, de momento te voy a hacer un reintegro por paypal, ya lo siento, de verdad :oops: .

@mcleod_ideafix, dispones de algún arduino nano v3 para pruebas? No me importa cederte lo que sea necesario, la PCB revision 1 por supuesto y todos los componentes que necesites, incluido un arduino preprogramado con el código... si no dispones de tiempo o lo que sea, yo no se qué mas puedo probar, vamos lo comentado en el otro hilo, si hay algo mas que pueda hacer...

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 14 Dic 2016, 09:24

Por otro lado, hay una cosa que no entiendo con el tema del PS/2. Por qué desde arduino nos vemos obligados a usar tiempos de reloj/semireloj de 240/480 microsegundos en lugar de los tiempos normales 20/40 microsegundos porque no funcionan, y los teclados que se supone deberían usar esos tiempos normales sí funcionan al conectarlos al ZXUno? Estaría bien disponer un analizador lógico para ver los tiempos de los teclados... o ver en qué cambia respecto a como se envía desde arduino, porque es algo que desde que llevo con este proyecto nunca he entendido.

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

Re: Os presento Joy2PS2 para ZXUno

Mensaje por spark2k06 » 14 Dic 2016, 13:12

spark2k06 escribió:... pero al probarlo he comprobado que con éste conectado los sendcodes del arduino son ignorados, sólo funcionando el teclado... si se desconecta en caliente vuelve a funcionar el arduino y si se vuelva a conectar deja de funcionar (parece como si el teclado "absorbiera" los códigos enviados por el arduino).
Estoy leyendo este artículo que explica muy bien el funcionamiento de un teclado PS/2, muy recomendado:

http://www.computer-engineering.org/ps2keyboard
Command Set:

A few notes regarding commands the host can issue to the keyboard:
  • The keyboard clears its output buffer when it recieves any command.
  • If the keyboard receives an invalid command or argument, it must respond with "resend" (0xFE).
  • The keyboard must not send any scancodes while processing a command.
  • If the keyboard is waiting for an argument byte and it instead receives a command, it should discard the previous command and process this new one.
Below are all the commands the host may send to the keyboard:
  • 0xFF (Reset) - Keyboard responds with "ack" (0xFA), then enters "Reset" mode. (See "Reset" section.)
  • 0xFE (Resend) - Keyboard responds by resending the last-sent byte. The exception to this is if the last-sent byte was "resend" (0xFE). If this is the case, the keyboard resends the last non-0xFE byte. This command is used by the host to indicate an error in reception.
Hay una parte donde dice que si el teclado recibe comandos inválidos, éste debe responder con un "resend" (sendcode 0xFE), puede ser ese el motivo por el cual "absorbe" los comandos enviados por arduino? porque el teclado los esté capturando y reenviando un 0xFE y el ZXUno se haga un lío?

Estoy casi seguro que el teclado debe de estar a la escucha (Idle state):
Summary: Bus States
Data = high, Clock = high: Idle state.
Data = high, Clock = low: Communication Inhibited.
Data = low, Clock = high: Host Request-to-Send
Recibe el comando que envía arduino por el mismo puerto, y después debería responder con un 0xFE... ¿Qué hace después el ZXUno con ese 0xFE?, ya no lo se... igual nada, pero posiblemente al enviarlo entre en conflicto con otros scancodes que esté mandando arduino. Una cosa está clara, y es que arduino va a ignorar toda comunicación que lleve a cabo el teclado, el cual sólo recibirá el ZXUno, no así el teclado que escucha tanto al ZXUno como al arduino y puede responder en consecuencia:

http://www.computer-engineering.org/ps2protocol

Otro enlace interesante...

http://retired.beyondlogic.org/keyboard/keybrd.htm

Responder