Затык на самом начале. Принял запрос usb_get_descriptor и отдаю DEVICE DESCRIPTOR. Вот как в атмеловской аппликухе (и HID-проект,
и CDC одинаково):void usb_get_descriptor(void)
{
// Подготавливаем запрошенный дескриптор....
// ................................
// ................................
// Отсылаем нужный дескриптор попакетно
while( (data_to_transfer != 0) && ( !Is_usb_receive_out() ) )
{
..........................
..........................
Usb_send_control_in();
}//while
//!!!!!!!!!!!!!!!!!!!! Первый вопрос: зачем этот плевок??????
Usb_send_control_in();
//!!!!!!!!!!!!!!!!!!!!
if(Is_usb_receive_out()) { Usb_ack_receive_out(); return; }
// Отсылаем посылку без данных, если были полные пакеты
// ..............
// ..............
//!!!!!!!!!!!!!!!! Второй и главный вопрос: зачем это ждать?
//!!!!!!!!!!!!!!!! У меня тут висит. Что может быть не так?
while( !Is_usb_receive_out() );
Usb_ack_receive_out();
}