Autor Tema: La comunicación PIC-USB se me corta (a veces) :(  (Leído 3949 veces)

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

Desconectado caragones

  • PIC10
  • *
  • Mensajes: 6
La comunicación PIC-USB se me corta (a veces) :(
« en: 16 de Noviembre de 2011, 11:22:16 »
Hola,

tengo un serio problema con la comunicación PC <--> PIC-USB.   :(

Lo que estoy intentando hacer es comunicar un ordenador Intel Atom (Windows 7) con un dispositivo externo mediante USB. Y el problema es que, de vez en cuando, la comunicación se corta y no tengo idea de como solucionarlo. El problema es que se suele cortar después de varias horas, con lo que es muy difícil depurar y encontrar el error. De hecho, no creo que el error esté en mi código.

El dispositivo lo ha creado una empresa externa, utilizando un PIC de la familia 18F, por lo que no tengo acceso al código que va en el PIC (aunque tampoco tengo experiencia en programación de PICs, ya que no se nada de electrónica).

Para comunicarme con el dispositivo estoy utilizando Visual C++, los drivers WinUSB y la librería MPUSBAPI de Microchip (versión 6.0).

Básicamente la aplicación tiene varios threads, uno de ellos dedicado en exclusiva a comunicarse con el dispositivo USB. Para no pegar código, ya que puede ser largo, diré que la aplicación se comunica con el dispositivo USB cada vez que una persona pisa sobre una cosa y toca un botón (es decir, pseudo-aleatoriamente). A partir de ese momento se registran una serie de pisadas del usuario en diferentes posiciones (pongamos menos de 100) y después se corta la comunicación con el dispositivo USB. Y esperamos a la siguiente persona.

¿Alguna sugerencia?

----

Casi todos los ejemplos que he visto de comunicación USB con PICs se limitan a enviar/recibir dos o tres paquetes realizando alguna operación. ¿Pero que pasa después de varias horas de comunicación? ¿A alguien más se le pierden paquetes?

He comprobado que no es nada bueno abrir y cerrar los puertos de comunicación cada vez que me comunico con el dispositivo USB (se cuelga más veces), por los que los cierro sólo cada cierto tiempo.
Además, cuando se cuelga el dispositivo hay que reiniciar el ordenador!!! No sirve ni cerrar el programa, ni desconectar el USB  :shock:


Gracias por vuestra ayuda!

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #1 en: 16 de Noviembre de 2011, 12:05:18 »
creo que hay una opcion para desconectar el usb a x tiempo para ahorrar energia, creo que venia en windows, mira la configuracion de los puertos usb. De todas formas seria en caso de inactividad, si se estan mandando datos constantemente no deberia entrar en modo sleep.

Desconectado caragones

  • PIC10
  • *
  • Mensajes: 6
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #2 en: 16 de Noviembre de 2011, 14:20:48 »
Hola,

gracias por tu respuesta!

A parte de la 'comunicación normal', el dispositivo envía un 'PING' cada cierto tiempo y yo le respondo con un 'ACK'. Por lo que no creo que sea eso.  :(

¿Alguna otra sugerencia?

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #3 en: 16 de Noviembre de 2011, 15:15:39 »
Puede ser por falta de respuesta dentro del intervalo por parte del uC.
Me ha pasado que si no atiendo lo suficientemente seguido a los endpoints del usb para leerlos, la comunicación USB falla aleatoriamente. Podrías probar leyendo/escribiendo los endpoints del USB más seguido desde el uC a ver si te sigue sucendiendo.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #4 en: 16 de Noviembre de 2011, 15:53:12 »
Utilizas interrupción o polling?
No contesto mensajes privados, las consultas en el foro

Desconectado caragones

  • PIC10
  • *
  • Mensajes: 6
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #5 en: 17 de Noviembre de 2011, 07:23:45 »
Puede ser por falta de respuesta dentro del intervalo por parte del uC.
Me ha pasado que si no atiendo lo suficientemente seguido a los endpoints del usb para leerlos, la comunicación USB falla aleatoriamente. Podrías probar leyendo/escribiendo los endpoints del USB más seguido desde el uC a ver si te sigue sucendiendo.

Saludos.

Disculpa, pero no entiendo lo que me dices  :oops: podrías aclararmelo un poco, darme un ejemplo?

Desconectado caragones

  • PIC10
  • *
  • Mensajes: 6
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #6 en: 17 de Noviembre de 2011, 07:28:47 »
Utilizas interrupción o polling?

Interrupción

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #7 en: 17 de Noviembre de 2011, 10:06:35 »
Puede ser por falta de respuesta dentro del intervalo por parte del uC.
Me ha pasado que si no atiendo lo suficientemente seguido a los endpoints del usb para leerlos, la comunicación USB falla aleatoriamente. Podrías probar leyendo/escribiendo los endpoints del USB más seguido desde el uC a ver si te sigue sucendiendo.

Saludos.

Disculpa, pero no entiendo lo que me dices  :oops: podrías aclararmelo un poco, darme un ejemplo?

En C18, si se usa polling, significa llamar con suficiente periodicidad a la función USBDeviceTasks(). También a la función que trabaja con los datos enviados/recibidos. Otro problema puede ser ruido en el cable USB, un usuario del foro tenia un problema similar y lo solucionó agregando un toroide de ferrita al cable USB.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado caragones

  • PIC10
  • *
  • Mensajes: 6
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #8 en: 17 de Noviembre de 2011, 10:13:25 »
Al parecer funciona por interrupción.

Muy interesante lo del toroide ^_^

Desconectado fenixariel

  • PIC10
  • *
  • Mensajes: 39
    • www.delphiandpic.jimdo.com
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #9 en: 17 de Noviembre de 2011, 13:23:18 »
Ahora si dices que el dispositivo se compro, ni como descartar algun problema en el firmware o en el circuito, se asume que todo en esa parte esta perfecto(por eso se pago).............siempre me pasaba que cuando olvidaba poner los condensadores de desacoplo correctos o los condensadores con el valor incorrecto en VUSB, despues de estar el dispositivo trabajando bien y luego de cierto tiempo el sistema operativo quitaba la coneccion.

Cuando se supera cierto rango de tencion en los pines que se conenctan a la PC(v+v-d+d-), el sistema operativo por seguridad digamos expulsara el dispositivo..............y te lo dira.

Que tal si conectas el dispositivo sin ejecutar tu programa, y vas viendo si aun asi se va la comunicacion(en el administrador de dispositivos). Al insertar el dispositivo el SO inicia la comunicacion y la mantiene asi este o no tu programa presente.

Saludos............

Desconectado caragones

  • PIC10
  • *
  • Mensajes: 6
Re: La comunicación PIC-USB se me corta (a veces) :(
« Respuesta #10 en: 17 de Noviembre de 2011, 14:15:06 »
Ahora si dices que el dispositivo se compro, ni como descartar algun problema en el firmware o en el circuito, se asume que todo en esa parte esta perfecto(por eso se pago).............siempre me pasaba que cuando olvidaba poner los condensadores de desacoplo correctos o los condensadores con el valor incorrecto en VUSB, despues de estar el dispositivo trabajando bien y luego de cierto tiempo el sistema operativo quitaba la coneccion.

Bueno, me puedo poner en contacto con la otra empresa y comentarles cualquier cosa que pueda ayudar.

Cuando se supera cierto rango de tencion en los pines que se conenctan a la PC(v+v-d+d-), el sistema operativo por seguridad digamos expulsara el dispositivo..............y te lo dira.

Cómo me lo dice? Al PC o al PIC?
Esto me interesa mucho!

Que tal si conectas el dispositivo sin ejecutar tu programa, y vas viendo si aun asi se va la comunicacion(en el administrador de dispositivos). Al insertar el dispositivo el SO inicia la comunicacion y la mantiene asi este o no tu programa presente.

Muy buena idea!

Un abrazo!


 

anything