Ya llega el fin de semana y tengo ganas de retomar la adaptacion del PAD. Para ello necesito capturar a traves del PIC los datos que se envian la PS2 y el PAD y luego pasarlos al PC (tendre que reestructurar el circuito JEJE).
El tema es que para hacerlo, en principio voy a usar una transmision serie hacia el ordenador un tanto especial:
-comunicacion por el puerto paralelo
- 5 conexiones (SEL,CLK DATA IN, DATA OUT,GND)
- Tipo de transmision: asincrona de velocidad variable (controlada mediante el PC por CLK.
La cosa esta en que desde el punto del PIC, este esta un tiempo trabajando en la captura de datos y en un momento dado envia una señal (SEL) para indicar al PC que esta listo para recibir o enviar un paquete de datos (esto se mantiene durante un tiempo predeterminado (corto) y si no recibe respuesta sigue con sus tareas. En caso de recibir respuesta pasa a recibir un comando que le indica lo que tiene que hacer. Toda la transmision se realiza por el cambio en la señal CLK de 0 a 1 y otra vez a 0, pero aqui esta lo bueno: el PC tiene un tiempo variable entre unos margenes para realizar la trasmision, si no esta se cancela. De esta forma no se demora demasiado el PIC en caso de que el PC no responda y puede seguir con su trabajo.
Desde el punto de vista del PC, este puede quedarse esperando durante un tiempo a la activacion de SEL para recibir/enviar datos y seguir haciendo sus tareas. Toda la transmision se realiza con checksums que garantizen la validez del paquete de datos (eso es otra, la transmision se realiza mediante paquetes de una longitud variable segun peticion en ambos sentidos y a una velocidad que podria alcanzar los 200 Kbits/s . Tambien posiblemente se pueda hacer una prueba de test para ver cual es la velocidad optima para la trasmision de datos.
Este tipo de transmision se hace asi para poder permitir la captura de datos con una aplicacion sencilla en C sin que haya mucho problema con el gestor de tareas de Windows o por una peticion de interrupcion y para que haya velocidad y seguridad en los datos. Si os interesa el tema, lo desarrollo en profundidad y cuando lo termine publico el codigo en C y el ASM necesario para poder trabajar en este tipo de comunicaciones. Espero la opinion de los que trabajais con PIC's
NOTA: Si utilizamos un PIC para comunicarse con otro PIC, teniendo en cuenta la precision que tienen sus relojes, podria hacerse una comunicacion con menos lineas, pero para hacerlo con el PC en pasos regulares, es mucho mas dificil, sobre todo si tenemos que leer y escribir datos simultaneamente, sin ningun tipo de ayuda hardware y sin una aplicacion diseñada para trabajar en tiempo real y con las interruptciones desconectadas