Comunicaciones serie

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
USB tio, estoy teniendo una idea, aver ke te parece, ahora tienes controlado este puerto del pad y podemos adaptar perifericos pero aki llega la idea, se trata de inplementar en el proyecto algo de robotica, oshe, montar nuestro propio periferico, la idea es por ejemplo montar un pekenio guante ke permita el control del movimiento ya sea kon rotores de movimiento komo en los mouses o adaptando el sistema de las pistolas infrarojas, no se si te parecera buena idea pero ami me parece bastante atractivo el campo de los nuevos perifericos.

Si tienes alguna idea o alguien ke lo lea le interesa decir algo, ke no se corte igual nos sirve de ayuda.
Hombre, como hacer se pueden hacer muchas cosas. De momento solo he preparado el circuito pero tengo que diseñar, primero un codigo 'primitivo' para las comunicaciones y capturar los datos que me daran control total para emular un Dual Shock, sin que me lo rechazen los juegos de PS2. Estoy pensando en adquirir un 16f876, es mas caro pero tiene 5 convertidores ADC, lo que permitiria hacer ese tipo de perifericos que dices tu (ademas tiene mas puertos) aunque ya veremos. De momento tengo mas proyectos que tiempo y tendremos que ir paso a paso
2 respuestas