Control de dispositivos a través del módulo USB del PIC18F45/2550

hola edu...
mirá mis respuestas a tus preguntas:
1º - El condensador que va en Vusb , es un condensador para filtrado y estabilización del voltaje del regulador interno de 3.3v que trae el PIC18F2550. Microchip recomienda 470nf para un buen funcionamiento (el que yo uso Y FUNCIONA PERFECTO) y otros que le ponen 47uf pero el funcionamiento no cambia..
2º - El valor de 15pf es el valor correcto para 20Mhz de cristal ...pero yo lo he usado de 22pf con el mismo cristal sin ningún tipo de problema..
3º - para la configuración de fuses tenés que poner lo siguiente:
(en caso de que programes en C de CCS):
#fuses NOMCLR,HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN

esta configuración de fusibles es para 20Mhz de cristal ...con el USB funcionando y velocidad de trabajo de 48Mhz.

Espero haberte ayudado :)
 
Hola Moyano,
Tengo un problemilla, resulta que el PIC no está contestando al caracter "x" que le envia la aplicacion del ejemplo #1. ¿Que puede estar mal?, ya he visto que se conecta y se enumera, tambien he puesto unos leds (como flags) para saber por donde ha pasado y me parece que no está entrando en el if del "usb_cdc_kbhit()" pues no se enciende ese led que he puesto dentro del if.

Este es el codigo:
Código:
#include <18F2550.h>

#fuses HSPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN

#use delay(clock=48000000)

#include "usb_cdc.h"
#include "usb_desc_cdc.h"

#define Led1            PIN_A0
#define Led2            PIN_A1
#define Led_ON(x)         output_low(x)
#define Led_OFF(x)         output_high(x)

void BlinkLed(int num)
{
  switch (num)
  {
       case 1:      Led_ON(Led1);
                           delay_ms(100);
                           Led_OFF(Led1);
                           delay_ms(100);
                           break;
    case 2:       Led_ON(Led2);
                          delay_ms(100);
                          Led_OFF(Led2);
                                       delay_ms(100);        
                                       break;
   }
}

void main()
{
usb_cdc_init();
usb_init();

while(!usb_cdc_connected())
 {
 Led_ON(Led1);  // para ver si ha entrado en este while
 }
delay_ms(1000);
Led_OFF(Led1);

do
   {
   BlinkLed(1);  //flag ciclico
   usb_task();
   if (usb_enumerated())
   {
   if(usb_cdc_kbhit())
    {
    BlinkLed(2);  // para ver si ha entrado en if de usb_cdc_kbhit
       if(usb_cdc_getc()=='x')
     {
     printf(usb_cdc_putc, "z"); // respondo con un solo caracter "z"
          Led_ON(Led2);   // flag de if usb_cdc_getc
          }
    }
  }
  delay_ms(2000);
  Led_OFF(Led1);
 } while (TRUE);
}

He hecho unas trazas (con un programa muy bueno que se llama USBlyzer) para que veas todo el proceso (tambien tengo el fichero de la traza):
TRAZAUSB.gif




Gracias y un saludo !
 
Última edición por un moderador:
Tanto el programa como la aplicación para USB funcionan bajo windows XP..tenés que usar el firmware que puse yo al principio ..si lo modificas puede ser que no funcione correctamente....otra cosa proba con el hyperterminal.
Si usas Win Vista32 o Vista64 asi también como Win7_32 o Win7_64 pueden ver problemas de funcionamiento, los cuáles solucionare en cuanto postee las actualizaciones de los programas que van a salir en cuanto termine de solucionar algunos conflictos de programación ..
 
Hola Moyano,
Me pasa algo muy curioso, si cargo tu fichero "PIC18F2550_CDC_USB.hex" utilizando File->Import, funciona perfectamente, pero si compilo el código usando el fichero "PIC18F2550_CDC_USB.C" (sin modificar) para crear el fichero .hex desde el MPLAB, no me funciona. Se llega a registrar y enumerar, hasta se transfieren los datos de Get Line Coding, pero no me contesta nada al pulsar "X" o "A".

¿Habrá que configurar algo más en el proyecto del MPLAB? ¿?¿?¿?¿?

Los Headers Files que tengo en el proyecto son:
18F2550.h
ctype.h
pic18_usb.h
usb.h
usb_cdc.h
usb_desc_cdc.h
usb_hw_layer.h

Gracias y un saludo !
PD: que vergüenza no poder pasar ni del 1er ejemplo joder...
 
uy bueno este post, tiene un monton de informacion y ejemplo. Quisiera descargar el manual de Moyano Jonathan pero me es imposible descargar nada de mediafire, alguien que lo tenga y lo pueda subir a otro sitio.

Saludos y gracias
 
Buenos señores continuare con la lectura en la que me quede, por cierto si es como dice Moyano es para mas dedicacion, tiempo y algunas noches sin dormir, pero lo malo es que en estos dias ando un poco ocupado.
Pero como dice la cancion de los amigos Kjarkas "tiempo al tiempo" jejejejejeje.
No se a que manual te refieres (sera por que aun no termine la lectura de las 41 paginas del foro jejejejeje) pero mas informacion sobre usb que tambien pude encontrar esta en http://www.usbmadesimple.co.uk/index.html, si alguien ya indico el sitio me disculpara.
Saludos picmaniacos, continuare con la lectura
 
uy bueno este post, tiene un monton de informacion y ejemplo. Quisiera descargar el manual de Moyano Jonathan pero me es imposible descargar nada de mediafire, alguien que lo tenga y lo pueda subir a otro sitio.

Saludos y gracias


Hola grafisoft,
Aquí he dejado uno que tengo en PDF, no se si será el que estas buscando:


