Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91SAM7 USB помогите с прерываниями - ничего не понимаю.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
cebotor
Работаю с 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);
- результат тот же, что делать ?
cebotor
сглупил я - неправильно так -
Цитата(cebotor @ Apr 6 2007, 14:25) *
AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, // Level sensitive

правильно так -
AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE // Level sensitive
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.