Algo que a mi me ha causado mucho interés es entender esto:
//// usb_cdc_connected() - Returns TRUE if we received a ////
//// Set_Line_Coding. On most serial terminal programs (such ////
//// as Hyperterminal), they will send a Set_Line_Coding ////
//// message when the program starts and it opens the virtual ////
//// COM port. This is a simple way to determine if the PC ////
//// is ready to display data on a serial terminal program, ////
//// but is not garaunteed to work all the time or on other ////
//// terminal programs. ////
Viene en la librería usb_cdc.h de CCS. En el ejemplo de CDC se implementa esta función y el programa solo funciona si en la hyperterminal se abre el puerto. Supuestamente la hyperterminal envía un mensaje Set_Line_Coding, pero no sé qué sea ni cómo llegue.
No creo que llegue por una cadena serial, ha de llegar por otro endpoint del usb.
En fin, te recomiendo que hagas esta prueba... una vez que el CDC ya fue reconocido por Windows ejecuta esto:
usb_cdc_got_set_line_coding = true; //simula lo que la hyperterminal envía
Otro software de manejo de puertos seriales no envía ese mensaje de set_line_coding, talvez ése sea tu caso.