Работаю с USB на основе Atmel BasicUSB, правда с переделками:
1. Конечных точек четыре.
2. Драйвер не атмеловский, а сгенерированный из пакета libusb
(с атмеловским драйвером не смог работать с несколькими конечными точками).
Подскажите , как организовать работу по прерываниям - пришла посылка в ендпоинт - появилось прерывание?
Пытался просто включить прерывания - все перестает работать .
вот кусок кода по включению прерывания (IAR)-
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,
AT91C_ID_UDP,
AT91C_AIC_PRIOR_HIGHEST, // Max priority
AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, // Level sensitive
AT91F_UDP_Handler); // C Handler
AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_UDP);
после этого надо бы задать флаги прерываний для источника в регистре UDP_IER :
AT91F_UDP_EnableIt(AT91C_BASE_UDP,AT91C_UDP_EPINT1);
// то есть UDP_IER= AT91C_UDP_EPINT1;
но даже без этого софт перестает обмениваться с железкой ... то есть он ее видит , открывает , но с записью и чтением - никак...
пробовал вместо включения флагов все их выключить -
AT91F_UDP_DisableIt(AT91C_BASE_UDP,0x0000ffff);
- результат тот же, что делать ?