Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Proyectos de hardware con sus esquemáticos y si llevan software en fuente

Moderadores: cacharreo, Fundadores

Reglas del Foro
Aquí solo tienen cabida proyectos de hardware que incluyan siempre al menos sus esquemáticos para poder reproducirlos si llevan componentes electrónicos, y si es posible los ficheros del programa en que se hacen, los diseños de las placas, los gerber, etc. Si llevan algún tipo de software asociado debe estar diponible el código fuente

Para los que no cumplen estas condiciones se debe postear en el foro de proyectos generales.
Responder
Avatar de Usuario
luisbarna España - Cataluña
Demonio tercer orden
Demonio tercer orden
Mensajes: 753
Registrado: 27 Dic 2022, 12:24
Ubicación: Barcelona
Has thanked: 375 times
Been thanked: 286 times

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por luisbarna »

iturbez escribió: 16 May 2024, 19:35Excelente propuesta. Mañana miro si me queda alguno sin usar (creo recordar que sí), y hacemos el cambio.
Sin problema, envíame un MP y concretamos.
Trastos:
AMSTRAD CPC464, CPC6128, placa PCW 8512
ZX Spectrum 48k (gomas), ZX Spectrum +, INVES Spectrum +, Spectrum Gris +2, Spectrum +3, ZX Spectrum 128k Toastrack
Commodore 16 (up to 64Kb), Commodore 64
Consolas: Intellivision Secam, Atari 2600 JR
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 6283
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1278 times
Been thanked: 3092 times
Contactar:

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por cacharreo »

Ayer pude hacer la prueba con un UNO y el sketch ArduinoISP. En estas fotografías muestro la configuración del hardware y del cable.

Imagen Imagen Imagen

Se ha utilizado la siguiente asignación de pines:

 Color  Pin UNO  Descripción 
Blanco10RST
Verde11MOSI
Azul12MISO
Violeta13SCK
NegroGNDGND
Rojo5VVCC

Código: Seleccionar todo

> avrdude -v -b 19200 -p m8 -c avrisp -P /dev/ttyACM0 -U flash:w:ZX_Spectrum_PS-2_Keyboard_interface_fw_v5.5.hex:i -U lfuse:w:0xcf:m -U hfuse:w:0xc7:m -U efuse:w:0xff:m

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/etc/avrdude.conf"
         User configuration file is "/home/amnesia/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyACM0
         Using Programmer              : avrisp
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega8
         Chip Erase delay              : 10000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom         4    20   128    0 no        512    4      0  9000  9000 0xff 0xff
           flash         33    10    64    0 yes      8192   64    128  4500  4500 0xff 0x00
           lfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           efuse          0     0     0    0 no          0    0      0     0     0 0x00 0x00
           lock           0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel AVR ISP
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: safemode: lfuse reads as CF
avrdude: safemode: hfuse reads as C7
avrdude: safemode: Fuse reading not support by programmer.
              Safemode disabled.
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "ZX_Spectrum_PS-2_Keyboard_interface_fw_v5.5.hex"
avrdude: writing flash (1330 bytes):

Writing | ################################################## | 100% 1.89s

avrdude: 1330 bytes of flash written
avrdude: verifying flash memory against ZX_Spectrum_PS-2_Keyboard_interface_fw_v5.5.hex:
avrdude: load data flash data from input file ZX_Spectrum_PS-2_Keyboard_interface_fw_v5.5.hex:
avrdude: input file ZX_Spectrum_PS-2_Keyboard_interface_fw_v5.5.hex contains 1330 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.95s

avrdude: verifying ...
avrdude: 1330 bytes of flash verified
avrdude: reading input file "0xcf"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xcf:
avrdude: load data lfuse data from input file 0xcf:
avrdude: input file 0xcf contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xc7"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xc7:
avrdude: load data hfuse data from input file 0xc7:
avrdude: input file 0xc7 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xff"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xff:
avrdude: load data efuse data from input file 0xff:
avrdude: input file 0xff contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified

avrdude: safemode: lfuse reads as CF
avrdude: safemode: hfuse reads as C7
avrdude: safemode: efuse reads as FF

avrdude: safemode: lfuse reads as CF
avrdude: safemode: hfuse reads as C7
avrdude: safemode: efuse reads as FF
avrdude: safemode: FUSES OK (H:C7, e:FF, L:CF)

avrdude done.  Thank you.
Después de estas pruebas y de confirmar con el ZX Spectrum que el ZX Spectrum PS/2 Keyboard interface funcionaba bien, he pasado el ATmega8A a una ATmegaX8 Dev Board 0.00 para hacerle perrerías y localizar posibles causas de errores.

