Autor Tema: Módulo USB no se apaga (problema de referencias de tension?)  (Leído 4136 veces)

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

Desconectado chiten

  • PIC10
  • *
  • Mensajes: 5
Módulo USB no se apaga (problema de referencias de tension?)
« en: 03 de Junio de 2010, 15:19:06 »
Hola a todos! Hace unos días que estoy lidiando con este problema en un proyecto que estoy llevando a cabo usando el PIC2550. Actualmente mi aplicacion realiza algunas mediciones cuyos resultados quisiera pasarlos a la PC. Para transmitir los datos estoy usando el framwork CDC que da microchip.

Tengo configurado mi puerto RC0 para sensar si esta o no conectado el cable USB. El mismo esta conectado a Vusb del cable USB con una resistencia de 100k en serie y otra igual puesta a masa segun se recomienda en la figura 17-11 de la hoja de datos. De esta manera, solo se ingresa al modo usb si esta conectado el cable.

La configuracion anterior esta funcionando, solo entra al modo USB cuando el cable esta coenctado a la PC. La transmision de datos tambien funciona, puedo transferir todo sin ningun problema.

Mi problema esta en que asi como senso la conexion del cable, senso tambien la desconexion del mismo pero no quiere funcionar. Dentro de los metodos del framework, el que se encarga de revisar si esta conectado el cable, es el metodo USBCheckBusStatus(); . Alli cuando se verifica que el cable no esta conectado, debe deshabilitar el modulo USB y cambiar la variable llamada "usb" (ésto lo agregue yo  :)) para que ésta se haga cero  y abandone el bucle principal del USB y vuelva a mi programa principal. Aqui abajo dejo las partes masimportantes del codigo:

Código: [Seleccionar]
//Bucle principal para USB
void main_USB(void)
{  usb = 1;
   InitializeSystem();
    while(usb)
    {
        USBTasks();         // USB Tasks
        ProcessIO();        // See user\user.c & .h
    }//end while
}//end main

