Descomponer modulo USB PIC18F4550

Saludos a todos...

Acudo con uds. con una duda que me esta matando jaa. Recien pude comunicar el PIC18F4550 con mi computadora por medio de un puerto USB, PERO, cometi la torpeza de al desconectar el cable usb no retirar por windows el USB, tipo con las memorias USB que antes de sacarla tienes que avisarle a windows que la vas a retirar algo asi por ahi donde dice quitar hardware con seguridad, el caso es que ahora no me reconoce el PIC y yo le echo la culpa a eso.
Le ha pasado a alguien esto ? que me recomiendan hacer amigos ? la verdad la emocion de haber logrado la comunicacion no me duro ni 5 minutos jaaa

gracias por su tiempo
 
No es debido a eso el problema sino que windows no te está tomando el controlador programado en el microcontrolador ..lo que tendrías que hacer es lo siguiente:
- Primero programar el microcontrolador nuevamente pero cambiando el VID_PID del dispositivo para que windows te lo tome como un dispositivo diferente.
- segundo si tu dispositivo es HID andá a sistema - buscar cambios de hardware y andate a la parte de controladores HID , ahi buscá tu dispositivo por el vid_pid o sino por el nombre descriptivo del mismo (programado en los descriptores USB de tu programa).
- tercero fijate si tenes comunicacion con tu programa de aplicacion ...sino reinstala el controlador HID.

eso es todo ....a mi tambien me paso algo similar cuano empeze con el USB y lo solucione de esa manera...reistalando el controlador.
 
Muchisimas gracias por tu respuesta y tu tiempo Moyano Jonathan...

La verdad no se que sea el VID_PID utilizo el ccs pcw para programar el pic y en sus librerias se encarga de todo, solo modifique unas lineas de las mismas para que me reconociera el microcontrolador de microchip, esa info de hecho la tome del foro.
Bueno en fin, vuelvo a instalar el controlador, pero y si windows no me lo pide como le hago para volverlo a instalar ? disculpa yo se que es una pregunta basica pero pues no se como hacerlo...

de nuevo gracias por tu respuesta
 
Ahi te va como se hace:
USB4.jpg
 
Saludos Moyano Jonhatan...
Siguiendo tu consejo cai en cuenta de que nunca baje un driver para el PIC, te cuento, antes de hacer fisicamente la prueba de la comunicacion del PIC yo trabaje con PROTEUS e instale un driver que proteus me proporciono, sera este driver el mismo que ocupo ? Pero en administrador de dispositivos no encontre nada relacionado con el mismo, se me hace raro por que ya funcionaba, habia logrado comunicarme y enviar un mensaje desde el PIC a mi programa en visual basic. Pero definitivamente no, no tengo nada en administrador de dispositivos relacionado con ese driver ni me detecta un nuevo hardware windows cuando conecto la entrada usb...
 
haaaaaaaa ya se mirá los drivers son los mismo que están en mi carpeta.....osea de donde bajaste el ejemplo...ahora lo que no comprendo es el por que no te lo detecta...tendrías que probar con otro PIC o con otra PC...a ver si sucede lo mismo.
 
Pero esos drivers vienen por default en el programa no ? es decir al invocar esos drivers en el programa es todo lo que se necesita no ? o modificaste algo en esa carpeta ? Oye no se por que no entiendo como de verdad ahorita soy un signo de interrogacion volvi a quemar el PIC (cosa que ya habia hecho) con el mismo programa y ya pude hacer que me detectara, pero sigo con pensando, es normal que me lo detecte si como te digo instale el driver desde una carpeta de proteus ? ademas me detecta el PIC como port COM10, cuando en realidad tengo solamente 4 puertos USB en mi computadora
 
Bueno veo que no estás entendiendo algunas cosas. Paso a explicar:
1º - CDC quiere decir ( Comunication Device class ) , que es básicamente un dispositivo USB que emula el funcionamiento de otro dispositivo de comunicación como es en este caso el puerto serie.
2º - El PIC te genera un COM10 por que en el proceso de enumeración el host le asignó ese nombre , como asi también le podría haber asignado COM25, COM4, COM7, etcc........
3º - El programa que vos le has cargado al PIC actúa como un emulador de puerto serie y no tiene nada que ver con el numero de USB que tengas en tu compu.
4º - El driver que tenés que instalar es el que tengo en mi aplicación , ese driver es que se encarga de enlazar la parte física ( PIC ) con el host (PC). Ese driver está escrito para que pueda interactuar con el programa del PIC si vos le intalas otro no va a funcionar.

Espero haberte aclarado mas o menos el panorama , caso contrario pasate nuevamente por mi post sobre USB que está todo explicado.
 
Saludos
Gracias por tu tiempo Moyano Jonathan, hoy consegui comunicarme al fin jaa... resulto que tenia mal instalado el driver segui linea por linea el articulo que publicaste anteriormente y me funciono a la perfeccion...
 
Un saludo...
Haber si alguien puede ayudarme... lo que pasa es que de vez en cuando la computadora me asigna un puerto diferente al anterior, por que pasa esto ? o como se soluciona... Ojala alguien sepa...
Este es mi codigo
#INCLUDE <18F4550.H>
#FUSES HSPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#USE DELAY(CLOCK = 48000000)
#USE RS232(BAUD = 9600, XMIT = PIN_C6, RCV = PIN_C7)
#include "usb_cdc.h"
#include "usb_desc_cdc.h"

INT ROJO = 0;
INT AZUL = 0;

#INT_RDA
VOID ISR_RDA()
{
INT DATO;
DATO = GETC();
SWITCH (DATO)
{
CASE 0XF0:
{
PRINTF(USB_CDC_PUTC,"A");
PRINTF(USB_CDC_PUTC,"A");
AZUL = AZUL + 1;
OUTPUT_TOGGLE(PIN_D0);
BREAK;
}
CASE 0X0F:
{
PRINTF(USB_CDC_PUTC,"R");
PRINTF(USB_CDC_PUTC,"R");
ROJO = ROJO + 1;
OUTPUT_TOGGLE(PIN_D1);
BREAK;
}
DEFAULT:
BREAK;
}
}

VOID MAIN()
{
ENABLE_INTERRUPTS(INT_RDA);
ENABLE_INTERRUPTS(GLOBAL);

usb_cdc_init();
usb_init();
DO
{
usb_task();
if (usb_enumerated())
{
}
}
WHILE(TRUE);
}
 
Atrás
Arriba