Destacaría que con cualquier ATmegaX8 que esté configurado para usar un reloj externo, el oscilador debe estar funcionando a la perfección, si no, fallará la comunicación y uno de los síntomas típicos es que avrdude diga que no reconoce la firma. Este es un posible motivo de que se intente programar el ATmega8A y falle pero después se repita el intento con un ATmega328P nuevo, es decir, que durante la programación funcionará con su reloj interno a 8MHz y todo vaya como debe.

Por último, @iturbez ya que los tienes si quieres puedo ensamblar el firmware para el ATmega328P pero, aunque una vez programado el interfaz PS/2 funcionaría exactamente igual que con el ATmega8A, me parece un desperdicio usar un microcontrolador con tantas prestaciones extra respecto al ATmega8A solo para esto pero si es que compraste 300... :))
© cacharreo
Avatar de Usuario
iturbez
Demonio segundo orden
Demonio segundo orden
Mensajes: 1311
Registrado: 01 Feb 2014, 18:56
Has thanked: 25 times
Been thanked: 46 times

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por iturbez »

¡Madre mía!

El trabajo que os estoy dando con el tema. Es de agradecer...
cacharreo escribió: 17 May 2024, 10:14 Destacaría que con cualquier ATmegaX8 que esté configurado para usar un reloj externo, el oscilador debe estar funcionando a la perfección, si no, fallará la comunicación y uno de los síntomas típicos es que avrdude diga que no reconoce la firma. Este es un posible motivo de que se intente programar el ATmega8A y falle pero después se repita el intento con un ATmega328P nuevo, es decir, que durante la programación funcionará con su reloj interno a 8MHz y todo vaya como debe.
Por eso las últimas pruebas que hice fueron sobre la breadboard, no vaya a ser que el cristal no esté oscilando.
Por último, @iturbez ya que los tienes si quieres puedo ensamblar el firmware para el ATmega328P pero, aunque una vez programado el interfaz PS/2 funcionaría exactamente igual que con el ATmega8A, me parece un desperdicio usar un microcontrolador con tantas prestaciones extra respecto al ATmega8A solo para esto pero si es que compraste 300... :))
Pues me parece muy buena idea. Así tendré dos balas en la recámara. Si puedes ensamblar el firmware y hacermelo llegar, te lo agradezco. Los 328P están muertos de aburrimiento en un cajón...

Envío MP también a @luisbarna para el intercambio de chips.

Gracias por vuestro trabajo.
Un saludo.
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 6283
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1278 times
Been thanked: 3092 times
Contactar:

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por cacharreo »

iturbez escribió: 17 May 2024, 11:18El trabajo que os estoy dando con el tema. Es de agradecer...
Ni te preocupes porque viene muy bien para ampliar la información sobre el proyecto. Así se prueban todas las alternativas.
iturbez escribió: 17 May 2024, 11:18Por eso las últimas pruebas que hice fueron sobre la breadboard, no vaya a ser que el cristal no esté oscilando.
Aunque generalmente siempre irá bien porque tampoco 1, 8 ó 16MHz son frecuencias muy altas hay que andar con mucho ojo con la distribución del cristal y los condensadores en la placa de prototipos porque, como la placa en sí va a añadir una significativa capacitancia (parasitaria), si un "brazo" del oscilador tiene una capacitancia efectiva (condensador+parasitaria) muy diferente, en determinadas circunstancias el oscilador puede no arrancar y el microcontrolador se quedaría parado.
iturbez escribió: 17 May 2024, 11:18Pues me parece muy buena idea. Así tendré dos balas en la recámara. Si puedes ensamblar el firmware y hacermelo llegar, te lo agradezco. Los 328P están muertos de aburrimiento en un cajón...
Sin problema. Te envío el binario. La línea de comandos que habría que utilizar para programar el firmware es diferente:

Código: Seleccionar todo

avrdude -p atmega328p -c avrisp -P COM9 -U flash:w:ZX_Spectrum_PS-2_Keyboard_interface_fw_v5.5_328P.hex:i -U lfuse:w:0xEE:m -U hfuse:w:0xD5:m
© cacharreo
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 6283
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1278 times
Been thanked: 3092 times
Contactar:

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por cacharreo »

Como he comentado alguna otra vez, si el ATmega328P son ciertos clones chinos es posible que no soporten el sobrefrecuenciado a 20MHz. Lo mismo puede pasarle al ATmega8A, al ATmega48A,... Con estos últimos, los ATmega48A, lo experimenté en carne propia.

