Buscando un sketch Arduino SD <--> Z80

jltursan
Mensajes: 5648
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 1004 veces
Agradecimiento recibido: 2050 veces
Contactar:

Buscando un sketch Arduino SD <--> Z80

Mensajepor jltursan » 22 May 2018 19:39

Ando buscando un sketch de ejemplo que ilustre la mecánica para conectar un escudo SD con un equipo que monte un Z80. En la práctica podría ser algún desarrollo que supieseis que existe para equipos como el Spectrum, MSX, etc., deberían ser muy similares entre sí.

Con un Arduino ya he aprendido a manejarme con el acceso a una SD vía puerto serie y realizar toda la comunicación por ese medio, es sencillo en líneas generales; pero es más que probable que utilizar una comunicación directa con el procesador de la máquina, directamente o a través de algún conector de expansión, sea lo más eficiente.
El problema que me encuentro es que no es fácil para mí, sin ejemplos, tratar de entender como podría "dialogar" con la CPU a través de un puerto y mantener pendiente al Arduino de toda comunicación que se genere por el bus.

En esta última liga, lo más parecido que he encontrado ha sido esto: http://baltazarstudios.com/arduino-zilog-z80/

Avatar de Usuario
dandare
Mensajes: 587
Registrado: 15 Jul 2016 00:38
Ubicación: I Register
Agradecido : 39 veces
Agradecimiento recibido: 332 veces
Contactar:

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor dandare » 22 May 2018 20:12

Hola JL,

No vas a poder hablar directamente entre un arduino y un Z80. Simplemente el arduino no es tan rápido como para responder a las señales de MREQ o IOREQ del Z80 (a no ser que el z80 vaya a pedales).
Me ha despistado un poco eso que dices de acceder a la SD por puerto serie. La forma normal es hacerlo por SPI.

Lo que creo que necesitas aquí es algún tipo de interfaz intermedio entre el arduino y el Z80, tipo registro de entrada salida, que sea rápido para poder hablar con el Z80 y lento, a la vez, para hablar con el arduino. Vamos que necesitas una CPLD o similar si no quieres llenar todo de cucarachas.

Hay formas de comunicar un microcontrolador lento con un Z80, pero son bastante feas, aunque hay un truco si te puedes permitir usar el WAIT, generándolo mediante lógica discreta.

En cualquier caso, la gestión de escritura de vuelta al bus así es el infierno desde un uControlador.

Si nos vemos este fin de semana, lo comentamos si quieres.
_.. ._ _.

foroplus
Mensajes: 139
Registrado: 02 Nov 2015 17:30
Ubicación: Madrid
Agradecido : 24 veces
Agradecimiento recibido: 31 veces
Contactar:

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor foroplus » 22 May 2018 21:08

Ten en cuenta que es posible conectar las entradas salidas de audio a un PC o a un mismo teléfono móvil con los que grabar los programas con SAVE y luego volver a cargarlos con LOAD en el ordenador en cuestion (ZX-81, Spectrum, MSX o el que sea).

Se podría hacer un interfaz con arduino para gestionar estas entradas/salidas de EAR/MIC, pero con un móvil y un cable con doble jack de 3,5mm mono te valdría. Y luego almacenas los audios donde quieras en forma de fichero de sonido.

Si quieres seguir con el proyecto de arduino, puedes ahorrarte un huevo de tiempo con un modulo como éste http://www.dx.com/p/uart-control-serial ... wRq8cS-lGB que te coge el audio del cnector jack y te lo pasa a MP3. En arduino gestionas la grabación y reproducción del audio, y el salvado en la tarjeta SD que el propio módulo trae.

Menos de 5 pavos en aliexpress https://es.aliexpress.com/store/product ... autifyAB=0
y seguro que lo encuentas más barato.
Calculadoras programables BASIC años 80-90:
http://basic.hopto.org

Avatar de Usuario
Solderboy
Mensajes: 112
Registrado: 28 Feb 2018 19:45
Ubicación: En la tierra de los olivos
Agradecido : 23 veces
Agradecimiento recibido: 60 veces

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor Solderboy » 22 May 2018 22:34

