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

 
 
> USB HID LPC1343
IgorAVR2
сообщение Feb 8 2011, 21:41
Сообщение #1


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

Группа: Участник
Сообщений: 153
Регистрация: 29-05-08
Пользователь №: 37 901



В LPC1343 есть встроенный драйвер USB HID устройства. Всё хорошо, всё работает, только есть вот одно но...

Процедура GetInReport, от которой идут данные в компьютер, вызывается с заданным интервалом по таймеру. То есть с определённым интервалом пакеты уходят в компьютер. Как сделать что бы репорты уходили не с определённым интервалом, а только тогда, когда мне это нужно, то есть тогда когда у меня есть данные на отправку? Так например работает мышка: двигаем - пошли пакеты, перестали двигать - пакеты не уходят. И как это организованно в других мк с USB при реализации HID?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
goodwin
сообщение Apr 24 2012, 12:03
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267



Да - все в библиотеках.

ЗЫ:
Несколько строчек - пара десятков байт кода и все становится гораздо кузявее wink.gif
Program Size: Code=790 RO-data=426 RW-data=20 ZI-data=540 гораздо приятственнее чем 6 кБ кода RL.
Магическая цифирька 0x10 простительна - вряд ли ROM изменится...
Ну еще возможно надо проконтролировать в prepare_send () ушли ли предыдущие данные...

Код
#define INT_IN_EP 0x10     // это бит прерывания Input Report
#define CCEMTY_INT          (0x1<<10)
#define CMD_SEL_EP_CLRI(x) (0x00400500 | ((x) << 16))

uint8_t fl_send=0; // флаг посылки данных

void WrCmd (uint32_t cmd) {
  LPC_USB->DevIntClr = CCEMTY_INT;
  LPC_USB->CmdCode = cmd;
  while ((LPC_USB->DevIntSt & CCEMTY_INT) == 0);
}

USB_IRQHandler(void)
{
uint32_t  disr;
  
  disr = LPC_USB->DevIntSt;          
   /* Device Interrupt Status */
  if ((disr & INT_IN_EP) && (!fl_send))  // тут проверим кинунуть гада или таки послать данные
  {
   LPC_USB->DevIntClr = disr & INT_IN_EP;    // сбросим флаг прерывания
   WrCmd(CMD_SEL_EP_CLRI(INT_IN_EP>>1));    // в железе тоже
  }
  else (*rom)->pUSBD->isr();

}

/*
*  Get HID Input Report -> InReport
*/
void GetInReport (uint8_t src[], uint32_t length) {  
fl_send=0; // сбросим флаг посылки данных
  // здесь делаем , что надо
return;
}

void prepare_send (void)
{
   fl_send=1;                       // взведем флаг посылки двнных
   LPC_USB->DevIntSet|=INT_IN_EP; // взведем флаг прерывания GetInReport
}

/*
*  Set HID Output Report <- OutReport
*/
void SetOutReport (uint8_t dst[], uint32_t length) {
  // здесь делаем , что надо...
  
    prepare_send();    //  для примера тут инициируем посылку данных в ответ...
    return;
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- IgorAVR2   USB HID LPC1343   Feb 8 2011, 21:41
- - kovigor   Цитата(IgorAVR2 @ Feb 9 2011, 01:41) Как ...   Feb 9 2011, 09:07
- - IgorAVR2   Да в том то и дело, что данные для отправки я клад...   Feb 9 2011, 22:38
|- - kovigor   Цитата(IgorAVR2 @ Feb 10 2011, 01:38) Да ...   Feb 10 2011, 07:22
- - IgorAVR2   Да я уже всё досканально разобрал, всё по сто раз ...   Feb 10 2011, 07:30
|- - kovigor   Цитата(IgorAVR2 @ Feb 10 2011, 10:30) Да ...   Feb 10 2011, 07:36
|- - IgorAVR2   Цитата(kovigor @ Feb 10 2011, 10:36) А от...   Feb 10 2011, 20:13
- - EXeGLuMATOR   Ковырялся тоже с этим камушком. Тут дело в другом...   Feb 21 2011, 22:57
|- - IgorAVR2   Цитата(EXeGLuMATOR @ Feb 22 2011, 01:57) ...   Feb 27 2011, 21:40
|- - kovigor   Цитата(IgorAVR2 @ Feb 28 2011, 00:40) Нас...   Feb 28 2011, 09:02
|- - IgorAVR2   Цитата(kovigor @ Feb 28 2011, 12:02) Прос...   Feb 28 2011, 14:24
- - goodwin   Подниму тему... Писателям этого ROM HID драйвера ...   Apr 22 2012, 07:42
- - goodwin   Попробовал подлезть и так, и эдак. Код в ROM не по...   Apr 24 2012, 07:14
- - esaulenka   goodwin, подскажите, в RL-ARM стали исходники USB ...   Apr 24 2012, 11:21


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 04:56
Рейтинг@Mail.ru


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