Часовой пояс: UTC + 3 часа




Куратор(ы):   iG0Lka   



Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 4821 • Страница 94 из 242<  1 ... 91  92  93  94  95  96  97 ... 242  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 
Прилепленное (важное) сообщение

Member
Статус: Не в сети
Регистрация: 06.06.2008
Откуда: Таганрог
Фото: 18
Мышка называется W-Mouse и WX-Mouse

Варианты
WX-Mouse
сенсор Pixar PMW-3360, PMW-3389, контролер ATXMEGA32A4U-AU

W-Mouse
Wab где,
a - это контролер
1- AT90USB162
2- ATMEGA32U4
b - это тип сенсора и вариант оптики
1-adns6010, adns6090
2-adns3080, 3090
3-adns6090 + оптика от 3080
4-adns9500, 9800
старые обозначения
W3- контролер AT90USB162, сенсоры adns6010, adns6090 или adns3080
W4- контролер AT90USB162, сенсор adns9500
W5- контролер ATMEGA32U4, сенсоры 60x0, 3080, 9500

W-Mouse
Комплект ПО версия 6.6. для всех вариантов W-mouse (пароль к архиву: W-Mouse)
История изменений версий W-Mouse начиная с 5.2
Принципиальные схемы всех вариантов W-mouse
Инструкция Walkie по сборке и оживлению W-Mouse.
Последняя версия инструкции Walkie по сборке и оживлению W-mouse.
Программатор V1183 для заливки Wloader (W-Mouse), прошивка ATtiny
Универсальная печатная плата для W-Mouse контролер ATMEGA32U4. Разработка Dx!.
Wloader-ы для обоих контролеров (162 и U4)

Общее для W-Mouse и WX-Mouse
Описание настроек Wcontrol - иногда редактируется при смене кардинальных изменениях.

Программа автопереключения профилейи Тема по oбсуждению автопереключения профилей в зависимости от запущеного приложения

Преобразователь оптомехнического кодера колеса мышек Logitech в механический EC10



По вопросу приобретения универсальных плата W-Mouse и плата WX-Mouse пишите в ЛС iG0Lka


Программа тестирования нажатий кнопок мыши (проверка двойного клика) MBTester V2.0 описание внутри


Последний раз редактировалось iG0Lka 21.07.2020 11:23, всего редактировалось 159 раз(а).
edit



Партнер
 

Member
Статус: Не в сети
Регистрация: 09.12.2005
Откуда: Новочеркасск
iG0Lka писал(а):
в журнале событий имею предупреждение:

У мышки некорректно составлен дескриптор.
Из-за этого она даже в некоторых линухках не работает (все перемещения только в плюс, мышь тупо в углу.)

Это естественно и в семерке всплывает.
#77


 

Куратор темы
Статус: Не в сети
Регистрация: 05.01.2006
Откуда: мск
Фото: 5
Dx! писал(а):
У мышки некорректно составлен дескриптор.

чтото такое я подозревал.

давайте составим его правильно?

_________________
✅ РЕМОНТ мышек! ✅ качественно и с гарантией ✅


 

Member
Статус: Не в сети
Регистрация: 09.12.2005
Откуда: Новочеркасск
А кто добавит его в прошивку? На венде это ни как негативно не проявляется.

Добавлено спустя 11 минут 44 секунды:
Код:
// C:\Projects\HidDescriptorTool\mouse.h


char ReportDescriptor[56] = {
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x09, 0x02,                    // USAGE (Mouse)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x09, 0x01,                    //   USAGE (Pointer)
    0xa1, 0x00,                    //   COLLECTION (Physical)
    0x09, 0x30,                    //     USAGE (X)
    0x09, 0x31,                    //     USAGE (Y)
    0x16, 0x00, 0x80,              //     LOGICAL_MINIMUM (-32768)
    0x26, 0xff, 0x7f,              //     LOGICAL_MAXIMUM (32767)
    0x75, 0x10,                    //     REPORT_SIZE (16)
    0x95, 0x02,                    //     REPORT_COUNT (2)
    0x81, 0x06,                    //     INPUT (Data,Var,Rel)
    0x09, 0x38,                    //     USAGE (Wheel)
    0x15, 0x80,                    //     LOGICAL_MINIMUM (-128)
    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)
    0x75, 0x08,                    //     REPORT_SIZE (8)
    0x95, 0x01,                    //     REPORT_COUNT (1)
    0x81, 0x06,                    //     INPUT (Data,Var,Rel)
    0x05, 0x09,                    //     USAGE_PAGE (Button)
    0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)
    0x29, 0x08,                    //     USAGE_MAXIMUM (Button 8)
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
    0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)
    0x75, 0x01,                    //     REPORT_SIZE (1)
    0x95, 0x08,                    //     REPORT_COUNT (8)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0xc0,                          //   END_COLLECTION
    0xc0                           // END_COLLECTION
};


