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

 
 
> lpcusb_lp2148 + FreeRTOS, не могу вынести обработку транзакций в код задач...
klen
сообщение Feb 7 2008, 18:24
Сообщение #1


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Здравствуйтею
Мурыжусь с lpc2148 и USB стеком(http://sourceforge.net/projects/lpcusb) для ее USB модуля. Со стороны PC тестируется с помощю прилагуха+ драйвер libusb(http://sourceforge.net/projects/libusb-win32)

в примерах для lpcusb есть два варианта
1. Не пользуем прерывания, полим в цикле обработчик, применительно к задачкам FreeRTOS :
Код
TTaskHandle UsbTaskHandle;
void UsbTaskCode( void * Parameters )
{
  (void)Parameters; // обход предупреждений
  UsbDevInit( false , 0 , 0 );   // инициализация USB без использования прерываний
  while(1)
   {
      USBHwISR();  // обработка текущих запросов USB если они есть
      TaskYield();    // переключение контекста
   }
}

2. В торой вариант с участием прерываний
Код
static void _APP_IRQ_ATTR_ USBIntHandler(void)
{
   USBHwISR();  // обработка текущих запросов USB вызвавших прерывание
   VICVectAddr = 0x0;    // сброс VIC
}
TTaskHandle UsbTaskHandle;
void UsbTaskCode( void * Parameters )
{
  (void)Parameters; // обход предупреждений
  uint8_t DeferredUsbIntStatus;
  UsbDevInit( true , 15 , (uint32_t) USBIntHandler );   // инициализация USB c отработкой запросов в прерываниях
   //UsbDevInit( false , 0 , 0 );  // инициализация USB c отработкой запросов методом полинга
  while(1)
   {
       TaskSuspend(NULL);  // задачке ниче делать не надо
   }
}


Все работает, все замечательно но коряво:
1. в первом случае тратится время на полинг.
2. во втором процссор обрабатывает данные в режиме IRQ, косяГ..

хчется сделать как в книгах про светлое и чистое - в обработчике IRQ в том или ином виде реагировать лишь на флаги прервываний модуля USB, а обработку транзакции вести отложенно в зажаче. Примерно так же как в TNKernel-примере.

Непоучаеццо, мож кто уже сделал? Пример c TNKernel не предлагать - смотрел,
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 06:46
Рейтинг@Mail.ru


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