Un saludo.
 
Es la ultima version del manual que saco?? Porque yo pude ver que tenia 2 pdf pero no pude descargar ninguno, no obstante gracias breogan por subirmelo a otro sitio.

Tiene muy buena pinta.

saludos
 
Muchas gracias por la respuesto, ahora ya me queda claro.

Por cierto, hace falta tocar algo de la configuración de bits de mplab (Configure -> Configuration bits)? lo digo porque todo esto que ponemos en los fuses, también está ahy con lo cual no se hay que tocar algo de allí o no :S .. Gracias y un saludo a todoos!
 
Hola soy Nuevo en esto de interfazes y esas cosas, estos dias e estado leyendo este tema y de verdad que es el mas completo que hay en la web ,porlomenos yo busque harto y no encontre casi nada :LOL:.
La cosa esque e estado escribiendo un codigo en Vb 2008 para la comunicacion, hasta ahora me funciona perfecto eso de seleccionar COM disponibles en el pc, tambien funciona bien esto de enviar datos al micro, pero ahi empiezan los problemas, la cosa esque usando el codigo en ccs que se subio antes para que cuando se enviara una "x" y una "y" enviara un printf confirmando que el dato volvio, use el .exe que subio moyano echo en vb 2008 lei, envia x e y perfectamente y recibe un mensaje de confirmacion, pero cuando uso mi programa envia x e y,(de echo puse para que se enviara lo introducido en un textbox) pero no recibo absolutamente nada nisiquiera en el serial monitor recibe algun dato desde el micro usando el mismo codigo en el micro que use para el exe de moyano, nose que puede ser, creo que hay un problema en el codigo de vb en la parte de recepcion de echo no funciona para nada jajaja estoy intentando usar un rich text box para la recepcion de datos, bueno me gustaria que alguien me pudiera ayudar en el codigo de vb en la parte de recepcion para ver que funcione bien esta cosa.

Adjunto lo que llevo de vb 2008 con el proyecto entero ojalaa me puedan ayudar.

Como software para monitorear el COM virtual uso "Free serial port monitor"
http://www.serial-port-monitor.com/
espero que se pueda hacer algo, gracias de antemano
 

Adjuntos

  • conexion USB.rar
    483.6 KB · Visitas: 264
  • 1_USB.rar
    95.1 KB · Visitas: 194
  • Simulacion.rar
    8.7 KB · Visitas: 163
  • Dibujo.JPG
    Dibujo.JPG
    16.9 KB · Visitas: 74
hola necesito una libreria para manejar un teclado matriz 4x4 para ccs c, tengo la kbd pero necesito una modificada pues la que trae kbd.c es solo para teclados 3x4, gracias de antemano
 
Alguien ha probado el ejemplo de colpic? está en esta pagina:

http://colpic.webcindario.com/proyectos.html

Esta página ya ha salido, por este hilo. Se trata de una conexión USB mediante el protocolo de Bulk Transfer. Simulando en proteus el ejemplo me funciona perfectamente todo, pero al probarlo en una placa no. El tema está en que el USB me detecta el hardware y claro, me sale el asistente para instalar los drivers. Yo le doy a siguiente, y que busque los drivers por él mismo, pero al final me sale un mensaje de error diciendo que no ha encontrado los drivers. Por esto les pido que si alguien ha echo una conexion USB con Bulk Transfer porfavor me diga que debo hacer para que el ordenador instale bien los drivers. Muchas gracias a todos!!
 
yo modifique los descriptores del dispositivo nomás pero como decís es raro.....
por las dudas usa mi archivo de descriptores para que no te de errores...

Hola Moyano,
Ya he dado con la clave, yo estaba usando la version 4.093 del CCS. Hice un downgrade de la version, baje a la 4.065 y ahora si funciona cuando compilo el proyecto desde mi MPLAB. Por curiosidad, ¿que version de CCS utilizas?

No tengo muy claro porque, pero me parece que la gente de CCS ha hecho algun cambio en las librerias USB que no está bien ¿?¿?¿?.

Pues eso.. a seguir urgando ....
Un saludo

Pues si, hay un problema en la version 4.093 del CCS.

Mas info en el foro de CCS:
http://www.ccsinfo.com/forum/viewtopic.php?t=40319&highlight=093
http://www.ccsinfo.com/forum/viewtopic.php?t=40778&highlight=093

Ya sabeis... la 4.093 no esta OK.
 
Última edición:
Hola a todos:
Pido una disculpa por salirme del tema pero estoy de hacer una interfaz con Visual c++ y HID pero no escuentro las librerias para este compilador y las instrucciones pora recibir y enviar datos al pic. Gracias y un saludo
 
Adler acá en el foro hay un ejemplo igual al tuyo hecho en Visual Basic 2008.net pero no me acuerdo en que página así que lo vas a tener que buscar.

ingdenis1 perdón que te moleste pero tu pregunta está fuera de contexto ..por favor buscá en el foro con el buscador que seguro encotras mucha info sobre eso.

breogan: Las últimas versiones de CCS vinieron con muchos errores pero es cuestión de ver cuáles son en su página ....ahi ellos explican la mayoría de ellos y por desgracia uno a veces tiene que adaptar sus programas a dichos errores.
PD: Usaba con normalidad la 4.023 y no me ha traido problemas....ahora me pase a la 4.104 a ver que pasa..

KOK buscá en internet easyHID , este programa te genera un proyecto completo para trabajar con HID y Visual C++ los ejemplos de programación para el PIC lo podés sacar desde internet o desde este mismo hilo donde uso una librería de descriptores para ese programa.
 
Atrás
Arriba