I think that most of my USB problems are solved now!
I rewrote the USB Out routine as such:
- Fist step is to calculate how many bytes are used in the string (not = 0)Code:'******************************************************* 'Writing data to USB port '******************************************************* DoUSBOut: USBBufferSizeTX = 0 FOR Counter = 1 TO USBBufferSizeMax 'Calculate number of valid bytes within the string IF USBBuffer [Counter - 1] > 0 THEN USBBufferSizeTX = USBBufferSizeTX + 1 NEXT Counter IF TX_READY THEN 'USB data can be transmitted TX_READY = 0 'Clear USB data send flag USBOUT 3, USBBuffer, USBBufferSizeTX, DoUSBOut ENDIF FOR Counter = 1 TO USBBufferSizeMax 'Clear the USB buffer after data has been sent USBBuffer [Counter - 1] = 0 NEXT Counter RETURN
- Second, sending data
- third, blanking the data buffer for next operation
I have no more garbage data in my strings, and I was able to remove the Pause without any data loss. Transmission is very fast now, with over 10kB/s (I have large conversion routines between my DoUSBOut, could even be faster without these).
Now onto other problems, especially getting all the interrupts to work together,and implementing ADC and ultra-low power routine.
What about publishing the generic code for CDC? I'll let you decide since it is actually minor modification to code you have written.




Bookmarks