Mostrar feed RSS

JoJo_ReloadeD

[Mundo Viejuno] Introduccion al diseño de hardware para CPC

Calificar esta entrada
Introduccion al diseño de hardware para CPC

Por Oyzzo

Buenas, pues como dice el titulo voy a explicar un poco lo basico para poder hacer hardware para el amstrad CPC, en concreto yo uso un CPC464 asi que lo que hago tirara de sobras en los CPC superiores tambien.

Lo voy a orientar a gente autodidacta que supongo que sera la gran mayoria, asi que voy a intentar hacer las cosas sin complicarlo demasiado, esto quiere decir por ejemplo que usare el BASIC de amstrad para controlar el hardware en lugar de hacerlo en ENSAMBLADOR puesto que asi lo comprendera la mayoria de la gente, y si alguien sabe ensamblador no tendra ningun problema, viendo el codigo en basic, en hacerlo en ensamblador. Por la misma razon voy a usar los puertos de joystick y de impresora en lugar de usar el puerto de extension ya que es mas sencillo y permite que todo el mundo pueda hacer con un bajo presupuesto (menos de un euro en algunos casos xD) y de manera sencilla cacharros para el amstrad. Igual que sucede con el ensamblador, si alguien tiene mas conocimientos de electronica y sistemas digitales no tendra ningun problema en hacer su propio hardware usando el puerto de extension del CPC.


Mi objetivo es llegar a hacer cosas interesantes(y complejas) de hardware para el CPC, aunque de momento vamos a empezar por lo basico y veremos hasta donde llegamos

COMUNICARNOS CON EL EXTERIOR

Lo primero que necesitamos es ver como podemos conectar nuestros cacharros al CPC y como comunicarnos con ellos. Como ya os imaginais necesitamos dos direcciones de datos, la primera sera leer datos del exterior:


Esto lo haremos mediante el puerto de joystick del amstrad y mas adelante veremos como hacerlo.

La segunda direccion de datos es enviar datos desde el ordenador hacia nuestros proyectos para poder controlarlos:


Esta vez enviaremos los datos mediante el puerto de impresora del amstrad por simplicidad.

EL PUERTO DE JOYSTICK

El puerto de joystick del amstrad CPC es muy sencillo, se trata de un conector hembra de tipo D9 que viene a ser el mismo tipo de conector de puerto serie que tienen la mayoria de PCs, asi que nos sera muy sencillo encontrarlos para nuestros proyectos. En el amstrad CPC trabajaremos con 5V para indicar un 1 logico y con 0V para indicar un 0 logico, aunque como esta vida no es perfecta y el CPC lo sabe, interpretara como un 0 logico los valores entre 0,8v y 2,4v, los valores mayores que eso seran un 1 logico o freiran el CPC asi k tampoco es recomendable pasar de los voltajes indicados

El siguiente esquema muestra para que se usa cada pin del conector:


Muy bien, imaginaros k tenemos algun cacharro conectado ahi y nos envia algun dato por alguna linea de datos, para leerlo utilizaremos la siguiente instruccion en BASIC de amstrad:

Código:
X = JOY(0)
Una vez ejecutada esa instruccion en la variable X tendremos un valor que nos indica que linea de datos dentro del puerto de joystick estan a 1 y que lineas estan a 0. En el amstrad CPC si en una linea no hay nada leera exactamente lo mismo que si hay un 1, asi que los cambios vendran al meter un 0 en alguna de las lineas de datos. En la siguiente tabla pongo los valores que leera el amstrad dependiendo de las lineas que esten a 0 (y las que esten a 1 o sueltas)


Para los que sepan binario veran que los valores corresponden al valor binario en logica negativa. Si hay un 0 en mas de una linea a la vez el valor sera la suma de los valores de las lineas a 0. Por ejemplo si D0 D3 y D6 estan a 0 y los demas a 1, sumamos el valor 1 de D0 mas el 8 de D3 mas el 64 de D6 y vemos que al hacer X = JOY(0) tendriamos 73 en X.

EL PUERTO DE IMPRESORA

El puerto de impresora del amstrad tiene un conector un poco mas raro, asi que tendremos que buscarnos la vida a la hora de hacer la conexion de nuestros proyectos, pero es igualmente sencillo. El diagrama de continuacion muestra el uso de cada linea:


Vemos que hay una linea llamada Busy (ocupado) esto sirve para que nuestro cacharro indique al cpc cuando esta haciendo algo que le impide leer lo que el amstrad le quiera decir, asi que cuando nuestro proyecto ponga un uno en esa linea el amstrad esperara para enviarle datos. Para enviar datos por el puerto de impresora lo tenemos mas sencillo que para leerlos por el de joystick (aunque parezca imposible xD) ya que funciona con logica positiva. Para enviar datos utilizaremos la instruccion de BASIC:

Código:
OUT 61184,X
61184 es la direccion del puerto, en este caso el de impresora. X el valor que corresponde a las lineas que queremos poner a 1.

Tenemos 8 lineas de un bit cada una, esto es de D0 a D7, pues cojemos y ponemos en binario el numero correspondiente a las lineas que queramos poner a 1. Por ejemplo, si queremos enviar un 1(5v) por las lineas D3 y D0 hacemos:


Asi que enviamos el 9 por el puerto de impresora con OUT 61184,9 y listos. Sencillo, no? siempre hay alguien que no lo ve claro del todo, pero no os preocupeis que es muy sencillo y mas adelante hare un proyecto muuy simple que en si mismo no tendra mucha utilidad pero os quedara todo bien clarito.

-- Articulo original en http://www.mundoviejuno.com

Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a ¡Menéame! Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a Technorati Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a Digg Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a del.icio.us Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a Google Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a Finclu Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a Copada Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a StumbleUpon Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a Reddit Enviar "[Mundo Viejuno] Introduccion al diseño de hardware para CPC" a FaceBook

Categorías
Sin categoría

Comentarios

  1. Avatar de Rivroner
    Bueno, voy tomando apuntes que soy un forofo de los CPC

    Gracias Jojo
  2. Avatar de oyzzo
    cpc rules!
  3. Avatar de rlyeh
    el truquillo del joystick pa enviarle datos mola. pal msx sacaron hace no demasiao una cosa pa leer CF, SD o SMCs (no recuerdo cual) a traves del joystick

    Que transferencia tiene el puerto? supongo que bastante alta nop? :-)

    Q aplicaciones buscas conseguir con esto? transferir juegos? debugger? pokeador? tracker de musica? dumpear los disquetes al pc?
  4. Avatar de oyzzo
    Buenas, pues lo cierto es que aun no se que transferencia tiene el puerto,hare pruebas aver k da

    En principio no busco nada en concreto, solo que cada uno pueda montarse lo que se le ocurra, pero algunas cosas de las que has puesto ahi serian interesantes lo cierto es que solo tengo seguro el primer proyecto que voy a poner, sera un conjunto de leds y botones para ir practicando, lo siguiente podria ser perfectamente algo que conecte al cpc con un PC para cualquier cosa. Aunque asi entre nosotros mi idea final es hacer un coprocesador de red para el CPC con sus propios buffers, su pila TCP/IP y Ethernet. Lo tengo ya medio diseñado, solo me falta algo de pasta xa algunos componentes y ponerme a probar/debuggar.