реклама на сайте
подробности

 
 
> Si8051F320 от SiLabs and USB, Передача данных USB_Bulk, прерывание
Kaplinsky
сообщение Sep 27 2005, 15:08
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 97
Регистрация: 26-05-05
Из: Киев, Украина
Пользователь №: 5 426



В даташите к 320-й написано что бит INPRDY (EINCSRL.0) устанавливается програмно а очищается аппаратно. В примере USB_Bulk, в функции BulkOrInterruptIn(...) есть такой кусочек:
Цитата
      // If a FIFO slot is open, write a new packet to the IN FIFO
      if (!(bCsrL & rbInINPRDY)){
        pEpInStatus->uNumBytes = NumBytes;
        pEpInStatus->pData = (BYTE*)DataToWrite;

        // Write <uNumBytes> bytes to the <bEp> FIFO
        FIFOWrite(pEpInStatus->bEp, pEpInStatus->uNumBytes,(BYTE*)pEpInStatus->pData);

        // Set Packet Ready bit (INPRDY)
        UWRITE_BYTE(EINCSRL, rbInINPRDY);
      }


Короче говоря у меня на второй раз этот кусок затыкается - при первой проверке у меня FIFO slot NOT is open

Я же вызываю функцию BulkOrInterruptIn(...) из функции main().
И по идее после того как произойдет передача буфера FIFO вызовется прерывание. КАК ЕГО ОБРАБАТЫВАТЬ ?
Что нужно делать в USB_ISR()
Цитата
void USB_ISR () interrupt 8{
  ....
  // Endpoint1 IN
  if (bInInt & rbIN1){
              ЧТО ДЕЛАТЬ СДЕСЬ ???
    }
  ....
}

cranky.gif


--------------------
Смотреть в себя, зреть муки свои, зная, что сам ты виновник мук - вот истинное страдание.
Отладка / Софокл, "Аякс".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016