I'm implementing some very simple class specific (USBTMC class) setup requests on the FX2LP. I get a SUDAV interrupt, check for the class request flag in SUDAV, and if it's there I decode the request and send back a one or two byte payload to EP0 depending on the request. Very simple and straightforward and 80% of the time this works fine.
HOWEVER, 20% of the time there is a 1-10 second delay between the setup transaction and the receipt of the SUDAV interrupt. I can see the setup transaction on my protocol analyzer. It completes, including the ACK, in a couple of usec and occurs exactly after I send the request from the host. But the corresponding interrupt (which I detect by toggling an output bit in the interrupt routine), which is supposed to happen right after the ACK, doesn't occur for multiple seconds (variable between 1-10) afterword.
Does anyone have any idea what could be causing this? The time scale of the delay, multiple seconds, is kind of baffling. what could be holding off the interrupt that long? I've enabled the SUTOK interrupt and it's delayed as well.
Thanks in advance,