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

 
 
 
Reply to this topicStart new topic
> AVR & serial mouse, Мышь для последовательного порта = 2 энкодера + 2/3 кнопки
kv_addr
сообщение Mar 1 2007, 17:49
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Возник вопрос создания одного прибора, управление которым целесообразно было бы организовать при помощи вращающихся ручек, собственно говоря - энкодеров. В качестве последних вполне подходят оптопары с колесами от обыкновенной компютерной мышки. Но на две ручки нужно задействовать 4 линии порта + счетверенный компаратор, а еще нужны и кнопки. Получается не совсем красиво.

А почему бы не использовать колеса и кнопки вместе с родным контроллером? Любое нажатие кнопки или поворот колеса вызывает выдачу состояния мыши из 3 байтов в асинхронном RS-232C формате со скоростью 1200бод. Поскольку УСАПП микроконтроллера в приборе использован не будет, можно спокойно на RxD повесить выход контроллера мышки, пускай себе принимает данные.

Вышесказанное касается контроллера 2-кнопочной мыши Mitsumi с контроллером 9202F или подобных этому. Для трехкнопочных мышей будет пакет из 5 байтов, но суть - та же.

Возникает вопрос, не изобретал ли уже кто-либо этот "велосипед"? Конечно, разбираться с ним буду, но было бы интересно посмотреть уже реализованные варианты, если таковые имеются.

PS: Имеется вязанка разных старых мышей 2/3-кнопочных с рабочими контроллерами и оптопарами, грех не использовать.
PPS: Для питания COM-мышей достаточно +5В. По крайней мере, для 9202F, остальные не проверял, но скорее всего отрицательное напряжение и для них нужно лишь для работы с COM-портом.
Go to the top of the page
 
+Quote Post
Dmitry_Od
сообщение Mar 1 2007, 21:16
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 17-01-07
Из: Одесса
Пользователь №: 24 523



Есть пример применеия USB мышки http://www.gaw.ru/pdf/Atmel/app/avr/AVR270.pdf



Я не просматривал, но, возможно, удастся что-то найти (пишут про "куски кода", но где скачать, непонятно...)


--------------------
http://odessa-intern.myminicity.com/ - эдакий муравейник
Go to the top of the page
 
+Quote Post
kv_addr
сообщение Mar 2 2007, 01:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Ну, это понятно, но несколько не по теме. Имелось ввиду использование бросового контроллера мыши для последовательного порта, в качестве контроллера энкодера, и UART микроконтроллера для приема данных с целью уменьшения затрат: 1) линий портов, 2) времени на обработку данных, 3) используемого кода. USB без нужды это усложнит.

В принципе мне понятно, как составить алгоритм обработки данных с энкодеров, да и код написать не проблема, но интересным было бы посмотреть чужие наработки. Решение задачи может оказаться более оригинальным. В любом случае сравнение полезно.

Что интересно, перешерстив и-нет нигде не нашел использования контроллера мыши для указанной цели, везде предлагалось анализировать состояние фототранзисторов оптопары. Но этот, лежащий прямо на поверхности способ, на мой взгляд не кажется оптимальным при условии, что мышиный контроллер является бесплатным приложением к колесам с оптопарами.
Go to the top of the page
 
+Quote Post
konny
сообщение Mar 2 2007, 10:38
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 5-08-05
Пользователь №: 7 384



Попробуй погуглить что нибудь вроде "mouse+AVR". Что-то попадалось, в районе самопальных роботов.
Может имеет смысл использовать мышь с подключением через PS/2. Не нужно согласовывать уровни напряжения...
Go to the top of the page
 
+Quote Post
kv_addr
сообщение Mar 2 2007, 12:38
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(konny @ Mar 2 2007, 11:38) *
Попробуй погуглить что нибудь вроде "mouse+AVR". Что-то попадалось, в районе самопальных роботов.

Уже и очень подробно. Ничего внятного. По крайней мере относительно использования мышиного контроллера. Оптопары с колесами - таки да.
Цитата(konny @ Mar 2 2007, 11:38) *
Может имеет смысл использовать мышь с подключением через PS/2. Не нужно согласовывать уровни напряжения...

1. Можно и PS/2. Точно как и COM.
2. Для питания COM-овских контроллеров тоже достаточно лишь +5В. Отрицательное нужно для получения уровней RS-232C на выходе контроллера (вход порта RxD). Подав на соответствующий вывод контроллера вместо минуса ноль, получаем на выходе уровни 0В/5В.
Go to the top of the page
 
+Quote Post
boez
сообщение Mar 2 2007, 16:27
Сообщение #6


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

