Sin problema, envíame un MP y concretamos.
Tirada ZX Spectrum PS/2 Keyboard interface 0.00 [Tirada cerrada]
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.
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.
- luisbarna
- 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]
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
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
- cacharreo
- 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]
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.
Se ha utilizado la siguiente asignación de pines:
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...
Se ha utilizado la siguiente asignación de pines:
Color | Pin UNO | Descripción |
---|---|---|
Blanco | 10 | RST |
Verde | 11 | MOSI |
Azul | 12 | MISO |
Violeta | 13 | SCK |
Negro | GND | GND |
Rojo | 5V | VCC |
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.
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
- iturbez
- 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]
¡Madre mía!
El trabajo que os estoy dando con el tema. Es de agradecer...
Envío MP también a @luisbarna para el intercambio de chips.
Gracias por vuestro trabajo.
Un saludo.
El trabajo que os estoy dando con el tema. Es de agradecer...
Por eso las últimas pruebas que hice fueron sobre la breadboard, no vaya a ser que el cristal no esté oscilando.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.
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...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...
Envío MP también a @luisbarna para el intercambio de chips.
Gracias por vuestro trabajo.
Un saludo.
- cacharreo
- 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]
Ni te preocupes porque viene muy bien para ampliar la información sobre el proyecto. Así se prueban todas las alternativas.
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.
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
- cacharreo
- 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]
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.
© cacharreo
- iturbez
- 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]
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.
@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.
- cacharreo
- 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]
Muy bien, nos cuentas por favor cómo ha ido.
© cacharreo
- luisbarna
- 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]
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
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
- iturbez
- 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]
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.
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.
- cacharreo
- 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]
Esto es relevante porque es el mismo método que con el ATmega8A y en cierta forma nos confirma que éste debe estar frito.
¿Se apagan las 3? Cuando funciona bien deberían encenderse las 3 y después apagarse solo Caps Lock.
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: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.
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