Código: [Seleccionar]
void USBCheckBusStatus(void)
{
    /**************************************************************************
     * Bus Attachment & Detachment Detection
     * usb_bus_sense is an i/o pin defined in io_cfg.h
     *************************************************************************/
    #define USB_BUS_ATTACHED    1
    #define USB_BUS_DETACHED    0

    if(usb_bus_sense == USB_BUS_ATTACHED)       // Is the USB cable attached and the
{ // host actively driving Vbus high?
        if(UCONbits.USBEN == 0)                 // Is the module off?
{
           USBModuleEnable();               // When Vbus is high, it is okay
        }   
} // to turn on the USB module.
    else
    {

        if(UCONbits.USBEN == 1)                 // Is the module on?
            {
            USBModuleDisable();         // If it is on, disable it
usb = 0; // so that the D+ or D- pull
} // up resistor no longer sources
// current onto D+ or D-.
// Note: You may get an "expression is always
// true" warning in some configurations.
// Ignore this warning, everything is ok.
    }//end if(usb_bus_sense...)
........

Como dije arriba esto no funciona. De la unica manera que detecta la desconexion del cable es si pongo a tierra el pin D+ o puenteo el capacitor que va desde el pin Vusb a masa. El sistema esta alimentado a baterias, usa dos en serie para tomar el punto medio como masa y tener +-9V(que con reguladores llevo a +-5V).
Estoy seguro que es un problema de referencias, ya que si en vez de baterias uso una fuente externa conectada a tierra, todo anda de mil maravillas; y si por ejemplo uso la misma fuente pero con una laptop sin el cargador deja de funcionar. Las masas del cable USB y mi plaqueta estan unidas.

Espero haber sido claro, si algo no se entendio diganme que tratare de aclararlo lo mejor que pueda. Desde ya muchas gracias! saludos!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Módulo USB no se apaga (problema de referencias de tension?)
« Respuesta #1 en: 03 de Junio de 2010, 15:36:25 »
De la unica manera que detecta la desconexion del cable es si pongo a tierra el pin D+ o puenteo el capacitor que va desde el pin Vusb a masa. El sistema esta alimentado a baterias, usa dos en serie para tomar el punto medio como masa y tener +-9V(que con reguladores llevo a +-5V).
Estoy seguro que es un problema de referencias, ya que si en vez de baterias uso una fuente externa conectada a tierra, todo anda de mil maravillas; y si por ejemplo uso la misma fuente pero con una laptop sin el cargador deja de funcionar. Las masas del cable USB y mi plaqueta estan unidas.

Hola

Cuando pones a tierra D+, en realidad el pic no detecta la desconexión del cable. Lo que sucede es que el pic y el host detectan un error en el bus y mejor cierran la comunicación USB.

Si puenteas el capacitor de VUSB a tierra en realidad estás cortocircuitando el regulador de 3.3V interno del PIC. A la larga podrías dañarlo y dejar inoperativo el módulo hardware de USB.

Sobre tu problema, pareciera que hay un capacitor entre C0 y algún otro punto, el cual almacena voltaje y mantiene en 1 el pin. Por ello talvez no se apaga el USB.

Te recomiendo que en tu programa coloques una salida a LED. Esa salida será el reflejo del pin C0. Si C0 tiene voltaje, prendes el LED por software. Así podrás ver realmente si C0 está cambiando su valor.

Desconectado chiten

  • PIC10
  • *
  • Mensajes: 5
Re: Módulo USB no se apaga (problema de referencias de tension?)
« Respuesta #2 en: 03 de Junio de 2010, 16:23:13 »
migsantiago, muchas gracias por responder tan rapidamente. A continuacion cito lo que me has dicho haciendo algunas aclaraciones para ver si ayudan, la verdad es que a estas alturas ya estoy bastante perdido  :(.


Citar
Cuando pones a tierra D+, en realidad el pic no detecta la desconexión del cable. Lo que sucede es que el pic y el host detectan un error en el bus y mejor cierran la comunicación USB.
Esto seria aun cuando haya desconectado el cable? yo lo desconecto y toco ya sea con un cable o apoyo el dedo sobre el pin D+ en la ficha hembra USB y desconecta.

Citar
Sobre tu problema, pareciera que hay un capacitor entre C0 y algún otro punto, el cual almacena voltaje y mantiene en 1 el pin. Por ello talvez no se apaga el USB.
Cuando desconecto el cable, directamente medi si C0 tiene tension y no tiene. Aun asi, forzando el puerto a masa tampoco se apaga el modulo.

Realmente me resulta muy extraño, es como si las referencias entre el USB y mi plaqueta fueran distintas, y que solo se igualan al usar fuetne de alimentacion con tierra y Pc conectada a tierra, nada que tenga baterias hace que funcione.
Agradezco nuevamente tu respuesta, mientras tanto seguiro leyendo a ver que encuentro. Saludos!


Te recomiendo que en tu programa coloques una salida a LED. Esa salida será el reflejo del pin C0. Si C0 tiene voltaje, prendes el LED por software. Así podrás ver realmente si C0 está cambiando su valor.
[/quote]

Desconectado chiten

  • PIC10
  • *
  • Mensajes: 5
Re: Módulo USB no se apaga (problema de referencias de tension?)
« Respuesta #3 en: 03 de Junio de 2010, 18:08:04 »
Bueno, sumado a todo lo anterior, ahora cuando quiere me da "error, dispositivo no reconocido"...sigo pensando que esto es un problema de referencia o ruido tal vez?? Si alguien tiene algunos tips para conexion de USB con PICs le estaria muy agradecido (entiendase, capacitores adicionales, orientacion de los componentes si sur o norte :P, etc etc  )...Desde ya muchas gracias :z)

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Módulo USB no se apaga (problema de referencias de tension?)
« Respuesta #4 en: 04 de Junio de 2010, 09:28:59 »
hace ya un tiempito que vengo trabajando con esto del USB y el 18F2455 y la verdad no me he puesto a ver el tema de detectar la conección o desconección.
Para hacer el circuito me he guiado en la Documentación de la PICDEM FS USB DEMO BOARD, y en el esquematico de la pagina 28 del documento 51526b.
http://ww1.microchip.com/downloads/en/DeviceDoc/51526b.pdf

Lo que dices del uso de baterias y las tierras la verdad que me genera dudas, voy a investigar un poco y cualquier cosa te comento.

Ahora se me ocurre, imagino que las baterias las usas porque tienes un amplificador operacional, has pensado en reemplazar las dos baterias con alimentación desde la PC con un cable desde los 12V? Y hacer una fuente con los dos niveles que necesitas de -6V y +6V.
Aqui tienes un circuito simple con un LM380, http://www.aaroncake.net/circuits/vinvertr2.asp
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado chiten

  • PIC10
  • *
  • Mensajes: 5
Re: Módulo USB no se apaga (problema de referencias de tension?)
« Respuesta #5 en: 05 de Junio de 2010, 01:12:46 »
hace ya un tiempito que vengo trabajando con esto del USB y el 18F2455 y la verdad no me he puesto a ver el tema de detectar la conección o desconección.
Para hacer el circuito me he guiado en la Documentación de la PICDEM FS USB DEMO BOARD, y en el esquematico de la pagina 28 del documento 51526b.
http://ww1.microchip.com/downloads/en/DeviceDoc/51526b.pdf

Lo que dices del uso de baterias y las tierras la verdad que me genera dudas, voy a investigar un poco y cualquier cosa te comento.

Ahora se me ocurre, imagino que las baterias las usas porque tienes un amplificador operacional, has pensado en reemplazar las dos baterias con alimentación desde la PC con un cable desde los 12V? Y hacer una fuente con los dos niveles que necesitas de -6V y +6V.
Aqui tienes un circuito simple con un LM380, http://www.aaroncake.net/circuits/vinvertr2.asp

Willy, gracias por tu respuesta! Estuve revisando la documentacion  del la PICDEM FS USB DEMO BOARD y encontre algunas diferencias con mi circuito pero que realmente no se si puedan llegar a ser la causa de mi problema.

Lo primero es que la resistencia en seria que va al pin de sensado es de 4.7k cuadno tengo puesta una de 100k, valor que saque de la hoja de datos de microcontrolador. Lo segundo son los pines 5 y 6 del conector USB que estan conectados a masa, yo creo que son los pines de la carcaza metalica a la que está conectado el mallado del cable, puede ser?. Bueno yo estos pines actuelmente los tengo desconectados, no estan puestos a la masa de mi ciruito, podra ser esto un problema?

La verdad que cada vez estoy mas convencido de que es un problema de referencias/ruido, porque jugando un poco me di cuenta tambien que el modulo USB se apaga cuando habiendo desconectado el cable lo muevo en distintos sentidos (OJO, muevo solo el tramo del medio, los conectores los dejo fijo).  He probado con otros cables y pasa lo mismo.

En cuanto a tu sugerencia del circuito de alimentacion te agradezco la sugerencia, no conocia ese modo de obtener alimentacion partida, actualmente necesito las dos baterias ya que es un dispositivo para transportar y usar sin la necesidad de estar conectado a una alimentacion externa.

Mientras sigo investigando a ver que puedo encontrar,  saludos!

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Módulo USB no se apaga (problema de referencias de tension?)
« Respuesta #6 en: 05 de Junio de 2010, 18:04:31 »
aja, imagino tu aplicación como que fuera un datalogger, por decirlo asi, un acelerometro que pones en la bicicleta, sales y recorres un tramo, luego vuelves y lo conectas a la PC y bajas esa informacion para procesarla.
Tonces lo que necesitas es que cuando lo enchufes entre en el modo usb solamente, me fijare si por ahi veo algo.

Por lo del tema de ruido, he hecho el circuito en mi placa segun la info de la PICDEM y nunca he tenido problemas, pero quizas como dices al usar esas baterias puede que sea el origen, aunque lo dudo porque las baterias no son fuente de ruido.
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado chiten

  • PIC10
  • *
  • Mensajes: 5
Re: Módulo USB no se apaga (problema de referencias de tension?)
« Respuesta #7 en: 05 de Junio de 2010, 23:34:54 »
Hola willynovi y gracias por contestar nuevamente. Mi aplicacion seria algo como lo que pensas con la opcion de que se puedan ver los resultados tambien en un display. Despues estaría la opcion para bajarlos o no a la PC para luego volver al programa principal. Por esto es que necesito alguna manera de salir del bucle del modulo USB, y la manera que se me ocurrio era con el pin de sensado que ademas me sirve para detectar alguna desconexion accidental del cable USB.

En el foro de microchip me han recomendado unos documentos acerca de el diseño de usb, les voy a pegar una leida a ver si me ayudan en algo. He leido unas recomendaciones de como conectar la carcaza del conector, las que vere de implementar porque me resulta raro que moviendo el cable haga lo que hace.

Como siempre seguire luchando a ver que sale, abajo dejo el link al post en el for de microchip. Saludos!



aja, imagino tu aplicación como que fuera un datalogger, por decirlo asi, un acelerometro que pones en la bicicleta, sales y recorres un tramo, luego vuelves y lo conectas a la PC y bajas esa informacion para procesarla.
Tonces lo que necesitas es que cuando lo enchufes entre en el modo usb solamente, me fijare si por ahi veo algo.

Por lo del tema de ruido, he hecho el circuito en mi placa segun la info de la PICDEM y nunca he tenido problemas, pero quizas como dices al usar esas baterias puede que sea el origen, aunque lo dudo porque las baterias no son fuente de ruido.