Группа: Новичок
Сообщений: 79
Регистрация: 1-11-06
Пользователь №: 21 868



Только учтите что на PS/2 это будет не UART, а нечто вроде SPI, там синхронный протокол. Еще для работы аппаратного уарта с мышей все равно понадобится инвертор, а для пс/2 возможно хватит подключенного напрямую имеющегося в аврке SPI в Slave режиме по двум ногам (MOSI и SCK).
Go to the top of the page
 
+Quote Post
kv_addr
сообщение Mar 2 2007, 17:27
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(boez @ Mar 2 2007, 17:27) *
Только учтите что на PS/2 это будет не UART, а нечто вроде SPI, там синхронный протокол.

Детально с PS/2 пока не разбирался, протокол там иной, возможно режим синхронного обмена USART подойдет, но это потом, попробую сначала на COM.

Цитата(boez @ Mar 2 2007, 17:27) *
Еще для работы аппаратного уарта с мышей все равно понадобится инвертор, а для пс/2 возможно хватит подключенного напрямую имеющегося в аврке SPI в Slave режиме по двум ногам (MOSI и SCK).

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

Сначала проэкспериментирую с комовскими, чтобы все нормально отрабатывалось, как на 2-х, так и на 3-х кнопочной (там, как я понимаю, протокол расширеный), потом и с PS/2 буду разбираться.
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Mar 2 2007, 17:32
Сообщение #8


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



В журнале "Радио" где-то в 95-99гг было подробное описание протокола (формата данных) от 2/3 кнопочных мышей на COM. Там-же была схема подключения.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 2 2007, 19:11
Сообщение #9


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Nanobyte @ Mar 2 2007, 14:32) *
В журнале "Радио" где-то в 95-99гг было подробное описание протокола (формата данных) от 2/3 кнопочных мышей на COM. Там-же была схема подключения.

И здесь можно посмотреть

http://www.computer-engineering.org/index....Mouse_Interface
http://www.computer-engineering.org/index....yboard_Protocol

Здесь вообще всё красиво расписано: http://www.jkmicro.com/documentation/pdf/PS2Keyboard_EN.pdf

Вообще, ссылок в сети, как грязи: http://www.google.co.uk/search?hl=en&q...earch&meta=


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
676038
сообщение Mar 2 2007, 20:35
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 25-07-06
Пользователь №: 19 070



Вдруг поможет...

Подключал ps/2 мышь к контроллеру Atmega16.

Пробная программа написана на IAR4.12, работает так:
инициализирует мышь подключенную к INT0 - CLOCK и PORTD_Bit3 - DATA (в трехкнопочном режиме со скроллером),
затем при нажатии кнопки или движении мыши идет перенаправление принятых кодов на USART (используя форматный printf)

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

Разбирался с протоколом и алгоритмом по следующим ссылкам:
http://www.computer-engineering.org/ps2mouse/
http://www.computer-engineering.org/ps2protocol/
Прикрепленные файлы
Прикрепленный файл  ps2.zip ( 58.41 килобайт ) Кол-во скачиваний: 203
 
Go to the top of the page
 
+Quote Post
kv_addr
сообщение Mar 3 2007, 00:30
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(676038 @ Mar 2 2007, 21:35) *
Вдруг поможет...

Подключал ps/2 мышь к контроллеру Atmega16.

Пробная программа написана на IAR4.12, работает так:
инициализирует мышь подключенную к INT0 - CLOCK и PORTD_Bit3 - DATA (в трехкнопочном режиме со скроллером),
затем при нажатии кнопки или движении мыши идет перенаправление принятых кодов на USART (используя форматный printf)

Стоит чисто утилитарная задача - в качестве экодера применить мышиную оптопару плюс к этому - мышиный контроллер для разгрузки контроллера как по обработке данных с энкодера, так и по количеству используемых линий порта. Последовательная мышь выбрана из сображения наличия целого пучка оных (вышли из моды wink.gif ) и из простоты работы с ней - только лишь RxD и минимум затрат времени (контроллерного). PS/2 (механические) тоже валяются и их тоже можно использовать, но по вышеприведенным критериям они уступают сериальной. А ради спортивного интереса можно и с ними разобраться.

Цитата(676038 @ Mar 2 2007, 21:35) *
Прошу прощения за качество программы, дальше проект не пошел ввиду бесперспективности, т.к. невозможно купить микросхему контроллера мыши, а переделывать серийные мышки под устройства ввода - это годится только для штучных изделий...