Mi propuesta es usar un Pic18f con PSP (parallel slave port) como puente. Cuando lo usas, el Pic aparece ante el Z80 como un periférico normal, con sus patillas /CS, /WR y /RD, pero con la ventaja de que se puede programar para descargar de trabajo al Z80

Avatar de Usuario
dandare
Mensajes: 587
Registrado: 15 Jul 2016 00:38
Ubicación: I Register
Agradecido : 39 veces
Agradecimiento recibido: 332 veces
Contactar:

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor dandare » 22 May 2018 23:26

Hola Solderboy, el OP preguntaba específicamente por arduino y, aunque la opción del psp facilita las cosas, aun así algo hace falta de decodificacion externa de direcciones, bien en memoria o puertos, dependiendo de lo que JLtursan quiera y, posiblemente, cambio de nivel eléctrico.

Desde mi punto de vista, el mejor "compañero" de viaje para que un uControlador y un uProcesasor se entiendan es un tipo de cpld. Son pequeñas, baratas y fáciles de configurar. Hacen toda la decodificación de direcciones, cualquier lógica externa y, algunas de ellas, tienen la ventaja añadida de hacer de conversor de señal de 5v (la que usan los uprocesadores viejunos) a 3,3v, (la que usan la SD y bastantes uControladores)

De todas formas, me apunto lo del psp, que aunque conozco el periférico, no lo he usado nunca. -thumbup
_.. ._ _.

Avatar de Usuario
Solderboy
Mensajes: 112
Registrado: 28 Feb 2018 19:45
Ubicación: En la tierra de los olivos
Agradecido : 23 veces
Agradecimiento recibido: 60 veces

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor Solderboy » 22 May 2018 23:49

dandare escribió:Hola Solderboy, el OP preguntaba específicamente por arduino y, aunque la opción del psp facilita las cosas, aun así algo hace falta de decodificacion externa de direcciones, bien en memoria o puertos, dependiendo de lo que JLtursan quiera y, posiblemente, cambio de nivel eléctrico.

Desde mi punto de vista, el mejor "compañero" de viaje para que un uControlador y un uProcesasor se entiendan es un tipo de cpld. Son pequeñas, baratas y fáciles de configurar. Hacen toda la decodificación de direcciones, cualquier lógica externa y, algunas de ellas, tienen la ventaja añadida de hacer de conversor de señal de 5v (la que usan los uprocesadores viejunos) a 3,3v, (la que usan la SD y bastantes uControladores)

De todas formas, me apunto lo del psp, que aunque conozco el periférico, no lo he usado nunca. -thumbup


Hola:

Totalmente de acuerdo con lo de la CPLD, pues es 100% hardware. Mi tendencia natural a usar los micros es porque aún me sigo manteniendo el día con los mismos, haciendo proyectillos en casa, mientras que en Verlilog estoy verde (para que te hagas una idea, en segundo de carrera mi contacto fue con las gal 22v10).

Con respecto al Psp, espero mostrar algo en unos meses, si el trabajo y las obligaciones familiares me dejan... (Como spoiler diré que por ahora hay un 74hct138, un Pic18f4520 y un puerto de cartucho de un Atari ST)

jltursan
Mensajes: 5648
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 1004 veces
Agradecimiento recibido: 2050 veces
Contactar:

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor jltursan » 23 May 2018 21:12

Muchas gracias a todos por las respuestas :-)

Por si no había quedado claro, soy un absoluto novato en todo esto y este súbito interés viene de que recientemente he comenzado a cacharrear con el Arduino y he encontrado que las cosas más básicas resultaban bastante fáciles si se partía de un buen ejemplo. Las pruebas que he venido haciendo integrando escudos han resultado muy educativas (@Dani: claro, la comunicación es por bus SPI, la conecto por USB pero en la práctica eso es abstraido bajo por las librerias serial que se emplean para intercambiar datos por un puerto serie virtual que te monta el driver en tu PC ;-)).

