Autor Tema: USB Device - CDC - Microchip  (Leído 9645 veces)

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

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
USB Device - CDC - Microchip
« en: 03 de Abril de 2012, 18:29:11 »
Hola amigos del foro, me encuentro intentando comprender como funciona el USB Device - CDC - Microchip, tengo el PIC32 USB Starter Kit II, yo lo conecto y el computador me lo reconoce, me instala el driver y me asigna un puerto, hasta allí estamos bien, pero, no se donde llegan los datos en el programa ni como los envió por el mismo puerto usb, quisiera saber si alguien ya ha trabajado con ese programa y me diga donde están esos puntos que quiero, gracias.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: USB Device - CDC - Microchip
« Respuesta #1 en: 03 de Abril de 2012, 18:57:22 »
Acabo de encontrar como puedo enviar los datos por el CDC USB, es con el metodo:

Código: [Seleccionar]
if(USBUSARTIsTxTrfReady())
        {
            char data[] = "Hola Mundo";
            putsUSBUSART(data);
        }

Ahora a seguir investigando donde llegan los datos.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: USB Device - CDC - Microchip
« Respuesta #2 en: 03 de Abril de 2012, 18:59:47 »
buscate una linea donde ponga algo como if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1))

o bien donde se utilicen los buffers veras que es sencillo, se trata de una funcion que se repite constantemente y cuando deja de estar ocupado el flag (USBHandleBusy) puedes procesar los datos leidos

        EPR=USBGenRead(USBGEN_EP_NUM,&USB_Read[0],64); (esto es para el WINUSB, para CDC puede que tenga otra funcion)

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: USB Device - CDC - Microchip
« Respuesta #3 en: 03 de Abril de 2012, 19:01:25 »
Gracias MerLiNz voy a buscar, cuando lo tenga les comento.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: USB Device - CDC - Microchip
« Respuesta #4 en: 03 de Abril de 2012, 19:11:44 »
Quizas no sea igual para el CDC, pero te puedes buscar el pdf que tiene microchip para el USB CDC alli te explica como funciona, configuraciones, como se envia y recibe, que funciones tienes....

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: USB Device - CDC - Microchip
« Respuesta #5 en: 03 de Abril de 2012, 21:41:12 »
Con getsUSBUSART() y putUSBUSART()
No contesto mensajes privados, las consultas en el foro

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: USB Device - CDC - Microchip
« Respuesta #6 en: 04 de Abril de 2012, 09:49:29 »
ya lo encontré, gracias, mas tarde subo el código que estoy haciendo de prueba del puerto.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: USB Device - CDC - Microchip
« Respuesta #7 en: 10 de Abril de 2012, 12:00:53 »
Lo prometido es deuda, si funciona, cuando pulso el SW2 de mi board, el espera el dato y luego cuando lo envía, pero ahora lo que deseo es que no necesite de llamar a la función, que funcione por interrupción como el UART, supuestamente el funciona por interrupción pero siempre esta activa  :shock:... así que la verdad ahora mismo no se que hacer, ya busque algunos manuales pero no me dan información o no la se buscar, ojala me puedan ayudar.

Código: [Seleccionar]
        BYTE buffer[64];
        BYTE numBytes;

        if (SW2==0){
                while(SW2==0);

                numBytes = getsUSBUSART((char *)buffer,64);

                mUSBUSARTTxRam((BYTE*)buffer, numBytes);
        }

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: USB Device - CDC - Microchip
« Respuesta #8 en: 25 de Octubre de 2012, 11:26:19 »
Hola, he regresado con un duda, se puede utilizar el usb con cristal interno???

Desconectado aleix111

  • PIC10
  • *
  • Mensajes: 14
Re: USB Device - CDC - Microchip
« Respuesta #9 en: 25 de Octubre de 2012, 12:37:05 »
Hola, he regresado con un duda, se puede utilizar el usb con cristal interno???

Mirando el diagrama del clock entiendo que no, ya que no se puede conseguir los 48MHz necesarios para el USB. Además si el cristal interno no oscila a tiempo no se podría realizar la comunicación.

