Doble teclado en ZXUNO

Dudas, cuestiones, sugerencias y peticiones en general sobre el proyecto / Questions and requests about the project
ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: Doble teclado en ZXUNO

Mensaje por ManuFerHi » 14 Nov 2017, 16:27

Solda los cables del arduino directamente a la salida de las resistencias del zxuno, así las del zx-uno las usas para el teclado y le pones otras dos al arduino.

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

Re: RE: Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 14 Nov 2017, 16:31

ManuFerHi escribió:Solda los cables del arduino directamente a la salida de las resistencias del zxuno, así las del zx-uno las usas para el teclado y le pones otras dos al arduino.
La idea es buena y la tenía en cuenta, pero ya veremos si finalmente lo hago jeje... No soy muy hábil con el tema SMD, y tengo que estar 100% seguro de donde me meto antes de ponerme a ello.

Enviado desde mi Thor mediante Tapatalk

ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: Doble teclado en ZXUNO

Mensaje por ManuFerHi » 14 Nov 2017, 16:34

Ahí tienes el pinout, soldas los cables con las resistencias que salen de tu arduino ahí, y en el conector pinchas el teclado.
Adjuntos
Captura.PNG

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

Re: RE: Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 14 Nov 2017, 16:42

ManuFerHi escribió:Ahí tienes el pinout, soldas los cables con las resistencias que salen de tu arduino ahí, y en el conector pinchas el teclado.
Si, ahí están las resistencias. Lo veo, pero cuando llegue a casa tengo que ver cómo es realmente de fácil para mí. Posiblemente lo haga...

Enviado desde mi Thor mediante Tapatalk

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

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 15 Nov 2017, 09:07

Ya he simulado el funcionamiento de las conexiones del Go+:

Imagen

He comprobado que, efectivamente el teclado dual ahora funciona bien... así como otro moderno que tengo. Y al igual que ManuFerHi, con un teclado antiguo PS/2 se siguen produciendo las repeticiones de teclas, sólo solucionable mediante el diodo. (sin embargo, al contrario que a tí Manu, el teclado dual funciona desde que se conecta... lo único que difiere ahora es que no está conectada la parte metalica del conector PS/2 a ningún sitio)

Pero este experimento me ha ayudado a entender por qué esto es así. Ahora mismo no puedo andar con dibujos para representarlo graficamente que sería lo suyo, pero si queda alguna duda ya lo haré en cuanto pueda. Al primer dibujo que mandó Manu representando lo que yo tenía, vamos a llamarle [A] y al segundo dibujo que envió representando las conexiones del Go+, vamos a llamarle .

En el dibujo [A] tenemos unas únicas resistencias de 510 ohmios que van a la FPGA, y por tanto:

-> 510 ohmios entre Keyboard y FPGA
-> 510 ohmios entre Arduino y FPGA
-> conexión sin resistencias entre Keyboard y Arduino

En el dibujo tenemos unas resistencias de 510 ohmios para Keyboard y otras de 510 ohmios para Arduino, y por tanto:

-> 510 ohmios entre Keyboard y FPGA
-> 510 ohmios entre Arduino y FPGA
-> 1M entre Keyboard y Arduino

Y es en éste último punto donde se encuentra la clave por la cual el funcionamiento es aceptable con muchos teclados, pero no todos como vemos con los antiguos de PS/2 mío y de Manu. Y la explicación es la siguente, 1M de resistencia parace suficiente para que el teclado "no se entere" de la comunicación por parte del Arduino con la FPGA, por lo tanto éste no reacciona ni aún con su escucha activa, y no se producen las temidas repeticiones. Que es lo que pasa? Que por lo visto algunos teclados como los antiguos de PS/2 soportan esa alta resistencia de 1M, y reacciona, sin embargo un diodo con el catodo hacia el teclado siempre lo resolverá con el incoveniente que todos sabemos de la imposibilidad de inicializarse y funcionar por ejemplo en el core de PC/XT.

Ya con una resistencia de 1M entre Arduino y teclado parece suficiente para resolver muchos casos, pero, cual sería la solución ideal? Alguna que imitara la función del diodo (o una gran resistencia) únicamente en el momento en que el arduino se encuentra enviando scancodes, de manera que el teclado externo no se entere en ese preciso instante. La parte del arduino está mas o menos controlada, porque la mayoría del tiempo tenemos capada por código la escucha de comandos, solo activa cuando se cambia al modo PC/XT, para poder arrancar el core de PC/XT mediante inicialización y cambio al set 1 de scancodes. De hecho, @ManuFerHi, si puedes haz la siguiente prueba. Con un teclado externo conectado, cambia al modo PC/XT en el gomas (posiblemente ya con este gesto empiecen los problemas si pulsas teclas del teclado externo, porque las escucha activa del gomas reaccionará si 1M de resistencia no es suficiente para que éste no se entere) entra al core de PC/XT, veo muy complicado que se produzca ningún tipo de inicialización, tanto en el teclado externo como en el gomas, y por tanto no podrás usar ese core.

