Autor Tema: conexión USB entre PC y PIC18F4455  (Leído 14895 veces)

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

Desconectado vinny

  • PIC10
  • *
  • Mensajes: 27
conexión USB entre PC y PIC18F4455
« en: 17 de Junio de 2006, 20:06:31 »
Hola a todos, Estoy haciendo el proyecto final de carrera y he elegido el PIC18f4455, el caso es que para el proyecto necesito comunicar mi PC cn el PIC y estoy leyendo tantas cosas sobre el tema que me he hecho un lio.  :?
Para que sirve el HID?lo necesito para comunicarme con el PC? uso CCS y he visto que hay un ejemplo del HID con un mouse, pero no creo q me sirva de nada... a ver, alguien se ha comunicado con el PC mediante USB con el PIC? como lo habeis hecho, llevo un cacao monumental!

gracias!
Solo existen dos cosas infinitas, el universo y la estupidez humana, de lo primero no estoy seguro...

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: conexión USB entre PC y PIC18F4455
« Respuesta #1 en: 18 de Junio de 2006, 05:39:54 »
HID son las iniciales de human interface device ... y bueno no se necesita ningún tipo de driver o dll para trabajar con él. El puerto USB puede trabajar de tres formas:
- HID: sencillo de programar, pero velocidad de transmisión muy baja
- CDC: emula al puerto serie, se instalan unos drivers (dados por el compilador, por ejemplo CCS) mediante los que se te creará un nuevo puerto serie... y será virtual... por lo tanto solo necesitas hacer un programa que utilize el puerto COM... la velocidad con este modo de funcionamiento es moderada.
- DLL: este tercer modo es el mas 'dificil' de programar, realmente es complicado pq necesitas configurar un driver (dado por microchip) y utilizar una dll (tb suministrada por ellos) para enviar/recibir datos mediante ella. Con este la velocidad que conseguirás será la máxima del puerto USB... o mejor dicho, la máxima que te pueda ofrecer el microcontrolador.


Aquí te dejo el link para un ejemplillo con DLL y VC#:
http://www.hobbypic.com/index.php?option=com_content&task=view&id=14&Itemid=33
http://www.todopic.com.ar/foros/index.php?topic=2260.60

Y aquí una recopilación de distintos proyectos con usb:
http://forum.microchip.com/tm.aspx?m=123533

saludos!

Desconectado vinny

  • PIC10
  • *
  • Mensajes: 27
Re: conexión USB entre PC y PIC18F4455
« Respuesta #2 en: 21 de Junio de 2006, 15:41:34 »
mmm, tengo una pregunta sobre el montaje del proyecto que has colgado en hobbypic, por lo que veo alimentas el PIc con la tensión del USB, en mi proyecto yo utilizo un fuente externa que alimenta mas cosas a parte del PIC (motores, drivers , servos...) ademas mi PIC no esta siempre conectado al PC, con lo cual no puedo utilizar la alimentacion por USB para el micro. Tiene esto algo que ver en el funcionamiento del protocolo USB?

Otra pregunta mas, el pin Vusb creo recordar que proporcionaba la tensión necesaria para la comunicacion USB, pero si alimentas el circuito de otra manera, no se usa para nada, no es así? es lo que entendí al leer el datasheet  :?

gracias por la ayuda! 8)
Solo existen dos cosas infinitas, el universo y la estupidez humana, de lo primero no estoy seguro...

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: conexión USB entre PC y PIC18F4455
« Respuesta #3 en: 21 de Junio de 2006, 19:06:45 »
No, en principio que alimentes tú placa con uana fuente externa no influye para la tensión diferencial D+/D- del puerto usb del PC.

Ese pin Vusb da una tensión de 3.3V estable necesaria para el transductor de usb interno del PIC, ese pin no debe ser usado mas que para poner el condensador, necesario para obtener eliminar el ruido de baja frecuencia a la entrada del transductor. Si alimentas externamente, ya que vas a seguir haciendo uso del transductor usb interno (ya que se supone que tú vas a conectar el PIC al usb) seguirá siendo necesario el condensador, por lo tanto, solo se puede prescindir de él cuando no se vaya a utilizar la función usb del micro.

Por otro lado, solo tengo una duda... no se si es necesario unir las masas del puerto usb del PC y de tú placa en el momento de conectar esta al PC... o por el contrario si simplemente utilizando las lineas d+/d- (cuando se utilize la alimentación externa del circuito claro está) es siempre suficiente...

saludos!

Desconectado vinny

  • PIC10
  • *
  • Mensajes: 27
Re: conexión USB entre PC y PIC18F4455
« Respuesta #4 en: 23 de Junio de 2006, 13:47:10 »
Gracias por tu ayuda J1M, puse el condensador en la pata Vusb y el PC ya reconoce el PIC, tambien puseuna resistencia de bajo valor entre la tensión del cable USB y mi circuito de alimentación, esto lo he visto en algun proyectillo, y parece que funciona, así el PIC se alimenta exactamente a la misma tension que lleva el USB y parece que va mejor, tampoco dañamos la fuente xq ponemos la resistencia que compensará las pequeñas diferencias de potencial.