Aunque me olía lo de la escasa velocidad del 328, me había hecho ilusiones al encontrar el sketch que permitía monitorizar el funcionamiento del Z80. Supongo que hay que saber interpretarlo en su justa medida. He visto Arduinos sobrefrecuenciados hasta un máximo de 24Mhz y algún desarrollo extendido como el SDiskII de Apple a 20Mhz; pero no se si todo eso le daría el empujón necesario.

Supongo que con lo que me decís, me volcaré en la conversión de protocolos de teclado que seguro que están más en su liga :-D

Ahora, me apunto con letras de fuego lo de los PIC18F y el PSP, gracias Solderboy :-). Entiendo que sería mucho más rápido que negociar por un puerto serie aunque tampoco se tratara de una conexión directa. Además se que esos PIC se programan en C por lo que si existe un conjunto básico de librerías podrían ser una muy buena opción.

Avatar de Usuario
Solderboy
Mensajes: 112
Registrado: 28 Feb 2018 19:45
Ubicación: En la tierra de los olivos
Agradecido : 23 veces
Agradecimiento recibido: 60 veces

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor Solderboy » 23 May 2018 22:12

jltursan escribió:Ahora, me apunto con letras de fuego lo de los PIC18F y el PSP, gracias Solderboy :-). Entiendo que sería mucho más rápido que negociar por un puerto serie aunque tampoco se tratara de una conexión directa. Además se que esos PIC se programan en C por lo que si existe un conjunto básico de librerías podrían ser una muy buena opción.


El funcionamiento del PSP es que cuando se reciben las señales /CS y /WR (o /RD), el PIC coge el contenido del puerto, te lo mete en un buffer y genera una interrupción. De este modo tenemos una comunicación bastante rápida, sobre todo si coges un microcontrolador que tenga PLL interno para multiplicar x 4 la frecuencia de reloj, y le dejas el trabajo duro al microcontrolador para no saturar el Z80.

El otro motivo de usar un microcontrolador es el que tu has dicho, poder usar unas librerías ya hechas; no se lo que quieres hacer con la tarjeta SD, pero en nada que encuentres un compilador (que no tiene que ser C, ahí queda) con librerias para SPI y para sistema de archivos FAT, tienes medio camino andado.
Reconozco que, como no me dedico a esto profesionalmente, me he vuelto un programador perezoso, y prefiero usar un compilador que no sea tan bueno pero con una gran base de librerías antes que un compilador genial pero sin librerías. Por ejemplo, el compilador que yo uso tiene esto disponible en la librería de acceso a la tarjeta SD


Captura de pantalla 2018-05-23 a las 22.08.47.png
Captura de pantalla 2018-05-23 a las 22.08.47.png (56.11 KiB) Visto 2568 veces

Avatar de Usuario
dandare
Mensajes: 587
Registrado: 15 Jul 2016 00:38
Ubicación: I Register
Agradecido : 39 veces
Agradecimiento recibido: 332 veces
Contactar:

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor dandare » 23 May 2018 22:17

A mi me gusta más hacerme mis propias librerías. En particular tengo una de SD y otra de FAT32, aunque es cierto que se tarda un rato.

Uso normalmente los compiladores XC (tengo licencia PRO), pero para soporte de librerías y facilidad de uso, échale un ojo a MikroElectrónica (www.mikroe.com)
Tienen compiladores de C, Pascal y Basic para prácticamente cualquier trasto y con muchísimas librerías. No son los más rápidos del oeste, pero bastante fáciles de usar.
_.. ._ _.

Avatar de Usuario
dandare
Mensajes: 587
Registrado: 15 Jul 2016 00:38
Ubicación: I Register
Agradecido : 39 veces
Agradecimiento recibido: 332 veces
Contactar:

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor dandare » 24 May 2018 09:44

Solderboy escribió:Con respecto al Psp, espero mostrar algo en unos meses, si el trabajo y las obligaciones familiares me dejan... (Como spoiler diré que por ahora hay un 74hct138, un Pic18f4520 y un puerto de cartucho de un Atari ST)


