Autor Tema: Problema con el modulo CCP del PIC18F4550  (Leído 2303 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado sodor

  • PIC10
  • *
  • Mensajes: 1
Problema con el modulo CCP del PIC18F4550
« en: 16 de Mayo de 2008, 22:28:22 »
Hola a todos en el foro, veran tengo el siguiente problema:

Yo tengo un proyecto personal, el cual es hacer un adaptador USB de un control de Dreamcast a la PC (que al final me gustaria hacerlo publico como los adaptadores de Snes, nes y PSX a la computadora), despues de dias de estar leyendo la patente del bus de comunicacion que usa (llamado Maple Bus) entendi que las comunicaciones del control son a base de frames que incluyen comandos (ya saben un comando para escribir en la memoria, otro para leer la memoria, ver el estado de los botones del control, etc) y finalmente pude escribir algo de codigo y crear un comando para conocer la informacion del dispositivo (llamado Device request), bien programando esto en el PIC y probandolo logre recibir la respuesta del control, ahora bien pense "si  ya puedo escribir al maple bus y el control entiende y responde, lo que sigue es leer la informacion que me envia de regreso antes de hacer mas codigo" por ello me vali del uso del modulo CCP, el tipo de comunicacion que utilizo la SEGA para su producto es poco convencional de hecho nunca habia sabido de algo parecido y es que se basan en usar dos lineas de datos, ambas lineas son de datos y reloj al mismo tiempo y para enviar informacion en ambos sentidos, de esta forma en total son 4 cables, GND VCC y SDCKA y SDCKB. Extraño verdad, bueno para que entiendan mi problema tendre que explicar un poco el funcionamiento de la comunicacion (espero que no se aburran leyendo y agan mi post a un lado  :( ).

Primero que nada colocare una imagen del maple bus tomada de la patente que use en uno de los foros de microchip:


como pueden ver el flanco de bajada de una de las dos señales indica datos en la otra señal, ambos cables SDCKA y B se usan para enviar y recibir de esta forma. Si se fijan en la figura 1, alli muestro el start pattern (patron de inicio), si se fijan todo comienza con SDCKA poniendose a 0 y durante el tiempo que dura en 0 SDCKA produce 4 flancos de bajada, despues de que se producen los 4 flancos de bajada termina quedando en estado de 1 SDCKB y poco despues SDCKA se pone a 1 tambien y despues de eso lo que sigue son los datos.

Pues bien mi principal idea de como detectar que esta comenzando un frame es detectando el primero flanco de caida de SDCKA, para ello escribi codigo donde envio el device status primero (si no se le envia este comando primero despues de aplicarle voltaje el control de dreamcast nunca respondera otro commando) y despues de enviarlo configurar el modulo CCP1 para que detecte el primer flanco de caida en SDCKA genere su interrupcion y valiendome de BTFSS y BRA esperar dicha interrupcion sin usar una ISR, cuando la interrupcion se genere yo programe que RA3 se ponga a 1, despues de enviado el comando el control tarda 52 uS en responder este tiempo es mucho considerando que tengo el PIC trabajando a 12 MIPS Tcy 83.33 nS, pero el PIC pasa de largo el primer flanco de bajada de la respuesta del control de dreamcas Y TODOS LOS DEMAS FLANCOS DE BAJADA SIGUIENTES QUE PRODUCE EL MISMO CONTROL DE DREAMCAST EN SDCKA AL ENVIAR LOS DATOS... en cambio si yo pongo un push button  en el CCP1 detecta perfectamente el flanco tambien conectando un generador de funciones a 5 mhz detecta el flanco (el maple bus trabaja a 1 mhz o menos en ambas lineas y si a caso varia a 2 en algunos casos). Ya tengo dos semanas asi y me tiene con la cabeza dolorida... no se que hacer la verdad, aqui incluyo un esquematico del proteus:



Espero me puedan alludar, tengo años pensando en hacer un adaptador para el dreamcast y estoy a la mitad del trabajo de lo que seria "investigar" por que ya lograndose leer lo demas es pan comido.

lo siento si las imagenes tienen el texto en ingles, es que he pedido ayuda en foros de microship y estoy compartiendo mi proyecto con un estadounidense que quiere hacer un control tipo arcadia universal para consolas:

shoryuken



 

anything