Slacker,
Thanks for the reply. This forum is refreshing in that the people are helpful and actually respond. The Cypress forum has such little traffic that most threads are orphaned, i.e., zero or one replies. Not much to be learned from. Anyways, regarding your suggestions.....
--- Quote Start ---
originally posted by slacker@Jul 18 2006, 09:48 PM
how are you determining that you have data available (polling or interrupt-driven)? --- Quote End ---
At this point there's an interrupt from the USB chip, CY68c0001?, saying data is available. The ISR sets a data available flag. In the main program, the flag is noted and the endpoint FIFO is read into a buffer until the FIFO is empty noting the number of words read. The buffer is then written using that word count. As absurd as this sounds, the printf statement seems to affect the word count.
<div class='quotetop'>QUOTE </div>
--- Quote Start ---
Have you considered using a DMA to process this? It seems like it would make sense to do so..... or design the DMA/streaming capability into your USB peripheral(s) itself. In this way, you'd just use the processor to configure your endpoints and then wait for interrupts from them (or your DMA).
Cheers,
- slacker
<div align='right'><{post_snapback}> (index.php?act=findpost&pid=16999)
--- Quote End ---
[/b]
--- Quote End ---
That's a possibility to try. At this point, this loopback feature is simply a test to learn the ins and outs of the USB chip and to exercise Windows to see its limitations. Since this is a learning exercise, I may try the DMA just to see what happens. However, I'd still like to understand what's going on with these other problems.
When I get into my office, I'll post a few lines of code here to see if anyone sees anything obvious is wrong. Our programmer at the lab didn't see anything.
thanks.
steve