Доброго времени суток!
Помогите отладить USB для AT91SAM7X-EK!
Суть проблемы. Устройство должно работать с конечными точками Interrupt, BULK-OUT, BULK-IN (соответственно эндпоинты 1,2,3). Устройство определяется, устанавливается конфигурация, но посылки, отправляемые хостом, не доходят. При этом в регистре статуса точки BULK-OUT появляется мусор. Для эксперимента в качестве BULK-OUT использована нулевая точка - обмен идет нормально. Тот же код для ненулевой точки оказывается нерабочим.
Код:
~
if (*AT91C_UDP_ISR & 1) usbread();
~
char a[8];
void usbread(void)
{
for (i=0;i<8;i++)
/* присылается по 8 байт, поэтому AT91C_UDP_RXBYTECNT не считывается */
{
a[i]=*AT91C_UDP_FDR;
}
*AT91C_UDP_CSR &= ~(1<<1);
}
Что сделано не верно?