Autor Tema: Uso de USB CDC con el PIC18F4450  (Leído 8041 veces)

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

Desconectado krlos158

  • PIC10
  • *
  • Mensajes: 3
Uso de USB CDC con el PIC18F4450
« 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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #1 en: 21 de Mayo de 2009, 13:52:17 »
Hola

¿Qué es lo que no hace tu pic?

Desconectado krlos158

  • PIC10
  • *
  • Mensajes: 3
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #2 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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #3 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());

Desconectado nicolas8702

  • PIC10
  • *
  • Mensajes: 6
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #4 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.
}

Desconectado krlos158

  • PIC10
  • *
  • Mensajes: 3
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #5 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

Desconectado Facundo

  • PIC10
  • *
  • Mensajes: 28
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #6 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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #7 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.
El papel lo aguanta todo

Desconectado nicolas8702

  • PIC10
  • *
  • Mensajes: 6
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #8 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

Desconectado nicolas8702

  • PIC10
  • *
  • Mensajes: 6
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #9 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

Desconectado Lejan

  • PIC10
  • *
  • Mensajes: 25
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #10 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!!!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #11 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
El papel lo aguanta todo

Desconectado Lejan

  • PIC10
  • *
  • Mensajes: 25
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #12 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

Desconectado Lejan

  • PIC10
  • *
  • Mensajes: 25
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #13 en: 26 de Octubre de 2009, 16:16:38 »
Una duda, porque no agregan el descriptor correspondiente?

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uso de USB CDC con el PIC18F4450
« Respuesta #14 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.