Doble teclado en ZXUNO

Dudas, cuestiones, sugerencias y peticiones en general sobre el proyecto / Questions and requests about the project
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 tiempo (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 el arduino recibe señales de 1K de resistencia procedentes del teclado externo, reaccionando y provocando la repetición de teclas.

Si esto no fuese así, significaría que al igual que el teclado dual o algunos modernos en sentido contrario, 1K de resistencia es suficiente para ignorar la señal... que es lo que realmente nos interesa para evitar dicho efecto.

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 » 16 Nov 2017, 08:53

Ya he llevado a cabo las pruebas, y se va despejando aún más el asunto. La resistencia que realmente afecta es la de la línea DATA, pero afecta a la recepción de comandos por parte del teclado, no a la emisión (se pueden pulsar teclas y el ZXUno las recibe)... si esta resistencia que va desde la FPGA se aproxima a valores cercanos a 1K, es cuando el teclado se ve afectado en su recepción de comandos... y la prueba que lo confirma es muy sencilla, con dicha resistencia de 1K entre la FPGA y el teclado, éste no se inicializará al entrar al core de PC/XT, por ejemplo.

Y ahora la explicación, la mayoría de teclados (por no decir todos), además de tener un transistor en cada linea en colector abierto, en su interfaz tienen también resistencias PULL-UP a +5V, tal que así:

Imagen

Lo podéis comprobar fácilmente con un multímetro, observad si hay una resistencia y su valor entre entre +5V y DATA o entre +5V y CLK. Pues bien, dependiendo del valor de esta resistencia interna afectará mas o menos el valor de la resistencia que va a la FPGA, que por lo visto, 510R no afecta a ningún teclado... pero si llega o se aproxima a 1K sí lo hará en muchos, anulando la recepción de comandos del mismo, esto al Go+ le beneficia para varios teclados según su resistencia interna, porque entre Keyboard y el arduino suman 1K, manteniendo los 510R entre cada uno y la FPGA.

Por qué una resistencia de 1K (o incluso 1,5K he llegado a probar) no afecta sin embargo a la línea CLK si ésta también va a la FPGA? Porque la señal de CLK siempre la genera el device (ya sea el teclado o el arduino), nunca el host.

En arduino, que en el firmware nunca utilizamos PULL-UPs, siempre se verá afectada la recepción de comandos por tanto. Recordemos que en el firmware de ZXUnoPS2 esta función solo permanece activa en el modo de teclado PC/XT. Sí, podríamos decir que el arduino del Go+ con el firmware de ZXUnoPS2 o el Joy2PS2, son mas amigables para la FPGA que muchos teclados externos, mientras no se adapten las señales de éstos a 3,3V. Otra prueba ello... por qué pensáis que puede ser que algunos cores a los que no se les activó el PULL-UP (como el de C64) en el código de verilog no funcionaban con el Go+ o Joy2PS2 y sí lo hacían con un teclado externo? Y una vez resintetizados con PULL-UPs, ya funcionaban también con el arduino...
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 ha sido necesario soldar nada mas, la salida del conector PS/2 del ZXUno ya se encuentra al otro extremo de las resistencias.

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

Re: Doble teclado en ZXUNO

Mensaje por ManuFerHi » 16 Nov 2017, 16:39

Bueno al fin se resolvió el misterio. Sólo un detalle, a veces uso el GO+ como teclado externo de otro ZX-UNO con un simple cable PS/2, en ese caso entre el teclado y la FPGA hay 1K5 ya que pasa por tres resistencias, ¿es posible que esta sordera a partir de 1K no afecte al arduino igual que a la FPGA?

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

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 16 Nov 2017, 16:56

ManuFerHi escribió:Bueno al fin se resolvió el misterio. Sólo un detalle, a veces uso el GO+ como teclado externo de otro ZX-UNO con un simple cable PS/2, en ese caso entre el teclado y la FPGA hay 1K5 ya que pasa por tres resistencias, ¿es posible que esta sordera a partir de 1K no afecte al arduino igual que a la FPGA?
Al arduino no le afecta en absoluto, porque como comento no se hace PULL-UPs desde el firmware del mismo... se trabaja con 0V para el 0 lógico y Alta impedancia para el 1, tal como se recomienda para proteger la FPGA que trabaja a 3.3V y los cores ya tienen todos aplicados sus propios PULL-UPs a 3.3V

La prueba de que no le afecta es muy simple como he comentado, si usas normalmente un Go+ con un teclado externo conectado y pruebas a pasar al modo PC/XT desde atajo del arduino/gomas... verás que no podrás utilizar por mucho tiempo el teclado externo... ya que el arduino está a la escucha (no es sordo) y reaccionará en breve, produciendo el efecto de repetición de teclas.

Por lo que a tu pregunta, podrás utilizarlo sin problema... tanto la FPGA como el Arduino escucharán los comandos que se envíen mutuamente.

Invitado

Re: Doble teclado en ZXUNO

Mensaje por Invitado » 16 Nov 2017, 17:54

De todas formas @ManuFerHi, ahora que lo pienso, desde el arduino del go+ hasta la FPGA del ZXUno hay 1K... La otra resistencia de 510R hacia la otra FPGA del go+ no va en serie...

No obstante, para utilizarlo como teclado externo es una pena que no puedas desconectar el Go+, se te encenderá internamente y también recibirá los eventos de teclado, aunque, salvo el core de PC/XT podrás utilizar cualquier otro en el ZXUno. Lo digo porque al encenderse el go+ éste podría interferir en la inicialización del PC/XT del ZXUno.

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 » 16 Nov 2017, 17:54

De todas formas @ManuFerHi, ahora que lo pienso, desde el arduino del go+ hasta la FPGA del ZXUno hay 1K... La otra resistencia de 510R hacia la otra FPGA del go+ no va en serie...

No obstante, para utilizarlo como teclado externo es una pena que no puedas desconectar el Go+, se te encenderá internamente y también recibirá los eventos de teclado, aunque, salvo el core de PC/XT podrás utilizar cualquier otro en el ZXUno. Lo digo porque al encenderse el go+ éste podría interferir en la inicialización del PC/XT del ZXUno.

Enviado desde mi Thor mediante Tapatalk

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

Re: Doble teclado en ZXUNO

Mensaje por ManuFerHi » 16 Nov 2017, 18:52

En realidad es 1K5, la resistencia del arduino hacia la FPGA, la resistencia que hay en la entrada del PS2 del GO+ y las resistencias del PS2 del ZXUNO a conectar.

EDITO ah vale, entiendo lo que dices, al estar conectada la FPGA no cuenta como resistencia en serie.

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

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 18 Nov 2017, 04:44

Un último apunte. Las resistencias internas (entre 5v y DATA o CLK) de los teclados externos que se vuelven sordos para el arduino del Go+, curiosamente tienen valores altísimos... el dual 18M y el otro moderno 1.8M...sin embargo el antiguo que no se vuelve sordo, tan solo 1,8K...es curioso que una pequeña variación de 510R a 1K marque la diferencia a los que tienen resistencias internas tan elevadas.

El dual se puede entender porque seguro que internamente no se trata de una resistencia propiamente dicha de 18M, sino un conjunto de componentes que, sin alimentación, forman esa alta resistencia... pero el moderno de 1.8M, ni idea. En cualquier caso, si se miden los voltajes (o mejor se usa un osciloscopio) una vez conectado cualquier teclado externo con PULL-UP propio al ZXUno, entre GND y DATA/CLK, se verán los picos de 4,6V marcados por el PULL-UP del teclado... y se se hace con el arduino y el firmware ZXUnoPS2, se verá que rondan los 3,2V marcados por el PULL-UP del core de la FPGA...

Enviado desde mi Thor mediante Tapatalk

Responder