Una pregunta: que código tenias al firmware cuando instalaste el driver? Es que a mi, el PC me detecta que hay un dispositivo nuevo, pero no se me instala el driver ni lo reconoce, quizás es problema del código.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: USB Device - CDC - Microchip
« Respuesta #10 en: 25 de Octubre de 2012, 13:25:16 »
si se puede, utilizando el PLL, yo lo tengo en dspic y no me da problemas.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: USB Device - CDC - Microchip
« Respuesta #11 en: 25 de Octubre de 2012, 15:06:27 »
aleix111 la verdad no te entendi la pregunta, si me la puedes explicar de otra forma, MerLiNz yo estoy utilizando un PIC32 con cristal interno pero no funciona y le coloque el cristal y si funciono  :shock: :shock: :shock:

Desconectado aleix111

  • PIC10
  • *
  • Mensajes: 14
Re: USB Device - CDC - Microchip
« Respuesta #12 en: 25 de Octubre de 2012, 15:27:50 »
aleix111 la verdad no te entendi la pregunta, si me la puedes explicar de otra forma, MerLiNz yo estoy utilizando un PIC32 con cristal interno pero no funciona y le coloque el cristal y si funciono  :shock: :shock: :shock:

Al conectar por primera vez el USB del PIC al PC tienes que instalar el driver para que windows te reconozca el PIC32, no?
Si en el firmware del PIC no hay ningún código que hace referencia a la comunicación USB, al conectar tu PIC al PC, el PC no verá ningún dispositivo.
Entonces, mi pregunta es: Que firmware tiene que tener el PIC para que al conectarlo al PC se pueda instalar correctamente el driver de windows?

Yo he hecho este codigo:
Código: [Seleccionar]
void main (void) {

//Para obtener 48MHz con un cristal de 4MHz:
#pragma config UPLLIDIV = DIV_1         
#pragma config UPLLEN   = ON         
OSCCONbits.UFRCEN=0;

        //funciones extraídas de la libraría MCHPFSUSB:
USBDeviceInit();
USBDeviceAttach();

while(1) {}
}
Al conectar el PIC al PC via USB, me dice que "No reconoce dispositivo USB". En "propiedades del dispositivo desconocido"  voy a "cambiar la configuración" -> Controlador -> Actualizar controlador -> Buscar software de controlador en el equipo -> le digo la ubicación de "mchpcdc.inf" (con la VID y PID adecuadas).
Entonces dice que "ya está instalado el mejor software de control para el dispositivo" pero sigue saliendo "dispositivo desconocido".

Creo que no reconoce el dispositivo porque me estoy dejando de poner algo en el firmware. Puede ser?

Quizás estoy diciendo algún disparate, si es así decidmelo.

Gracias.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: USB Device - CDC - Microchip
« Respuesta #13 en: 25 de Octubre de 2012, 16:45:48 »
aleix111 la verdad no te entendi la pregunta, si me la puedes explicar de otra forma, MerLiNz yo estoy utilizando un PIC32 con cristal interno pero no funciona y le coloque el cristal y si funciono  :shock: :shock: :shock:

Vale, he leido el datasheet y segun dice el FRC solo lo puedes usar para detectar actividad no para transferencia de datos, por lo visto el FRC del pic32 tiene mayor % de error que el de un dspic asi que no dejan usarlo como fuente directa del USB.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: USB Device - CDC - Microchip
« Respuesta #14 en: 25 de Octubre de 2012, 16:46:56 »
Prueba con el proyecto "USB Device - CDC - Basic Demo", no le hagas nada, solo compilalo y lo guardas en tu pic, que pic usas???, y si todo esta bien cuando conectes tu equipo al pc te va a pedir el driver y lo instalas y listo, ya te funciona, y podemos seguir desarrollando... yo lo acabo de hacer y me funciono, sin hacerle nada, absolutamente nada...


En cuanto al programa en el while(1), deberia esta siempre USBDeviceTasks(); y ProcessIO();... prueba con eso a ver que tal.

MerLiNz, si, la verdad parece que si, por que funciona solo con el oscilador externo, gracias.