Conclusión: Mientras no se lleve a cabo esa solución ideal que comento, la solución del diodo siempre resolverá la situación para todos los teclados...ahora bien, el reparto de resistencias en ambas salidas desde luego ayuda mucho.
Última edición por spark2k06 el 15 Nov 2017, 09:07, editado 2 veces en total.

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

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 15 Nov 2017, 10:08

De hecho, si entre keyboard y arduino pudiésemos poner una fuerte resistencia (más de 1M), manteniendo los 510 ohmios para cada keyboard y arduino por separado, y hacia la FPGA... esa sería la solución perfecta. La clave está en que keyboard y arduino no se "vean", y aun así es imposible que los dos tengan la escucha activa al mismo tiempo y respondan al host, alguien tiene que renunciar a la misma... lo normal es que sea el arduino como ya estamos haciendo la mayor parte del tiempo porque se puede controlar.

Que los dos no puedan mantener la escucha activa se traduce en lo siguiente, solo uno de los dos podrá inicializarse y funcionar correctamente en el core de PC/XT.

-> Si el teclado externo está conectado, en el arduino nos aseguramos no estar en el modo de teclado PC/XT y listo, al entrar al core, sólo funcionará bien el teclado externo, el de arduino se encontrará en el set 2 de scancodes y no funcionará correctamente.

-> Si el teclado externo no se encuentra conectado, tan solo tenemos que activar la escucha de arduino cambiando al modo de teclado PC/XT, y éste funcionará al arrancar el core... aunque conectemos un teclado externo una vez iniciado el core, éste no funcionará correctamente porque el core ya no lo inicializará y éste se encontrará en el set 2 de scancodes, incompatible.

Enviado desde mi Thor mediante Tapatalk

ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: Doble teclado en ZXUNO

Mensaje por ManuFerHi » 15 Nov 2017, 12:18

512R y 512R = 1K , se debería escuchar igualmente, puedes probarlo soldando los cables en el otro extremo, lo único que al teclado también deberías ponerle sus resistencias. No es una resistencia tan alta como para aislar las señales, simplemente que lo suyo es que cada terminación tenga sus resistencias para evitar ruidos y acoplamientos. La solución en tu caso creo que sería simplemente ponerle las resistencias en el cable Y para cada cacharro que conectes.

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

Re: RE: Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 15 Nov 2017, 12:25

[quote="ManuFerHi"]512R y 512R = 1K , se debería escuchar igualmente, puedes probarlo soldando los cables en el otro extremo, lo único que al teclado también deberías ponerle sus resistencias. No es una resistencia tan alta como para aislar las señales, simplemente que lo suyo es que cada terminación tenga sus resistencias para evitar ruidos y acoplamientos. La solución en tu caso creo que sería simplemente ponerle las resistencias en el cable Y para cada cacharro que conectes.[/quote]Me he confundido con la M, quería decir K..., evidentemente :-). Pues yo diría que sí es suficientemente alta para aislar la señal excepto al teclado PS/2 antiguo. Ya haré una prueba mas específica para confirmarlo. Si tienes ocasión prueba lo que te he comentado.

Enviado desde mi Thor mediante Tapatalk

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

Re: RE: Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 15 Nov 2017, 12:25

ManuFerHi escribió:512R y 512R = 1K , se debería escuchar igualmente, puedes probarlo soldando los cables en el otro extremo, lo único que al teclado también deberías ponerle sus resistencias. No es una resistencia tan alta como para aislar las señales, simplemente que lo suyo es que cada terminación tenga sus resistencias para evitar ruidos y acoplamientos. La solución en tu caso creo que sería simplemente ponerle las resistencias en el cable Y para cada cacharro que conectes.
Me he confundido con la M, quería decir K..., evidentemente :-). Pues yo diría que sí es suficientemente alta para aislar la señal excepto al teclado PS/2 antiguo. Ya haré una prueba mas específica para confirmarlo. Si tienes ocasión prueba lo que te he comentado.

Enviado desde mi Thor mediante Tapatalk

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

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 15 Nov 2017, 13:11

La simple prueba de cambiar al modo PC/XT con el atajo del gomas y el teclado externo estando conectado al mismo (sin necesidad de ir siquiera al core de PC), y en éste estado, si al pulsar teclas del externo comienzan las repeticiones al de poco...sería indicativo que al arduino no le afecta que 1K de resistencia y escucha al teclado externo, reaccionando y produciendo la repetición de teclas.

Enviado desde mi Thor mediante Tapatalk

Responder