desktop

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

Hello.

Ese hombre del vídeo me ha ayudado mucho en su día con el puerto serie, lo que no tiene idea de microcontroladores en el 2008. Ahora parece que se enganchó al tema.

Sólo falta que la gente siga más con estos temas del USB 2.0, el futuro 3.0 y el má futuro el y posible sustituto del USB 3.0 que no recuerdo su nombre ahora (cre que era algo de light keep y a 10GB frente al 4.8GB del USB 3.0).

Goodbye
 
hola
he visto el foro y me parece que hay gente con muchos conocimentos y realmente buenos en el tema.
necesito desarrollar un programa en vb que me lea un dato de unos sensores via usb con el pic 18f4550, con cada sensor reproducir un sonido especifico mientras este accionado.
agradesco de antemano la ayuda que me pudan brindar.
 
Hasta puedes bajar la tercera entrega v0.3 del estupendo manual que se actualiza con el tiempo.

PD: Por cierto, ya está el Visual Studio Express 2010 en español, para los que le interesa. Es fácil pasar los proyectos del 2008 al 2010 con intentar abrirlo con el 2010 y funciona a las mil maravilla, eso es lo bueno que le veo de entrada.
 
hola a todos e estado trabajando la comunicación USB con el visual C++ pero siempre con la MFC "Microsoft Foundation Class" hace una semana lo trate de crear como aplicación de Windows y no e podido por ningún medio alguien a logrado utilizar estas librerías y .dll en otro entorno fuera de MFC
saludos
 
Hola amigo Moyano..
tenia unas consulta, o mas bien una duda, en otro post del foro usted puso un ejemplo de Usb HID con VB.net 2008 y ahora lo estoy probando y no me funciona para nada =( tengo los mismo Vendor ID y Product ID y no se que puede ser que tenga malo..
tengo un programa en Visual basic 6 (el ke entrega el microcode studio) y me funciona perfectamente, pero quiero cambiarme a vb.net y probando el codigo que posteas no me funciona.. coloque la dll en system32 como dice el .rar y nap.. no se me ocurre que pueda ser..

Este es el tema en donde obtuve el proyecto.

Saludos!!

---edit o agregado---

quizas ese ejemplo no es para el hid que genera Microcode Studio para PicBasic pro??


------Edit2-------------

Bueno, gracias :p
ya lo solucione, encontré otro ejemplo en la web y mezcle el tuyo con ese e hice uno jajajajjajajajaj
pero al fin ya me resulto!! (me habría demorado menos, si es que me hubiese dado cuenta que nunca cambiaba el color, de algo que quería ver pero dado a ello aprendí varias cosas jajajajjaja)
Saludos!!
PD: adjunto código pic(PicBasic Pro), proyecto vb.net + simulación proteus, el proyecto es simple, es de prueba, ve si se a conectado el usb y comprueba el estado de un pulsador en rb4 (uso bootloader de microchip :p)
 

Adjuntos

  • USBProject.rar
    434.9 KB · Visitas: 1,291
Última edición:
Hola a todos, soy yo de nuevo.

Bueno, luego de haber leido este hilo y de mucha lectura al respecto voy a comenzar mi projecto, ya tengo una idea clara de que es lo que necesito, pero para poder probarlo necesito una aplicación en el pc para poder probar y obtener resultados concretos, pero tengo un problema, ya que no he logrado incluir la libreria mpusbapi.dll o la easyHID.dll a un proyecto en visual basic 6.0. A decir verdad no tengo ni idea de como utilizar estas librerias en este programa, y me intriga mucho el pensar como puedo hacer los drivers que necesita mi dispositivo para ser instalado, con mi propia firma virtual.

Les agradeceria que me explicaran y de antemano muchas gracias. La proxima semana si no hay inconvenientes, postearé resultados =)
 
Jhon me he leido el forum desde el inicio hasta el final y soy parte de el hace ya mas de un ano aunque no escribo casi y tu proyecto es el que me ha resultado mas interesante. si me permites te puedo ayudar en lo que pueda pues tengo una concepcion del USB un poco diferente a la que se maneja en este hilo. de hecho yo no programo el USB en C sino que lo hago en ensamblador y resulta muy interesante aunque mas complejo. la transmision de voz por el USB ya la he implementado. quisiera que compartieras tus ideas de como hacerlo para decirte de antemano si es funcional o no y que no pierdas tu tiempo.

