Estoy transmitiendo una matriz de búfer desde el USB incorporado de los controladores PIC 18F y lo envío a una GUI. Soy capaz de detectar el dispositivo correctamente (enumeración). Pero la interfaz gráfica de usuario se bloquea algunas veces, sin ninguna razón.
Supongo que es un problema de transmisión / interrupción, ya que cada vez que envío un número constante no se bloquea. Pero siempre que hago una operación de ADC y envío el valor correspondiente a través de USB, se bloquea.
Esto supuso que la transmisión USB o el manejo de interrupciones deben manejarse correctamente.
Soy nuevo en el protocolo USB y probé con este código de trabajo.
No tengo ningún problema con respecto a la enumeración, pero cuando se transmite, se produce el bloqueo.
El formato del código es:
main()
{ usbinit(); // usb initialization
while(1)
{
x=do_adc();
UsbTasks(); // does usb works
yourtasks();//sends the buffer
}
}
Me gustaría entender cuál podría ser la causa detrás de este comportamiento anómalo.
Como se indica a continuación en los comentarios, la pila USB está configurada para la configuración de sondeo. ¿Cómo debo gestionar la lectura de ADC?
Si lo hago:
while(1)
{
UsbTasks(); // does usb works
x=do_adc();
yourtasks();//sends the buffer
}
¿Hará algún cambio? ¿O no es esta la mejor manera de enviar valores ADC?