We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm seeing behaviour where an EPEC transfer will end early during the microcontroller's receipt of a packet over the USB. It's a 64 byte EPEC transfer that has been set up to handle a 64 byte USB packet. I get a variable number of bytes being transferred (typically in the 20s). The data sheet says that the EPEC injects MOVs into the instruction pipeline. I can 'fix' the problem completely (i.e. all 64 bytes are transferred) if I artificially hold the micro in a tight 'while(1);' loop during the EPEC transfer, but as soon as it's doing something more complicated like accessing memory it drops out. This is day 3 now and I really don't get it. Anyone got any ideas? James
After many hours I seem to have found the problem. I discovered that bus accesses on my code segment included a whole bunch of unnecessary wait-states that was slowing the CPU right down. So much so that the USB receive FIFO wasn't being serviced often enough and was dropping bytes. James