saludos nauj noriad
 
ola amigoss excelente en vdd... bueno tengo un problema espero y m lo puedan solucionar... cabe aclarar que estoy realizando mis pininos en usb... al leer el este excelente proyecto n el foro me di a la tarea de realizar mi proyecto usb realice un programa sencillo para checar la comunicacion con un PIC18F4455 lo estoy simulando en proteus y m sale la leyenda de instalar el driver "CCS RS232", la pregunta es estoy haciendo algo mal en la programacion, por que segun yo en ese paso debo instalar la libreria de microchip mchpusb.dll...les agradeceria mucho su ayuda...GRACIAS y felicidades a todos los que han realizado todo este gran trabajo y de tantisisima utilidad

aaa m falto decir que ubico el instalador en la carpeta donde tengo la libreria i nada no lo instala... mi sistema operativo es win vista...espero i m puedan ayudar gracias

jajaja no s dll es .inf
 
Última edición:
Gracias por tu oferta noriad ;) la verdad se nos pidíó hacerlo en lenguaje C asi que no podemos migrar al lenguaje ensamblador. Sin embargo, si es posible que te esté molestando de vez en cuando acerca del tema hehe.

Mientras tanto, he estado encargado de otros mini proyectos pero he tenido problemas con ellos. Tomé como base el programa en visual basic del ejemplo 1 de moyano, pero no comprendo porqué mi programa no funciona, he aqui el codigo:

Código:
#include <18F2550.h>


#device adc=10
#fuses HSPLL,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOWDT,NOMCLR
#use delay(clock=48000000)

int16 dato1;

#include "usb_cdc.h"    //Descriptores USB
#include "usb_desc_cdc.h"
void Settings (void){
   setup_adc_ports(AN0|VSS_VDD);    //Configuraciones generales
   setup_adc(ADC_CLOCK_DIV_2);
   set_tris_c(0x00);
   output_low(PIN_C1);
   usb_cdc_init();
   usb_init();
      
}

void get_dato (void){
    dato1 = read_adc(); //Leemos el adc y guardamos el dato en la variable dato1
    dato1 /= 1023;      //que luego es escalizada de 0 a 5000
    dato1 *= 5000;
    }

void main(){
   Settings();    //llamammos settings
   while(!usb_cdc_connected()){}
   
   for(; ;){
      usb_task();
      if(usb_enumerated()){
         if(usb_cdc_getc()=='i'){   //llegó el caracter i?
         output_high(PIN_C1);       //if so, encender el led c1
         printf(usb_cdc_putc,"Temp = %4.3w.\n\r",dato1); //enviar dato
         }
         
         if(usb_cdc_getc()=='o'){   //llegó el caracter a?
         output_low(PIN_C1);        //if so, apagar el led c1
         printf(usb_cdc_putc,"Esperando ordenes.\n\r");  //enviar caracteres
         }
      }
      get_dato();    // Llamamos settings
   } //bucle
}

El programa lee el adc y envia el dato hacia el pc donde el valor se lee en un cuadro de texto en una aplicación de visual basic, cuando se le indica al recibir un caracter proveniente del pc

Cuando lo conecto, el pic es reconocido como puerto virtual, pero al parecer, no me recibe ni envia los datos. Es posible que esto se deba al compilador que uso? (PCH Compiler V4.104 (CCS))? ya que no puedo recibir ni enviar datos desde la aplicación en visual basic
 
Última edición:
Una pregunta Jhon5191: Al leer el valor del ADC no sería mejor almacenar la cuenta que sacas en un float y después asignarlo a una tipo int16??
Porque si por ejemplo el resultado de la conversión es 500 y lo divides entre 1023 te da 0,488 pero al asignarlo a un int16 te quedarías con 0 en la variable... Luego estarías multiplicando 0 x 5000 y obtendrías siempre 0!!!!

De la comunicación USB no tengo mucho que decir porque lo que he hecho no "Furula"!!! Me pasa lo mismo que a ti, la compu lo reconoce pero el PIC no manda nada, o la compu es la que no recibe, no se....
 
