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

 
 
> STM32F439 + USB мышь, Не работает
hd44780
сообщение Nov 29 2015, 16:14
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Привет всем.

Вот уже пару недель (непостоянно конечно rolleyes.gif ) пытаюсь завести USB мышку на USB хосте STM32F439.
Использовал СТ-шные либы и частично переделанные библиотеки немца - http://mikrocontroller.bplaced.net/wordpress/?page_id=2991
Результаты весьма плачевные - проверял на 3-х мышах:
1. (какой-то Logitch) не опознаётся, обламывается где-то на этапе энумерации. Там я не копался, забил пока на неё.
2. Logitech RX250 (PS2+USB) и Terratech mouse опознаются с полпинка, но ведут себя как пьяный заяц на дороге - даже если мыша просто лежит
на столе без движения, координаты как-то странно скачут, в подавляющем большинстве случаев в сторону увеличения, довольно быстро упираются
в заданные мною максимумы, на чём всё и замирает. Кнопки вроде нормально отрабатывают, но с задержкой в несколько секунд - от одной до 10 (на глаз).

Ну и ещё один общий вопрос.
В HID ядре прописана некая частота опроса мыши (HID устройства):
CODE
if ( HID_Machine.poll < HID_MIN_POLL)
{
HID_Machine.poll = HID_MIN_POLL;
} // if
....................

case HID_POLL:
t= HCD_GetCurrentFrame ( pdev ) - HID_Machine.timer;
if ( t >= HID_Machine.poll )
{ // прошло больше HID_Machine.poll SOF-ов
HID_Machine.state = HID_GET_DATA;
}
else if ( HCD_GetURB_State ( pdev, HID_Machine.hc_num_in ) == URB_DONE )
{
// handle data once
if ( start_toggle == 1 )
{
start_toggle = 0;
HID_Machine.cb->Decode ( HID_Machine.buff );
} // if
} // if
else if ( HCD_GetURB_State(pdev, HID_Machine.hc_num_in) == URB_STALL ) /* IN Endpoint Stalled */
{
/* Issue Clear Feature on interrupt IN endpoint */
if ( USBH_ClrFeature ( pdev, pphost, HID_Machine.ep_addr, HID_Machine.hc_num_in ) == USBH_OK )
{
/* Change state to issue next IN token */
HID_Machine.state = HID_GET_DATA;
}
} // if
break;


Зачем это сделано - понятно, но по факту это выполнимо только если проц выполняет один только USBH_Process(&USB_OTG_Core_dev, &USB_Host);в главном цикле. А если надо делать ещё что-то? Та же немецкая либа в чистом виде у меня не пошла именно из-за условия if ( t >= HID_Machine.poll )
Можно вызывать USBH_Process в каком-нибудь таймере, но я не знаю, насколько безопасно вызывать эту функцию в прерывании.

У кого-то USB-мышки работают? Может кто-то помочь?
Приложил свой проект, посмотрите кто может пожалуйста. На кокосе.
Спасибо.

PS.
USB клавиатуру я не пробовал, хотя и не вырезал.
Прикрепленные файлы
Прикрепленный файл  STM32F4x9_HID.zip ( 347.22 килобайт ) Кол-во скачиваний: 14
 


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
hd44780
сообщение Dec 3 2016, 09:08
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Нашёл я, как это отловить, добавил туда свой флажок. В итоге курсор мыши при отвале лишь замирает менее чем на полсекунды (пока реинит хост не пройдёт), после чего нормальная работа возобновляется.

Самое интересное, что USB ядро такие случаи отрабатывает абсолютно корректно, а в USB HID драйвер просто забыли добавить обработку этого случая. Хотя может забыли вполне сознательно, т.к. у них даже при простом выдёргивании девайса хост тупо виснет и не перезапускается.

Пока проблема решена, понаблюдаю за стабильностью.