-thumbup -thumbup Eso quiero verlo en marcha!!
_.. ._ _.

Avatar de Usuario
Solderboy
Mensajes: 112
Registrado: 28 Feb 2018 19:45
Ubicación: En la tierra de los olivos
Agradecido : 23 veces
Agradecimiento recibido: 60 veces

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor Solderboy » 24 May 2018 20:50

dandare escribió:
Solderboy escribió:Con respecto al Psp, espero mostrar algo en unos meses, si el trabajo y las obligaciones familiares me dejan... (Como spoiler diré que por ahora hay un 74hct138, un Pic18f4520 y un puerto de cartucho de un Atari ST)


-thumbup -thumbup Eso quiero verlo en marcha!!


Serás de los primeros en sufrir mis preguntas...

Avatar de Usuario
weirdocollector
Mensajes: 143
Registrado: 21 Sep 2012 22:32
Agradecido : 79 veces
Agradecimiento recibido: 12 veces

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor weirdocollector » 24 May 2018 23:40

Sorry for the English but my written Spanish is horrible.

I've done a similar think here:

https://youtu.be/2bOhYR2Io7Y

The Teensy uses the /WAIT signal to make the Z80 wait until the data is on the bus.

Avatar de Usuario
dandare
Mensajes: 587
Registrado: 15 Jul 2016 00:38
Ubicación: I Register
Agradecido : 39 veces
Agradecimiento recibido: 332 veces
Contactar:

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor dandare » 25 May 2018 10:26

weirdocollector escribió:The Teensy uses the /WAIT signal to make the Z80 wait until the data is on the bus.


Hi, I've experimented with this approach in the past. There are a few considerations:

    1) WAIT usage is limited in some computers like the ZX Spectrum, because it uses the RFRSH signal from the Z80 to keep the RAM contents. A long Wait will cause memory corruption.
    2) Teensy must ensure to go Hi-Z before any other computer part uses the bus when (RD from Z80). In (WR) there is no problem. This is tricky.
      a) Recognize RD request from Z80 and Issue a WAIT really fast (usually you will need external discrete hw for this, a uC is not fast enough)
      b) Do whatever you need in the teensy and put data on the bus
      c) Release WAIT and, this is the tricky part: keep the data long enough for the Z80 to read it but not so long that it will collide with the next read cycle from the z80.

Using a PSP equipped uController as solderboy suggested will save you the trouble ;).

Anyway, I can't seem to find the Z80 in your video. it looks to me like you are uploading a teensy code from the PC.
_.. ._ _.

Avatar de Usuario
weirdocollector
Mensajes: 143
Registrado: 21 Sep 2012 22:32
Agradecido : 79 veces
Agradecimiento recibido: 12 veces

Re: Buscando un sketch Arduino SD <--> Z80

Mensajepor weirdocollector » 25 May 2018 11:58

Hi !

Anyway, I can't seem to find the Z80 in your video. it looks to me like you are uploading a teensy code from the PC.


My video is really bad, but I can assure that the Z80 is there :)

Here it is the same set-up where the Z80 is more visible.

https://youtu.be/IKXadt095pw

It's the chip near my hand at the very start of the video (I've placed a sticker on it to better identify its pins).

The Putty terminal you see on the PC in my first video reads and writes one of the Teensy UART (which is mapped on a couple of Z80 I/O ports) through an FTDI cable, and the menu is generated by some Z80 assembly code.

In my circuit I'm using a 'trick' that I've seen used in other homebrew computers: a set of I/O address of the Z80 can trigger a latch that puts low the /WAIT singnal, and the same latch is reset by the Teensy when data is on the bus.

This seems to work fairly well, and in my latest video I've managed to make the Z80 see the SPI interface on the Teensy as a I/O por, and to pilot an MCP23S17 connected to some LEDs.

I do know about the PSP port on PICs and it seems to be an ideal solution but I've just started learning how to use these microcontrollers.


Volver a “Lenguajes de Programación y herramientas Dev”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado