TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: krlos158 en 21 de Mayo de 2009, 03:26:14

Título: Uso de USB CDC con el PIC18F4450
Publicado por: krlos158 en 21 de Mayo de 2009, 03:26:14
Hola a todos necesito ayuda para usar el modulo USB de mi PIC 18F4450, no me funciona en la simulacion y pues mucho menos me funcionaria practico. Estube usando el PIC18F4550 con el CDC USB y con ese si funciono muy bien, pero aqui en mi ciudad no me pude conseguir el 4550 y compre el 4450 pensando que funcionaria de todas formas, pero no fue asi, le grave el mismo programa que le grabava al 4550, cambiando de device como debe de ser, pero fuera de eso la configuracion es completamente la misma.
El programa lo unico que hace es leer el puerto AN0 y enviar esta lectura por USB a la PC, lo monitoreo con el HyperTerminal gracias a que el tipo de transmision CDC la PC reconoce la comunicasion USB como un COMx serial.
Espero me puedan ayudar con mi problema, les dejo el codigo y el diagrama en proteus.

Código: [Seleccionar]
#include <18F4450.h>
#device adc=10

#FUSES NOWDT,HSPLL,NOPROTECT,NODEBUG,NOLVP,NOMCLR,PLL5,USBDIV,CPUDIV1,VREGEN
#use delay(clock=48000000)    //Para Xtal de 20Mhz

#define usb_con_sense_pin pin_b2
#include <usb_cdc.h>

long q,ql=0;
float p;

void main()
{
   
   setup_adc_ports(AN0|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);
   
   usb_cdc_init();
   usb_init();
     
   while(1)
   {
      usb_task();
      if(usb_enumerated())
      {
         q=read_adc();
         
            p=(5.0*q)/1024.0;
            printf(usb_cdc_putc,"\rVoltaje=%01.2fV",p);
         
         delay_ms(1000);
      }
   }
}


Gracias de antemano
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: migsantiago en 21 de Mayo de 2009, 13:52:17
Hola

¿Qué es lo que no hace tu pic?
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: krlos158 en 21 de Mayo de 2009, 21:55:39
Hola

¿Qué es lo que no hace tu pic?
Pues cuando hice la simulacion con el 4550, al iniciarla me aparecia el puerto COM13 que era el corespondiente al PIC, pero ahora que lo hago con el 4450 no me aparece el puerto, es decir, no me detecta el dispositivo USB. Y ademas creo que el prteus me dice que no se esta simulando el programa en tiempo real por sobrecarga. Gracias
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: migsantiago en 21 de Mayo de 2009, 23:07:01
A primera vista no veo errores. Intenta agregando esta línea después de usb_init

Código: [Seleccionar]
while (!usb_cdc_connected());
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: nicolas8702 en 11 de Junio de 2009, 22:45:21
hola soy nuevo en el foro pero yo estoy trabajando con el pic 18f2550  utilizando el modulo usb a mi ya me funciona lo he probado con labview y ha funcionado rebien si te interesa aqui esta mi codigo en ccs lo unico  que debes cambiarle es la libreria del pic por #include <18F4550.h> y  listo


#include <18F2550.h>
#device ADC=10
#fuses XTPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN
#use delay(clock=4000000)
#include ".\librerias\usb_cdc.h"
#rom int 0xf00000={1,2,3,4}





void main()
{
int8 x;//DECLARACION DE VARIABLES
float v;
set_tris_b(0x00);//PUERTO B COMO SALIDA
set_tris_a(0x3f);//PUERTO A COMO SALIDA EXCEPTO  RA6
setup_port_a( ALL_ANALOG );//DECLARA TODO EL PUERTO A COMO ANALOGO
setup_adc( ADC_CLOCK_DIV_2 );//OSCILADOR DEL CONVERSOR A LA MITA DEL CRISTAL
set_adc_channel( 0 );// SELECCION DEL CANAL 1
output_b(0x00);// INICIANDO EL PUERTO B EN CERO

usb_cdc_init();   // Configuramos al puerto virtual.
usb_init();       // Inicializamos el stack USB.
    while(!usb_cdc_connected()) {} // espera a detectar una transmisión de la PC (Set_Line_Coding).
       do{usb_task();
          if (usb_enumerated())           // Espera a que el dispositivo sea enumerado por el host.
            {
            v=Read_ADC();//lee el conversor ad
            printf(usb_cdc_putc, "\%f",v);//envia el dato al usb
            delay_ms(100)
               if(usb_cdc_kbhit())           // En espera de nuevos caracteres en el buffer de recepción.
               {
                x=usb_cdc_getc(); // asigna a x el dato recivido
                output_b(x);// el dato recibido en el puerto b
               
                 
               }
            }
         }
         while (TRUE); // bucle infinito.
}
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: krlos158 en 12 de Junio de 2009, 03:59:46
Muchas gracias, yo tambien ya he provado con el 2550 y el 4550 y sihe podido hacer comunicasion, solo on este no, y tambien ya he intentado poner codigo de un 2550 en el 4450 y no ha funcionado, pero intentare de todas formas.

Gracias
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: Facundo en 12 de Junio de 2009, 19:27:06
Hola Nicolas
Perdon una consulta, para que guardas estos datos en EEPROM?

 #rom int 0xf00000={1,2,3,4}

Saludos

   Facundo
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: MLO__ en 13 de Junio de 2009, 00:49:59
Creo que este tema ya se trato pero en un 2450 si no estoy mal .... creo que el problema estaba en el .h del micro ..... usa el buscador a ver si lo encuentras.
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: nicolas8702 en 04 de Julio de 2009, 17:59:35
hola facundo en realidad  no me habia percatado  de la instruccion de memoria y krlos este programa es  una modificacion de un programa para pic 4550 lo unico que hice fue cambiar la libreria del pic y utilizar el adc creeme este programa funciona en ambos microcontroladores
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: nicolas8702 en 04 de Julio de 2009, 18:15:25
hola krlos mirando la dificultad con el que tienes con el pic 4450 y te sigiero  que consultes el datasheet y mires la configuracion del oscilador deacuerdo al crystal el pll debe dividirse para obtener una frecuencia de interna de 48mhz
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: Lejan en 26 de Octubre de 2009, 15:47:24
Hola a todos, mi problema es que cuando me reconoce el nuevo dispositivo y busco el instalador " mchpcdc.inf " me dice que el archivo no contiene informacion del dispositivo, alguno sabe como solucionar esto?  Muchas gracias!!!
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: MLO__ en 26 de Octubre de 2009, 15:49:24
Hola.

Debes instalar primero el .inf dandole click derecho y seleccionando la opcion Instalar. Luego de instalado el .inf, conectas el dispositivo y listo.

Saludos
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: Lejan en 26 de Octubre de 2009, 15:53:18
Pruebo haciendo lo de instalar el .inf previo a conectar el usb pero me sigue diciendo lo mismo . Umm, ya no se que probar, en realidad deberia ser muy facil supongo. :x
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: Lejan en 26 de Octubre de 2009, 16:16:38
Una duda, porque no agregan el descriptor correspondiente?
Título: Re: Uso de USB CDC con el PIC18F4450
Publicado por: migsantiago en 26 de Octubre de 2009, 16:19:30
Tienes que modificar en el bloc de notas el archivo inf para que concuerde con el PID y VID de tu PIC.