mantech , спасибо за наводку.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- hd44780   STM32F439 + USB мышь   Nov 29 2015, 16:14
- - mantech   Цитата(hd44780 @ Nov 29 2015, 19:14) У ко...   Nov 29 2015, 17:00
|- - kovigor   Цитата(mantech @ Nov 29 2015, 21:00) Не у...   Nov 29 2015, 17:24
|- - aaarrr   Цитата(mantech @ Nov 29 2015, 20:00) Не у...   Nov 29 2015, 17:52
|- - mantech   Цитата(aaarrr @ Nov 29 2015, 20:52) Прави...   Nov 29 2015, 18:11
|- - aaarrr   Цитата(mantech @ Nov 29 2015, 21:08) Толь...   Nov 29 2015, 18:13
|- - mantech   Цитата(aaarrr @ Nov 29 2015, 21:13) Увы, ...   Nov 29 2015, 18:15
- - hd44780   Спасибо за ответы. С энумерацией понятно вроде. Гд...   Nov 30 2015, 12:54
|- - mantech   Цитата(hd44780 @ Nov 30 2015, 15:54) Спас...   Nov 30 2015, 14:22
- - hd44780   Ок. Буду смотреть.   Nov 30 2015, 14:54
- - hd44780   Скачал отсюда - https://www.lpcware.com/content/pr...   Dec 1 2015, 17:36
|- - mantech   Цитата(hd44780 @ Dec 1 2015, 20:36) Скача...   Dec 1 2015, 17:45
- - hd44780   ага. нашёл. спасибо.   Dec 1 2015, 17:48
- - hd44780   Накурился я этой хрени ... голова кругом Report...   Dec 23 2015, 19:09
|- - mantech   Цитата(hd44780 @ Dec 23 2015, 22:09) Наку...   Dec 23 2015, 20:24
- - hd44780   угу. спасибо. Радиомышки я на потом оставлю. Сейча...   Dec 24 2015, 08:36
|- - mantech   Цитата(hd44780 @ Dec 24 2015, 11:36) угу....   Dec 24 2015, 09:19
- - hd44780   Пытаюсь понять феномен этого автоповтора ...   Dec 24 2015, 10:53
- - hd44780   Посмотрел куб - там тоже бут протокол, но автоповт...   Dec 24 2015, 16:36
|- - mantech   Цитата(hd44780 @ Dec 24 2015, 19:36) Посм...   Dec 24 2015, 18:37
- - hd44780   Всех с наступающим! Переделал проект с нуля на...   Dec 30 2015, 08:39
|- - Огурцов   не хватает питания ?   Dec 30 2015, 09:49
- - hd44780   А хз. Питается от программаторского USB. Проверю.   Dec 30 2015, 12:33
- - hd44780   Всех с наступившими Новым годом и Рождеством. Пит...   Jan 7 2016, 18:04
- - Rash   извиняюсь за офф топик, может кто знает где можно ...   Jan 8 2016, 17:10
- - hd44780   Rash, я не знаю. Новую USB либу я увидел, когда са...   Jan 9 2016, 07:52
- - Огурцов   когда говорите либа, что это означает ?   Jan 9 2016, 11:11
- - hd44780   СТ-шники выкладывают архив: USB ядро, драйвера флэ...   Jan 9 2016, 12:42
|- - mantech   Цитата(hd44780 @ Jan 9 2016, 15:42) Факти...   Jan 9 2016, 18:37
|- - hd44780   Цитата(mantech @ Jan 9 2016, 21:37) А что...   Jan 10 2016, 09:11
- - Огурцов   немец крут но только поначалу потом оказывается, ч...   Jan 10 2016, 11:19
- - hd44780   Не, куба я у него пока не видел. У него SPL и не к...   Jan 10 2016, 13:02
- - Огурцов   старый куб был на spl, не ? в любом случае, пример...   Jan 10 2016, 14:34
|- - hd44780   Цитата(Огурцов @ Jan 10 2016, 17:34) стар...   Jan 10 2016, 15:28
|- - Огурцов   так либы на spl или это третья реинкарнация стшног...   Jan 10 2016, 16:34
- - hd44780   В USB либах SPL есть только в 2-х местах: 1. Файл ...   Jan 10 2016, 17:06
- - hd44780   Сделал флэшки на новой либе. На всех моих платах и...   Jan 19 2016, 07:57
|- - mantech   Цитата(hd44780 @ Jan 19 2016, 10:57) Тепе...   Jan 19 2016, 18:22
- - hd44780   Не, пока не хаб. Просто так или то или то. Хабовый...   Jan 20 2016, 08:26
|- - mantech   Цитата(hd44780 @ Jan 20 2016, 11:26) Не, ...   Jan 21 2016, 13:57
|- - mantech   Цитата(mantech @ Jan 21 2016, 16:57) Поль...   Jan 28 2016, 09:33
- - hd44780   Не, флэшки у меня нормально вроде пашут. Знакомый,...   Jan 22 2016, 13:17
|- - mantech   Цитата(hd44780 @ Jan 22 2016, 16:17) Не, ...   Jan 22 2016, 13:38
- - hd44780   Апну древнюю тему. Сейчас осталась только одна про...   Nov 27 2016, 16:12
|- - mantech   Цитата(hd44780 @ Nov 27 2016, 19:12) Поэт...   Nov 29 2016, 17:28
|- - hd44780   Цитата(mantech @ Nov 29 2016, 20:28) Рабо...   Nov 29 2016, 18:38
|- - mantech   Цитата(hd44780 @ Nov 29 2016, 21:38) вызы...   Nov 30 2016, 12:24
- - hd44780   угу. спасибо.   Nov 30 2016, 16:35


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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 03:31
Рейтинг@Mail.ru


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