Собственно говоря, сама программа меня не так уж сильно интересует, если алгоритм понятен, ее написать не сложно, хоть на ассемблере, хоть на Си. Меня несколько заинтересовало, почему в разных самоделках оптопара из мыши применяется, а готовый контроллер, обеспечивающий предварительную обработку данных с оптопары, игнорируется? Вот и решил выяснить, есть ли кто, реально работавший с ним.

Если бы речь шла о серийном изделии, то никаких мышей, никакой самодеятельности. В даном случае - самодельный прибор для личного употребления. Здесь использование узлов и деталей, демонтированных из каких-либо изделий, вполне допустимо.
Go to the top of the page
 
+Quote Post
676038
сообщение Mar 3 2007, 09:14
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 25-07-06
Пользователь №: 19 070



Цитата(kv_addr @ Mar 3 2007, 02:30) *
Стоит чисто утилитарная задача - в качестве экодера применить мышиную оптопару плюс к этому - мышиный контроллер для разгрузки контроллера как по обработке данных с энкодера, так и по количеству используемых линий порта. Последовательная мышь выбрана из сображения наличия целого пучка оных (вышли из моды wink.gif ) и из простоты работы с ней - только лишь RxD и минимум затрат времени (контроллерного). PS/2 (механические) тоже валяются и их тоже можно использовать, но по вышеприведенным критериям они уступают сериальной. А ради спортивного интереса можно и с ними разобраться.

Собственно говоря, сама программа меня не так уж сильно интересует, если алгоритм понятен, ее написать не сложно, хоть на ассемблере, хоть на Си. Меня несколько заинтересовало, почему в разных самоделках оптопара из мыши применяется, а готовый контроллер, обеспечивающий предварительную обработку данных с оптопары, игнорируется? Вот и решил выяснить, есть ли кто, реально работавший с ним.

Если бы речь шла о серийном изделии, то никаких мышей, никакой самодеятельности. В даном случае - самодельный прибор для личного употребления. Здесь использование узлов и деталей, демонтированных из каких-либо изделий, вполне допустимо.


Вообще говоря, такую задачу решить не сложно, см. мои файлы. Выбор ps/2 мыши был обусловлен тем, что их еще можно купить, и тем, что они могут быть и трехнопочными, и со скроллером. А это значит, что мы можем подключить до трех независимых кнопок и до трех энкодеров. И все это по двум проводам, и ко всем этим радостям можно не думать о всяких гадостях типа дребезга.

Так что идея неплохая, но нужна далеко не каждому. Опять же, вся сложность - это не программа, а то, как переделать эту мышь, чтобы было удобно пользоваться ей, ведь обычно это должно встраиваться в какой-то прибор. Предлагаю продумать это вопрос более серьезно, у меня именно здесь сложность и возникла.

Кстати, подобным образом можно подключить и PS/2 клавиатуру, протокол-то тот же...
Go to the top of the page
 
+Quote Post
kv_addr
сообщение Mar 3 2007, 10:33
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(676038 @ Mar 3 2007, 10:14) *
Вообще говоря, такую задачу решить не сложно, см. мои файлы. Выбор ps/2 мыши был обусловлен тем, что их еще можно купить, и тем, что они могут быть и трехнопочными, и со скроллером. А это значит, что мы можем подключить до трех независимых кнопок и до трех энкодеров. И все это по двум проводам, и ко всем этим радостям можно не думать о всяких гадостях типа дребезга.

Посмотрел. Выбор понятен. У меня накопилось б/у мышек, в основном двухкнопочных Mitsumi комовских, с колесами по 43 спицы. Получается дискретность ~2 градуса, что в моем случае предостаточно. Количество кнопок можно расширить до 3 (01, 10 и 11), этого тоже хватает. RxD аппаратного UART-а - все, что нужно для связи.

Цитата(676038 @ Mar 3 2007, 10:14) *
Так что идея неплохая, но нужна далеко не каждому. Опять же, вся сложность - это не программа, а то, как переделать эту мышь, чтобы было удобно пользоваться ей, ведь обычно это должно встраиваться в какой-то прибор. Предлагаю продумать это вопрос более серьезно, у меня именно здесь сложность и возникла.

Проблемы в этом не вижу. Токарные и слесарные работы выполнять могу и есть на чем. wink.gif

Цитата(676038 @ Mar 3 2007, 10:14) *
Кстати, подобным образом можно подключить и PS/2 клавиатуру, протокол-то тот же...

Да, конечно, но пока не было необходимости. И в этом случае также можно задействовать готовый контроллер из вышедшей из строя клавиатуры. У тех же Mitsumi больное место - металлизированое покрытие пленки, не любят "угощений" чаем/кофе/пивом. wink.gif
Go to the top of the page
 
+Quote Post

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

 


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


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