В одной из старых версий оно выглядело так.

венда ругается на
Цитата:
It is reporting a bad physical minimum/maximum for one or more axes.

(кстати в русской версии ещё и перевод не верен.)

Соответственно могу предположить что нужно:
Цитата:
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x16, 0x00, 0x80, // LOGICAL_MINIMUM (-32768)
0x26, 0xff, 0x7f, // LOGICAL_MAXIMUM (32767)
0x36, 0x00, 0x80, // PHYSICAL_MINIMUM (-32768)
0x46, 0xff, 0x7f, // PHYSICAL_MAXIMUM (32767)

0x75, 0x10, // REPORT_SIZE (16)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x06, // INPUT (Data,Var,Rel)
0x09, 0x38, // USAGE (Wheel)
0x15, 0x80, // LOGICAL_MINIMUM (-128)
0x25, 0x7f, // LOGICAL_MAXIMUM (127)
0x35, 0x80, // PHYSICAL_MINIMUM (-128)
0x45, 0x7f, // PHYSICAL_MAXIMUM (127)

0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x06, // INPUT (Data,Var,Rel)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x08, // USAGE_MAXIMUM (Button 8)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION



Естественно нужно проверять...

Может и для колеса тоже нужно, хз...


 

Member
Статус: Не в сети
Регистрация: 07.11.2006
Откуда: Можайск
Фото: 1
Dx! писал(а):
Из-за этого она даже в некоторых линухках не работает (все перемещения только в плюс, мышь тупо в углу.)

Делал недавно ЛавСД с убунту, мышь перемещается нормально, а вот кнопки не работают.

_________________
Вечно молодой, вечно пьяный. :)


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
ВСК писал(а):
ковер есть, но вот как его лучше расположить
По диагонали....

У сенсора нет приоритета по координатам, чувствительность-качество = все одинаково. ОДНАКО, из-за "подсветки сбоку" скорость "по" и "поперек" луча различается. Причина - разная четкость. Если внимательно изучить снимки, то это хорошо прослеживается.
Как следствие, по менее четкой стороне скорость срыва где-то в 2 раза хуже. Поэтому так важна ориентация сенсора (повернутые датчики работают в те-же 2 раза хуже).
При работе с мышой одинаковая скорость по обеим координатам не требуется, поэтому менее резкая координата выбирается |.

Соответственно, при выборе ковра можно подойти с тех-же позиций. Хотя, я никак не могу понять, почему нельзя взять обычный тряпочный ковер, или вообще лист жести, и радоваться жизни.

Добавлено спустя 4 минуты 48 секунд:
По дескриптору - можно подойти проще, сходить на atmel и из их framework дернуть описание. Еще вариант - под дескрипторы есть viewer'ы.
У меня всё сгинуло, поэтому ссылок дать не могу.


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
serj писал(а):
ОДНАКО, из-за "подсветки сбоку" скорость "по" и "поперек" луча различается.

Как человек, еще не совсем забывший физику частиц, скромно замечу, что константа С вообще-то абсолютна. Но даже будь иначе, для наблюдения подобного эффекта понадобилось бы передвигать сенсор мыши приблизительно хотя бы с 1/10 от константы С (а это что-то около 30 км/с).


 

Member
Статус: Не в сети
Регистрация: 09.12.2005
Откуда: Новочеркасск
retaliation писал(а):
Как человек, еще не совсем забывший

Думать?

Контраст. Скорость света тут не при чем 8)


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
Dx! писал(а):
Думать?

Очень мудрый совет.
Dx! писал(а):
Контраст.

Ах да, конечно же. Осталось только объяснить фотонам, почему при продольной проекции они выглядят ярче, чем при поперечной. :-)


 

Member
Статус: Не в сети
Регистрация: 09.12.2005
Откуда: Новочеркасск
Можно закончить с тролингом и просто разобраться в том, как же работает оптическая мышь.


 

