При всем уважении и usb2 читал и в ореховой скорлупе читал Инициируемм ендпойнты пралльно по спецификации (изменяем пример, добавляем ендпойнт с соответствующими параметрами):
/* Endpoint 1 descriptor */ 0x07, // bLength 0x05, // bDescriptorType 0x00 + EP_NUMBER_OUT, // bEndpointAddress, Endpoint 01 - OUT 0x03, // bmAttributes INT 0x20, // wMaxPacketSize 0x00, 0x0A, // bInterval /* Endpoint 2 descriptor */ 0x07, // bLength 0x05, // bDescriptorType 0x80 + EP_NUMBER_IN, // bEndpointAddress, Endpoint 01 - IN 0x03, // bmAttributes INT 0x20, // wMaxPacketSize 0x00, 0x0A // bIntervalИ что же мы видим в функции енумерации:
if (wIndex == 1) pUDP->UDP_CSR[1] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_OUT); else if (wIndex == 2) pUDP->UDP_CSR[2] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_IN); else if (wIndex == 3) pUDP->UDP_CSR[3] = (AT91C_UDP_EPEDS | T91C_UDP_EPTYPE_ISO_IN); AT91F_USB_SendZlp(pUDP);Замечу, что ни EP2, ни EP3 в примере не пользуются, а тип EP2 в регистрах контроллера при прохождении программы по некоторым веткам меняется. До приведения в соответствие кода, так ничего толком и не заработало. ЗЫ1: Почему неделю ? Потому что по обеденным перерывам :) ЗЫ2: Таки непонятно, не разу не видел от вас вопросов ЗЫ3: До этого делал аналогичную еконфигурацию на пик18м контроллере ЗЫ4: На счет баранов, новых ворот и космической глупости я бы поосторожнее высказывался :)