Thank you for your continuing support.
I've attached two images. Screen capture of the registers, and one of the stack variables.
These were taken when I broke the code while stuck in a loop waiting for the characters to return.
The device has one endpoint (1), for both, bulk in and out.
The qtd is linked to go from usb_qtd1 to usb_qtd3,(qdt2 was the data stage and was skipped, I was just trying to see if I could return any data whatsoever), usb_qtd3 has the ioc (interrupt on complete) bit set.
It seems to execute qtd1 (OUT transfer) successfully, but hangs on qtd3 (IN transfer)
Another note, we have a scope that can trigger on USB packets and I'm seeing a 1ms keep alive packet during idle being transfered, whicih I assume is a good thing.
Now, when the code hangs waiting for the IN transfer, I'm seeing on the scope a repeat transfer of about 5 us (micro seconds) in length and a repeat period of 8 us. It keeps the period going indefinitly and appears to be thrashing the USB device for the data. Is this correct operation of the host?
Thanks,
Mike
Edit: Pay attention to the USB_HOST_HWGENERAL and USB_HOST_HWHOST registers. They dont comply to what the datasheet displays and are read-only registers. Any insight on this?
Message Edited by Viper7 on
2008-01-15 03:55 PM