Jhon claro no quise decirte que migraras a ensamblador , ya que no es tarea facil.
pero quiero que tengas claro que ni con cdc ni hid a mandar audio por la PC con buena calidad. te va a ser falta mas que eso . Para mandar audio necesitas saber de la clase audio paraque la maquina te lo reconozca como tal . ademas las clases HID y CDC no poseen soporte para procesamiento de audio.
 
@elmor8: Mmm tienes razon, creo que es mejor usar un tipo float primero ;) muchas gracias por tu sugerencia.

@noriad: Oh entiendo, amigo, y de hecho estaba pensado lo mismo hace unos dias, creo que para ello seria necesario el método bulk transfer (?) o me equivoco?; lo que implica el uso de la libreria mpusbapi.dll, que ya he conseguido. El unico problema es que no se como usar sus funciones en X programa, llamese visual basic, labview o matlab. Tambien estoy desorientado en la creación de los drivers necesarios para que el dispositivo funcione. Te agradeceria muchisimo si pudieras orientarme en este sentido ;)
 
Hola Jonathan y a todos desde Mexico, entre a ver esta iformacion, y ya ytengo armado el circuito del pic18F2550, usando un programador JDM por puerto serie pude cargarle un firmware que encontre en una pagina pero al conectarlo con un circuito usb este no es reconocido y no deja cargarle ningun driver,
Intente descargando tu programa en VB y ahora cargue el archivo PIC18F2550_CDC_USB.hex, pero al correr tu programa en VB6 no hace nada, soy nuevo en esto,
me supongo que las librerias usb_cdc.h y usb_desc_cdc.h tambien deben cargarse,

tendras un archivo hexadecimal que ya las traiga? para cargarle ese hexadecimal al PIC ?

saludos
 
^ HOla eramos, en primer lugar, si es necesario cargar las librerias usb_cdc.h y usb_desc_cdc.h, ya que estas son las que haran que tu pic sea reconocido y usado como un dispositivo USB, para ello debes incluirlas en tu codigo y luego compilarlo. Sin embargo, y ya que yo tuve muchos problemas con eso, te recomiendo que uses la version V4.065 o posterior, ya que yo usaba la V4.104 y no me compilaba correctamente ;) saludos.

@ElGiganteDeYeso: Muchas gracias por el concejo amigo, la verdad no se me habia ocurrido, pero tiene mucho sentido ;)
 
Bueno hola a todos, he estado un tiempo trabajando con el pic 18f2550, estoy realizando mi proyecto de titulo y la verdad me ha costado bastante, estoy ocupando el protocolo CDC en el pic, y como interfaz para el Pc ocupo Vb2008, el codigo en el pic funciona, y el codigo de la interfaz tambien, pero tengo un problema, tengo un texbox en la interfaz que recibe un string que yo le mando desde el pic, mi problema es que solo me recibe el primer dato que le mando desde el pic, luego el texbox no se me actualiza cuando lo mando otro dato, estoy simulando el pic con el proteus y es un teclado de o letras, entonces cuando le mando una letra me la recibe la interfaz, pero cuando le mando otra no me la recibe y el texbox se queda con lo primero que le mande, he mirado el buffer de salida del pic y se va llenando con las teclas que pulso, tambien he visto paso a paso en la interfaz y lo unico que puedo ver es que el evento de Datareceiver, no se dispara cuando desde el pic le mando la segunda tecla o que es lo mismo mi string. Agradeceria mucho su ayuda he buscado y buscado espero recibir ayuda, desde ya gracias.
 
Hola Moyano, quiero saber donde puedo descargar este poderoso manual que has construido, he intentado con los links de mediafire que haz puesto pero no me funcionan, también quiero preguntarte si ya te metiste con el tema del HID para controlar el mouse?, porque quiero hacer un proyecto donde se requiere el control del puntero en el pc y lo ideal es poder hacerlo con el pic18f2550. gracias!. :unsure:
 
Última edición:
@ElGiganteDeYeso: Insisto con el float... Con int16 se puede almacenar datos mayores a 65535?? Si lo pones así la variable se va a desbordar apenas el adc llegue a 13!!! Otra solución, creo, sería declararla más grande...

@jesolar: Puedes publicar tu código? Tanto del pic como del PC!!! Así es más fácil para que alguien te ayude y yo poder aprender más Jeje...
 
Atrás
Arriba