Attempting to reuse the USB library code and the code example for the virtual com port and basically the system (with a few changes) works as expected. However, we have a situation where sometimes when the host cannot unload the data fast enough from the device (i.e. the comm program running on the PC is running slow) that the USB system gets hung with USB_Tx_State high, the STAT_TX bits set such that transmissing should be running but the controller NACKing the host. We've tried isolating the issues between foreground and background (interrupt) manipulation of the common variables, but we still run into this problem. So, how can the STAT_TX bits be set (11) and the device still NACK the host?