Una vez dicho esto te comento: el PC me reconoce el PIC como nuevo hardware encontrado, pero al instalarlo me dice que el controlador que pongo no es adecuado y me pone un mensaje "El controlador escogido no es el adecuado para este hardware (codigo 10)"  y entonces el proyecto no va. Puede ser algo del archivo picusb.inf? yo no lo he modificado y uso un pic18f4455 mientras tu usabas un pic18f2550, en la cabecera del CCs si que cambié el tipo de dispositivo, pero no en el .inf xq no tengo ni idea de como va eso  :? Puede ser este mi fallo?

gracias por tu ayuda J1M!
Solo existen dos cosas infinitas, el universo y la estupidez humana, de lo primero no estoy seguro...

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: conexión USB entre PC y PIC18F4455
« Respuesta #5 en: 23 de Junio de 2006, 14:06:40 »
Solo has cambiado de 18F2550 a 18F4455 no?? no has cambiado el VID ni el PID cierto? supongo que el cristal que estas usando es de 12Mhz?? si es así... al conectar el dispositivo al PC te dice que se llama PicUSB no?? prueba a conectarlo a otro puerto distinto a ver que pasa. El código 10 suele salir por diferentes motivos (q ahora no sabría dcirte.. demasiadas horas d examen!!) a ver si damos con lo q es...

saludos!

Desconectado vinny

  • PIC10
  • *
  • Mensajes: 27
Re: conexión USB entre PC y PIC18F4455
« Respuesta #6 en: 24 de Junio de 2006, 08:00:32 »
mierda, no habia caido en eso, uso un critsal de 4MHz, tendre q cambiar tb la frecuencia en el CCS, voya  probar a ver q pasa
gracias
Solo existen dos cosas infinitas, el universo y la estupidez humana, de lo primero no estoy seguro...

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: conexión USB entre PC y PIC18F4455
« Respuesta #7 en: 24 de Junio de 2006, 08:46:45 »
no, la frecuencia no tienes que cambiarla, debes cambiar los fuses, si ojeas el datasheet veras como debes seleccionarlos, leete este post que está explicado:
http://www.todopic.com.ar/foros/index.php?topic=8513.45

Aunq te pongo lo q te puede interesar:
Código: [Seleccionar]
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
#use delay(clock=48000000)

en el delay debo poner a la frecuencia a la que va a ir mi sistema... no la frecuencia del cristal que esté usando. 48Mhz para obtener 12mips y los 1,5MB de transmision del protocolo USB 2.0

El siguiente paso es configurar los fuses para que apartir de un cristal X obtener la frecuencia del sistema Y (en este caso 48Mhz), para eso nos vamos al DataSheet del 18Fxx5x, y a la página 31 y 32.

Vemos un peaaazo tabla en la que tendremos q mirar primero la columna de la izquierda (Input Oscillator Frecuency), seleccionamos la casilla correspondiente al cristal q estemos usando, en mi caso es de 12Mhz, ahora nos vamos a la columna de la derecha(Microcontroller Clock Frecuency) y buscamos los 48Mhz que queremos conseguir.

Ahora tenemos que ver que parámetros nos da la tabla para poner como Fuses, para el que estamos calculando tenemos:

PLL Division: +3 (011)
Clock Mode: HSPLL, ECPLL, ECPIO (a elegir entre uno de los tres...)
MCU Clock Division: +2 (00)

Por ultimo seleccionamos los fuses adecuados a esos parametros, esto ya dependerá un poco del compilador y los nosmbres q le haya dado, aunque generalmente se respetan los del datasheet, para el caso del CCS se tiene:

PLL Division: PLL3
Clock Mode: HSPLL
MCU Clock Division: USBDIV (para indicarle q vamos a usar el divisor tb para el USB), CPUDIV1 (aunq arriba sea +2, es el 00, y es el primero, usea "1"Giño

Para vuestro caso que es de 4Mhz tendriais:
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN
#use delay(clock=48000000)

saludos!

Desconectado vinny

  • PIC10
  • *
  • Mensajes: 27
Re: conexión USB entre PC y PIC18F4455
« Respuesta #8 en: 24 de Junio de 2006, 13:02:57 »
 :( pues.. hice lo de cambiar los fuses y...nada, exactamente como antes, no era de esoestoy totalmente en blanco..
gracias por todo J1M
Solo existen dos cosas infinitas, el universo y la estupidez humana, de lo primero no estoy seguro...

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: conexión USB entre PC y PIC18F4455
« Respuesta #9 en: 24 de Junio de 2006, 13:28:34 »
Al conectar el dispositivo al PC te dice que se llama PicUSB no?? tienes bien conectados D+ y D-??? seguro que no las has intercambiado?

saludos! ya queda menos xa exarlo a andar! ;)

Desconectado vinny

  • PIC10
  • *
  • Mensajes: 27
Re: conexión USB entre PC y PIC18F4455
« Respuesta #10 en: 25 de Junio de 2006, 13:50:18 »
Hola, pues en realidad no tengo intercambiados los cables D+ y D-, aunque por si acaso lo he probado de las 2 maneras posibles y nada.

Al conectar el PIC al PC no me sale nada de hardware nuevo encontrado ni nada por el estilo, así que no me sale nada de picUSB, entonces lo hago a mano, voy al panel de control, agregar nuevo hardware y alli sigo los pasos tipicos, entonces si que em encuetra un picUSB, busco el controlador en la carpeta correspondiente y lo instalo, al acabar la instalación me sale el siguiente mensaje:
                                "El software para este dispositivo está ahora instalado, pero puede que no funcione correctamente.

                                  Este dispositivo no puede iniciar (Codigo 10) "

Y ahí es donde se me cae el mundo al suelo y me desmoralizo, yo creo que es un problema del driver *.inf , pero si a ti te funciona deberia funcionarme a mi también,  :(


Creo que como no necesito demasiada velocidad voy a proba el CDC, a ver si esto no da problemas con la instalación del software, que supongo que no debe dar ninguno ya que no se instala ninguna  .dll


Muchas gracias por todo, si se te ocurre algo.... soy todo orejas  :lol:
Solo existen dos cosas infinitas, el universo y la estupidez humana, de lo primero no estoy seguro...

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: conexión USB entre PC y PIC18F4455
« Respuesta #11 en: 25 de Junio de 2006, 18:07:03 »
Vamos a ver, en estos casos lo mejor es hacer borrón y cuenta nueva... por lo tanto, a borrar se ha dicho.

Teniendo el PicUSB conectado ves al administrador de dispositivos y desinstalalo (pinchando con el boton secundario sobre él)
Una vez hecho esto, dale a inicio/ejecutar y pon 'regedit' ... sin las comillas

Se te abrirá el editor del registro (no borres nada mas que lo q te diga :p), pincha sobre Mi PC, y acontinuación dale a edicion/buscar
pones esto:
4D36E911-E325-11CE-BFC1-08002BE10318

Pasado un ratillo te debería encontrar una carpeta con ese nombre dentro de:
HLM/System/ControlSet001/Control/Class

Bueno pues pincha con el boton secundario sobre la carpeta llamada '4D36E911-E325-11CE-BFC1-08002BE10318' y le das a eliminar.

Una vez eliminada, cierra el editor de registro y vuelve a intentar instalar el PicUSB. Si así no se instala correctamente seguimos probando cosas ;)

saludos!

Desconectado vinny

  • PIC10
  • *
  • Mensajes: 27
Re: conexión USB entre PC y PIC18F4455
« Respuesta #12 en: 26 de Junio de 2006, 15:15:29 »
sigue pasando exactemente lo mismo, crees q tendre problemas al implemnetar un CDC emulando un puerto COM si tengo q usar el Bootloader q tb va por USB real?
Solo existen dos cosas infinitas, el universo y la estupidez humana, de lo primero no estoy seguro...

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: conexión USB entre PC y PIC18F4455
« Respuesta #13 en: 26 de Junio de 2006, 16:21:06 »
Vale... creo q el fallo de software está descartado... por lo tanto tienes el fallo en el hardware casi casi con total seguridad, comprueba que tienes un condensador de 100nF para eliminar el ruido de alta frecuencia lo mas cerca a la entrada de alimentación del PIC, podrías ponerle un condensador de 10uF a la entrada de alimentación para quitar el ruido de baja frecuencia, así se descarta problema de ruidos. Por otro lado, el condensador de 47uF de la tensión Vusb está bien polarizado no?... en definitiva, comprueba que tienes tu montaje tal y como se indica en la página y con los valores indicados...

Respecto al CDC no hay ningún problema, CCS suministra los drivers para crear un puerto COM virtual, aunq podríamos estar en las mismas, si te falla el de la DLL es muy probable q tb lo haga el del CDC... estoy convencido que hay algo 'raro' en tu montaje.

saludos

Desconectado vinny

  • PIC10
  • *
  • Mensajes: 27
Re: conexión USB entre PC y PIC18F4455
« Respuesta #14 en: 27 de Junio de 2006, 19:13:33 »
Hola!
he repasado los condensadores, todo bien, pero me he dado cuenta de una cosa, en Vusb no tengo 3,3V, tengo 0V. a q se debe?no me digas que tengo que alimentarlo externamente!en el datasheet pone que si usas el transceiver interno no se necesita alimentar, pero..dandome 0V...no se como poner el registro que indica que uso el transceiver interno al valor adecuado.

Otra cosa es que al instalar el controlador me dice que eese controlador no esta firmado digitalmente, y que por tanto ese hardware puede no funcionar, y evidentemente no funciona.

gracias pro todo, espero q sea eso del Vusb  :?
Solo existen dos cosas infinitas, el universo y la estupidez humana, de lo primero no estoy seguro...


 

anything