Imagen
© cacharreo
Avatar de Usuario
iturbez
Demonio segundo orden
Demonio segundo orden
Mensajes: 1311
Registrado: 01 Feb 2014, 18:56
Has thanked: 25 times
Been thanked: 46 times

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por iturbez »

Buenas tardes.

@cacharreo, recibido el firmware para el 328. En cuanto junte dos ratos, lo programo pruebo el interfaz.

@luisbarna, van de camino los chips para tu casa. Me avisas cuando recibas el sobre.

Gracias por todo vuestro trabajo y esfuerzo.

Un saludo.
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 6283
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1278 times
Been thanked: 3092 times
Contactar:

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por cacharreo »

Muy bien, nos cuentas por favor cómo ha ido.
© cacharreo
Avatar de Usuario
luisbarna España - Cataluña
Demonio tercer orden
Demonio tercer orden
Mensajes: 753
Registrado: 27 Dic 2022, 12:24
Ubicación: Barcelona
Has thanked: 375 times
Been thanked: 286 times

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por luisbarna »

iturbez escribió: 17 May 2024, 19:02 Buenas tardes.

@cacharreo, recibido el firmware para el 328. En cuanto junte dos ratos, lo programo pruebo el interfaz.

@luisbarna, van de camino los chips para tu casa. Me avisas cuando recibas el sobre.

Gracias por todo vuestro trabajo y esfuerzo.

Un saludo.
Que rápido!!!
Trastos:
AMSTRAD CPC464, CPC6128, placa PCW 8512
ZX Spectrum 48k (gomas), ZX Spectrum +, INVES Spectrum +, Spectrum Gris +2, Spectrum +3, ZX Spectrum 128k Toastrack
Commodore 16 (up to 64Kb), Commodore 64
Consolas: Intellivision Secam, Atari 2600 JR
Avatar de Usuario
iturbez
Demonio segundo orden
Demonio segundo orden
Mensajes: 1311
Registrado: 01 Feb 2014, 18:56
Has thanked: 25 times
Been thanked: 46 times

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por iturbez »

Hola.

Tengo buenas y malas noticias.

Pude programar el 328P con el firmware que compiló @cacharreo, a la primera, sin errores.

Conecto el interfaz al Spectrum. Enciendo. Se encienden los tres leds del teclado. Se apagan.
El Spectrum muestra el mensaje de (C), pero ni el teclado PS2 ni el del Spectrum responden. Misma respuesta independientemente de la posición del interruptor Z80/ULA.
Si desconecto el interfaz, el Spectrum arranca correctamente y responde a las pulsaciones de su teclado.

Dispongo de Harlequin, de Spctrum+ de Inves, de +2 negro y de +3. ¿Se ha probado el interfaz en alguno de estos modelos?... Por seguir haciendo alguna prueba...

Gracias.
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 6283
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1278 times
Been thanked: 3092 times
Contactar:

Re: Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]

Mensaje por cacharreo »

iturbez escribió: 19 May 2024, 15:45Pude programar el 328P con el firmware que compiló @cacharreo, a la primera, sin errores.
Esto es relevante porque es el mismo método que con el ATmega8A y en cierta forma nos confirma que éste debe estar frito.
iturbez escribió: 19 May 2024, 15:45Conecto el interfaz al Spectrum. Enciendo. Se encienden los tres leds del teclado. Se apagan.
¿Se apagan las 3? Cuando funciona bien deberían encenderse las 3 y después apagarse solo Caps Lock.
iturbez escribió: 19 May 2024, 15:45El Spectrum muestra el mensaje de (C), pero ni el teclado PS2 ni el del Spectrum responden. Misma respuesta independientemente de la posición del interruptor Z80/ULA.
Si desconecto el interfaz, el Spectrum arranca correctamente y responde a las pulsaciones de su teclado.
Es posible que ese ATmega328P concreto tampoco soporte los 20MHz. Mañana busco unos que tengo de Ali a ver qué tal se portan.
iturbez escribió: 19 May 2024, 15:45Dispongo de Harlequin, de Spctrum+ de Inves, de +2 negro y de +3. ¿Se ha probado el interfaz en alguno de estos modelos?... Por seguir haciendo alguna prueba...
En Harlequin hasta Rev.G e Inves Spectrum+ debe funcionar y también en los 128k, Toastrack y el +2 gris pero en los modelos de Amstrad (+2A, +2B, +3) con gate array, no porque no permiten la manipulación del teclado desde el bus de expansión. En los clones con ULA basada en la del Spectrum 48k también debería funcionar. En N-Go que yo sepa no funciona.
© cacharreo
Responder

Volver a “Proyectos de hardware abiertos”