РадиоКот :: Мышь для РадиоКота
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Защита и контроль >

Теги статьи: Добавить тег

Мышь для РадиоКота

Автор: El-Eng
Опубликовано 14.05.2014
Создано при помощи КотоРед.

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

Поиск информации на эту тему в Интернете привел меня на сайт Адама Чапвеске (Adam Chapweske) на котором содержалась информация не только о протоколе обмена данными с мышью PS/2, но и приведен пример интерфейса к ней, вплоть до процедуры инициализации, осуществляемой ОС Windows 98 SE. Эта информация и была взята мной за основу.

В качестве микроконтроллера был выбран популярный контроллер ATmega48 компании Atmel, работающий на тактовой частоте 16.384 МГц. Анализ протокола обмена данными с мышью показал, что с одной стороны, его тяжело реализовать полностью аппаратно на этом контроллере, а с другой – вполне возможно реализовать аппаратный прием данных от мыши и программную передачу данных в нее. Поскольку передача данных в мышь требуется только во время ее инициализации, такой подход обеспечивает требуемое быстродействие при минимальной загрузке контроллера. Способ подключения мыши к контроллеру, предложенный в статье, показался мне несколько громоздким, и был существенно упрощен. Схема подключения представлена на Рис. 1.

Рис. 1.

Данные принимаются синхронно приемником USART0 (RXD/PD0), а тактируются линией XCK/PD4. Эти же линии используются для передачи данных в мышь. Кроме последовательного порта, для работы с мышью задействован таймер (Timer 0). Он используется для задания интервалов Timeout и при инициализации.

Текст шаблона программы обмена данными с мышью приведен в приложении (файл 01.zip). Программа написана на языках C и Assembler в среде IAR Embedded Workbench. Необходимые комментарии даны в тексте программы, причем мои комментарии даны на русском языке, а строки из статьи Адама Чапвеске - на английском.

При разработке программы в первую очередь уделялось внимание точному повторению протокола инициализации (пусть и за счет компактности). Такой подход дал ожидаемый результат – мышь заработала сразу. Поскольку в памяти программы контроллера оказалось достаточно места, было решено оставить все как есть, по принципу “работает – не трогай”.

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

После проверки работы мыши PS/2 с контроллером, возник естественный вопрос: а как же USB-мышь? Ведь существуют же переходники USB-PS/2 для мыши. Будет ли работать такая мышь с контроллером? Поскольку переходник имелся в наличии, ответ был получен незамедлительно: да, будет. Нормально заработали все имеющиеся USB-мыши, в том числе и беспроводная.


Файлы:
Архив ZIP


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

16 8 8
1 0 0