Перейти к содержанию
    

Работа USB через прерывания

Пытаюсь переделать образец с AT91.com для работы через прерывания. В половине случаев при старте возникает Spurious Interrupt. Есть предположение что как-то неправильно включаю превывание от endpoint0. Посмотрите, может кто сталкивался

 

void UDP_interrupt()

{

AT91_REG isr = pUDP->UDP_ISR;

isr &= pUDP->UDP_IMR;

 

if (isr & AT91C_UDP_ENDBUSRES) {

pUDP->UDP_ICR = AT91C_UDP_ENDBUSRES;

 

// reset all endpoints

AT91C_BASE_UDP->UDP_RSTEP = (unsigned int)-1;

AT91C_BASE_UDP->UDP_RSTEP = 0;

// Enable the function

pUDP->UDP_FADDR = AT91C_UDP_FEN;

 

//__disable_interrupt();

AT91C_BASE_UDP->UDP_CSR[0] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_CTRL);

AT91C_BASE_UDP->UDP_IER = (AT91C_UDP_EPINT0);

// __enable_interrupt();

}

 

if (isr & AT91C_UDP_EPINT0) {

pUDP->UDP_ICR = AT91C_UDP_EPINT0;

AT91F_CDC_Enumerate();

}

};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пытаюсь переделать образец с AT91.com для работы через прерывания. В половине случаев при старте возникает Spurious Interrupt. Есть предположение что как-то неправильно включаю превывание от endpoint0. Посмотрите, может кто сталкивался

 

void UDP_interrupt()

{

AT91_REG isr = pUDP->UDP_ISR;

isr &= pUDP->UDP_IMR;

if (isr & AT91C_UDP_ENDBUSRES) {

Помнится в UDP_IMR нету битика AT91C_UDP_ENDBUSRES - сброс шины событие немаскируемое. Соответственно, Ваш обработчик после 'isr & pUDP->UDP_IMR' событие сброса не видит -> ложное прерывание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался, может кому интересно:

В образеце не сбрасывался флаг AT91C_UDP_RX_DATA_BK0, поэтому прерывание генерилось постоянно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...