Member
Статус: Не в сети
Регистрация: 24.01.2011
Откуда: Нижегородчина
Фото: 31
serj писал(а):
сенсора нет приоритета по координатам, чувствительность-качество = все одинаково. ОДНАКО, из-за "подсветки сбоку" скорость "по" и "поперек" луча различается. Причина - разная четкость. Если внимательно изучить снимки, то это хорошо прослеживается.
Как следствие, по менее четкой стороне скорость срыва где-то в 2 раза хуже. Поэтому так важна ориентация сенсора (повернутые датчики работают в те-же 2 раза хуже).

Это получается производители мышек(в частности A4Tech X-740/748), расположившие сенсор с подсветкой вдоль оси X лажанулись? А Вы могли бы поподробнее описать этот процесс потери чёткости в зависимости от направления перемещения. Серьёзно, не с целью укусить кого-то за пятку, реально интересно! Пока сам не могу понять... Это актуально и для лазерок и для оптики(имеется ввиду угол расположения "взгляда" сенсора на поверхность)?

_________________
鼠 ( ¦­­­­­­­­­-)ک


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
FenixSU, снимки делайте сами. ))
Физика процесса находится в логике алгоритма определения смещения в датчике:
Делается снимок и запоминается. Потом делается второй снимок и начинается процесс поиска наибольшего совпадения. Грубо говоря, начинают один кадр накладывать на другой и двигать по расходящейся спирали. Наибольшее совпадение будет означать позицию сдвига, отсюда берутся некие числа смещения вида X=0.02142323546243124 и Y=0.011934522344245714. После этого эти числа умножаются на мнимое CPI (1000) и датчик сообщает в контроллер мыши смещение 21/11. Числа X, Y являются истинным смещением с известной точностью (из-за шума), а выходные 21/11 надуманными. Сенсор может положить чувствительность CPI не 1000, а 2000, тогда результат будет в 2 раза больше .... но ни фига не точнее. Это ни коем образом не мешает кЭтайским производителям в контроллере домножать еще в 2-3 раза и получать CPI в 3000-5000.
Итак, алгоритм поиска _ищет_ наболее удачное совпадение, т.е. требуется наиболее четкая и СТАБИЛЬНАЯ картинка. Если при смещении вид поверхности изменился, то второй кадр вовсе не является _сдвинутым_первым_, это уже другой кадр. Но датчик об этом не знает и пытается искать совпадение.
Вывод - необходимо любой ценой обеспечить одинаковость картинки по мере движения мыши.
Теперь возьмем боковую подсветку (луч наклонен!). Как следствие, по мере движения (отдаления от центра) характер подсветки и яркость меняется.
Допустим, датчик стоит нормально, в результате движение | сопровождается изменением условий освещения точек по мере перемещения (ближе-дальше от подсветки = яркость, фокусировка). Движение -- не сопровождается каким-либо изменением условий освещения.
Второй момент - из-за наклоненной подсветки тени выглядят не как точки, а как эллипсы, в результате чего четкость по разным осям уже различается.
IMHO.

p.s.
Вовсе не просто так A4 используют сенсор с вертикальной подсветкой. ))


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
serj писал(а):
Вывод - необходимо любой ценой обеспечить одинаковость картинки по мере движения мыши.

Неужели можно каким-то образом обеспечить „неодинаковость“ картинки по мере движения? Особенно учитывая тот факт, что сенсор успеет сделать много-много сканов рабочего окна поверхности еще до того, как это окно сдвинется хотя бы на четверть. Ну, по крайней мере, пока юзер не научится перемещать мышку со скоростью света.
serj писал(а):
Теперь возьмем боковую подсветку (луч наклонен!).

То есть это надо понимать так, что если
serj писал(а):
Допустим, датчик стоит нормально

то „луч не наклонен“?
Не сочтите за наглость, но можно ссылочку на оригинальное исследование, на основании которого делаются подобные выводы? Весьма обяжете.


 

Member
Статус: Не в сети
Регистрация: 06.06.2008
Откуда: Таганрог
Фото: 18
Люди, прошу прощения, что не участвую. Просто мне не до мышек. Правда.
Васёк, я попытаюсь скорректировать дискриптор - да, там есть старые опечатки (), и винда-7 о них информирует. Только у меня уже давно нет этого проекта. Есть нечто, что возюкаю по коврику сам, но мне трудно сказать, насколько оно всеядно для всех прошлых датчиков.
Когда-то уже давно я взял несколько датчиков 9800, быстренько общупал их, залепил в паре маломальски подходящих мне корпусах, отредактировал "шопработало" и больше не трогал. Другими датчиками больше не занимался.
Найду время - поковыряю, исправлю, выложу, что есть. Но оно непретенциозное - просто годная мышка.
---
Винрарный коврик - это Gigabyte Krypton (Aivia). Тряпочная сторона. Пластиковая сторона мне не интересна, но весьма хорошая.
---
serj, алгоритм вычисления смещения в ADNS не такой.


 

Member
Статус: Не в сети
Регистрация: 09.12.2005
Откуда: Новочеркасск
Если не жалко, выложить бы то, что есть, куда в доступное место.
Просто чтобы можно было бы скачать. По возможности с сорцами. Ну и подписать, мол недопилено, as is.

Мне сейчас сам алгоритм больше интересен 8) Хотя времени плотно заняться мышью так и не нашлось... Но пересесть с w-mouse тоже так и не удалось 8) Спасибо 8)


 

Member
Статус: Не в сети
Регистрация: 24.01.2011
Откуда: Нижегородчина
Фото: 31
serj
Меня заинтересовало Ваше утверждение о разности изображений в зависимости от направления перемещения. Я тут даже на досуге попытался смоделировать подсветку классической оптической мыши.
Взял за основу схему из даташита ADNS-3080:
#77



Поверхность условно изобразил в виде выступов и впадин, источник как и в исходнике точечный:



#77


Да, действительно, как видно из рисунка - при перемещении вдоль условной линии сенсор-подсветка, вертикальная проекция теней от единичных выступов поверхности ковра будет изменяться.
Здесь возникает вопрос: можно ли считать источник света от линзы подсветки точечным? Не понимаю, почему Avago'цы изобразили собирающийся в точку пучок света на выходе из системы зеркал? Если он действительно точечный, то имеем проблемы по обоим осям. Однако, по идее, он должен выходить широким - как по горизонтали, так и (что для нас важнее) по вертикали - вот тогда мы уже получаем не расходящийся конусом пучок света, а широкий луч с параллельными составляющими(в границах видимого сенсором "пятачка").
Другой момент - лазерная подсветка - здесь изначально имеем цилиндрический пучок.
Касаемо яркости - момент спорный, хотя в этой теме встречал упоминание про некий "градиент" на изображении.
Вопрос интересный... получается и, в самом деле, подсветка типа V-Track должна оказывать минимальное воздействие на кадры, получаемые с перемещаемой поверхности. Хотя, ещё есть Logitech'евский Darkfield - там, насколько я помню, освещение организовано сразу с трёх сторон по типу мерседесовской трёхлучевой звезды.
Что тогда, в этом аспекте, получаем по коврам - необходимо иметь минимальную разницу по глубине между выступами и впадинами.

_________________
鼠 ( ¦­­­­­­­­­-)ک


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Walkie писал(а):
serj, алгоритм вычисления смещения в ADNS не такой.
C удовольствием изучу матчасть. Ссылку можно попросить?


 

Member
Статус: Не в сети
Регистрация: 05.11.2008
я работаю в линуксе сейчас, вобщем-то проблем не замечал - ubuntu 13.04. Попробую поискать где там задается дескриптор и поправить попозже.


 

Member
Статус: Не в сети
Регистрация: 09.12.2005
Откуда: Новочеркасск
kemsky писал(а):
где там задается дескриптор

w-mouse.inc


 

Member
Статус: Не в сети
Регистрация: 05.11.2008
descriptor.inc ;)

у w-mouse стоит так:
Код:
0x36, 0x00, 0x80, // PHYSICAL_MINIMUM (-32767)
0x46, 0xff, 0x7f, // PHYSICAL_MAXIMUM (32767)
0x35, 0x80, // PHYSICAL_MINIMUM (-127)
0x45, 0x7f, // PHYSICAL_MAXIMUM (127)


 

Куратор темы
Статус: Не в сети
Регистрация: 05.01.2006
Откуда: мск
Фото: 5
Dx! писал(а):
w-mouse.inc

чото у меня такого файла даже нет.

kemsky писал(а):
descriptor.inc

у меня он в текстовом редакторе

выглядит так
Код:
DESCR_DEV:  .db 18,1
            .dw 0x0110
            .db 0,0,0,EP0_SIZE
            .dw 0xA00F; VID
            .dw 0x8001; PID
            .dw 0x0500; REL
            .db 1,2,3,1
;----------------------------------------------------------------------------
DESCR_CFG:  .db 9,2
            .dw DESCR_CFG_SIZE
            .db 2,1,6,0x80,POWER_REQ/2,  9
;interface 0
            .db 4,0,0,1,3,0,2,4
M_DESCR_HID:.db 9,0x21,0x10,0x01,0, 1,0x22,low(M_REP_SIZE),high(M_REP_SIZE),  7
            .db 5,0x81,3,EP1_SIZE,0,EP1_POLLING
;interface 1
            .db 9,4,1,0,1,3,0,1,5,  9
F_DESCR_HID:.db 0x21,0x10,0x01,0, 1,0x22,low(F_REP_SIZE),high(F_REP_SIZE)
            .db 7,5,0x82,3,EP2_SIZE,0,EP2_POLLING,0

.equ DESCR_CFG_SIZE = (PC-DESCR_CFG)*2-1
;----------------------------------------------------------------------------
U_CFG:      .db (U_IF_0-U_CFG)*2,3
            .dw 'C','f','g','1'
U_IF_0:     .db (U_IF_1-U_IF_0)*2,3
            .dw 'M','o','u','s','e'
U_IF_1:     .db (U_MAN-U_IF_1)*2,3
            .dw 'C','t','r','l'
U_MAN:      .db (U_PROD-U_MAN)*2,3
            .dw 'E','c','o','C','e','n','t','e','r'
U_PROD:     .db (U_SN-U_PROD)*2,3
            .dw 'W','m','o','u','s','e'
U_SN:       .db (U_LANG-U_SN)*2,3
            .dw '2','.','0','1'
U_LANG:     .db 4,3,9,4
;----------------------------------------------------------------------------

M_HID_REPORT:
.db 5,1; Usage Page(GenericDesk)
.db 9,2; Usage(Mouse)
.db 0xA1,1; Collection(App)

.db 5,9; Usage Page (Button)
.db 0x19,1; Usage MIN
.db 0x29,5; Usage MAX
.db 0x15,0,0x25,1; Logical MIN,MAX
.db 0x75,1; Size
.db 0x95,5; Counts
.db 0x81,0x02; INPUT (abs data)
.db 0x75,3; Size
.db 0x95,1; Counts
.db 0x81,0x03; INPUT (const)

.db 5,1; Usage Page(GenericDesk)
.db 9,0x38; Usage(Wheel)
.db 0x15,-127,0x25,127; Logical MIN,MAX
.db 0x75,8; Size
.db 0x95,1; Counts
.db 0x81,0x06; INPUT (rel data)

.db 5,1; Usage Page(GenericDesk)
.db 9,1; Usage(Pointer)
.db 0xA1,0; Collection(Phys)
.db 0x16,low(-32767),high(-32767),0x26,low(32767),high(32767); Logical MIN,MAX


.db 5,1; Usage Page(GenericDesk)
.db 9,0x30; Usage(X)
.db 9,0x31; Usage(Y)
.db 0x75,16; Size
.db 0x95,2; Counts
.db 0x81,0x06; INPUT (rel data)

.db 0xC0,0xC0; End Collection
.equ M_REP_SIZE = (PC-M_HID_REPORT)*2

;----------------------------------------------------------------------------
F_HID_REPORT:
.db 5,1,9,6; Generic Desk / Keyboard
.db 0xA1,1; CollectionApp
.db 0x85,1; REPORT_ID=1
.db 5,7; Page Keyboard
.db 0x19,0xE0,0x29,0xE2; usage_min - max : LeftCtrl, LeftShift, LeftAlt
.db 0x75,1,0x95,3,0x81,2; 1 bit, 3 cnt, INPUT(Data,Var,Abs)
.db 0x75,5,0x95,1,0x81,3; 5 bit, 1 cnt, INPUT(Const,Var,Abs)

.db 0x19,0x00,0x29,0x7F; USAGE_MIN-MAX (NoKey - Key Mute)
.db 0x15,0,0x25,0x7F
.db 0x75,8,0x95,2,0x81,0; 8 bit 2 cnt, INPUT (Data,Ary,Abs)

; REPORT 2 Feature
.db 0x06,0x00,0xff, 9,0, 0x85,0x02, 0x75,8,0x95,34, 0xb1,0x02, 0xC0

.equ F_REP_SIZE = (PC-F_HID_REPORT)*2


_________________
✅ РЕМОНТ мышек! ✅ качественно и с гарантией ✅


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 4821 • Страница 94 из 242<  1 ... 91  92  93  94  95  96  97 ... 242  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan