Значится так.
Сначала немного теории:
- Сегодня в продаже появилось великое множество дешевых мышей, которые при всей своей дешивизне внтри имеют вполне осмысленные корпусные микросхемы.
Особенно радует контроллер позиции XX-YY-ZZ, самые дешевые из них A2610/A2620 и A5010/A5020, вторые лучше потому как на борту имеют CS, то бишь ногу для выбора контроля над микросхемой.
Ещё более тёплая, греющая душу особенность, - это наличие SPI интерфейса на борту, последний факт освобождает вообще от интеграции в обработчик интерфейсов c датчиком X/Y ибо SPI есть сейчас в любом современном микроконтроллере.
Вот собственно небольшой обзор на эту тему:
Pin Number 1 2 3 4 5 6 7 8 | Pin OSC_IN OSC_OUT SDIO SCK LED_CNTL GND VDD REFA | Description Oscillator input Oscillator output Serial data (input and output) Serial port clock (Input) Digital Shutter Signal Out System Ground 5V DC Input Internal reference |
- Теперь минусы, - Колесо NetScroll, сама "композиция", то бишь колесо с датчиками называется Z-Encoder, тут уж нет стандартного решения, поэтому довольно сложно понять какие принцыпы определения движения колеса сюда вложил разработчик, плюсом ещё накладывается то, что в документации по дримовской мышище указано, - позиция Z - определяется 10-ти битным значением, то есть если в PC Позиция Z определяется "по щелчкам", то на дриме это такая же полноправная координата как X/Y.
- Теперь минусы со стороны дрима, первый, - эт конечно жа MapleBus, интегрировать который целиком в контроллер не удасться, а это собственно подтягивает ещё одну проблему, - доп. логика, которая тож занимает место на плате и соотв в корпусе мышки.
Как минус можно добавить такую "мелочЬ" как различия между значащими битами в PC - 8 бит на координату в Dreamcast'e 10, доп конвертация и прочее.
- А вот теперь немножко теории относительно того, какие требования накладываються на "изготовителя" дримовской мыши (я прям коротенечко цитатами):
1. Функциональные элементы
Category code : Mouse
Press buttons : A,B,W
Analog coordinate axes : AC1,AC2 (ball)
: AC3 (wheel)
Option parameters : None
2. Детали конфигурации:
A button : left button The values are: press = ‘0’, release = ‘1’.
B button : right button The values are: press = ‘0’, release = ‘1’.
W button : wheel (center) button The values are: press wheel = ‘0’, release = ‘1’.
Ball : AC1(X),AC2(Y) Relative coordinates in both axes are detected by an optical converter. Coordinate accuracy is 10 bits.
Wheel : AC3(Z) Relative coordinate is detected by an optical converter. Coordinate accuracy is 10 bits.
3. Ответы на основные команды:
Fixed Device Status (112 bytes):
Device ID (Capacity : 16byte) :
Data: 00h-00h-02h-00h -00h-0Eh-07h-00h -00h-00h-00h-00h -00h-00h-00h-00h
Destination (Capacity : 1byte):
Data: FFh
Connection direction (Capacity : 1byte):
Data: 00h
Product name (Capacity : 30byte):
Data: " Dreamcast Mouse " in hankaku characters. A space code (20h) is inserted for unused space.
License (Capacity : 60byte):
Data: "Produced By or Under License From SEGA ENTERPRISES,LTD." A space code (20h) is inserted for unused space.
Standby current consumption (Capacity : 2byte):
Data: 01h-90h (40.0mA)
Maximum current consumption (Capacity : 2byte):
Data: 01h-F4h (50.0mA)
Free Device Status (192 bytes):
Fixed Device Status (112 bytes):
+
Device ID (Capacity : 80byte) :
"Version 1.000,2000/02/25,315-6211-AT ,3 Button & X-Y Ball & Z Wheel ,400dpi "
Dreamcast Mouse data formats
Data transfer(Capacity : 20bytes):
Data:
bit 1st-Data 2nd-Data 3th-Data 4rd-Data 5th-Data 6th-Data 7th-Data 8th-Data 9th-Data 10th-Data 11th-Data 12th-Data 13th-Data 14th-Data 15th-Data 16th-Data 17th-Data 18th-Data 19th-Data 20th-Data | 7 1 0 0 0 AC17 0 AC27 0 AC37 0 0 0 0 0 0 0 0 0 0 0 | 6 1 0 0 0 AC16 0 AC26 0 AC36 0 0 0 0 0 0 0 0 0 0 0 | 5 1 0 0 0 AC15 0 AC25 0 AC35 0 0 0 0 0 0 0 0 0 0 0 | 4 1 0 0 0 AC14 0 AC24 0 AC34 0 0 0 0 0 0 0 0 0 0 0 | 3 W 0 0 0 AC13 0 AC23 0 AC33 0 0 0 0 0 0 0 0 0 0 0 | 2 A 0 AOV2 0 AC12 0 AC22 0 AC32 0 0 0 0 0 0 0 0 0 0 0 | 1 B 0 AOV1 0 AC11 AC19 AC21 AC29 AC31 AC39 0 1 0 1 0 1 0 1 0 1 | 0 1 0 AOV0 0 AC10 AC18 AC20 AC28 AC30 AC38 0 0 0 0 0 0 0 0 0 0 |
А вот собственно и пояснение к таблице.
1st-Data 2nd-Data 3rd-Data 4th-Data 5th~6th-Data 7th~8th-Data 9th~10th-Data 11th~20th-Data | :BTN :OP :AOV :RES :AC1 :AC2 :AC3 :AC4~8 | Operating button data Option parameters (00h) Analog coordinate overflow Reserved (00h) X-axis analog coordinate region Y-axis analog coordinate region Z-axis analog coordinate region (wheel) Constant (00h-02h, fixed) |
Собстна
To be continued... потому как выдохся, а там ещё много...
Добавлено позже: А теперь собственно к теме!
За основу для моего девайса я взял мышищу RX-250 от Logitech, - ~10$ в магазе стоит, значиться так:
Для работы нам понадобиться:
1. МОЗГ
1шт
2. Руки
2шт
3. Мышища RX-250
1шт
4. Паяльник
1шт
5. Паяльная паста TRISTAR (Само то для лужения паяльником)
1шт
6. Припой
7. Переходник для джоев Dreamcast
8. Микроконтроллер ATMEGA851516AI/AU (TQFP)
1шт
9. SMD Резисторы 1.2к (0805 корпус) -
4шт
10. SMD Конденсатор, пленочный 0.1u (0805 корпус) -
4шт
11. Кварцевый резонатор 16MHz HZ49 -
1шт
12. Элктролитический SMD конденсатор 4,7uF (типоразмер А) -
3шт
13. Сдвоенный 4х битный сдвиговый регистр IN74HC4015 (или схожий CD4015/HEF4015 но они хуже ибо медленнее)
2шт.
Значит так. 1. Разбираем мышь RX-250, внутри видим микроконтроллер от CYPRESS, - CY7С63813, выдергиваем его, на его место мы запаяем нашу плату с мозгами для MapleBUS.
2. Смотрим каким же образом у нас разведены дороги к месту пайки CY7C... и видим вот что:
Где :
Ноги для управления контроллером X/Y
SS SCK MOSI MISO NRESET | Выбрать чип Вход под клок Вход под данные Выход данных Аппаратный сброс
|
Остальные ноги:
LD1 LQ1 PB-L PB-R PB-M PB-LM PB-RM | Вход вкл/выкл диода на "Колесо" Выход данные от сенсора "Колеса" Выход контроля нажатия левой кнопки Выход контроля нажатия правой кнопки Выход контроля нажатия центральной кнопки Выход контроля нажатия кнопки "колесом влево" Выход контроля нажатия кнопки "колесом вправо" |
И что мы тут видим?Видим что кнопок 5, ну и зачем такое удовольствие теря, добавим же эти кнопки в наш обработчик MupleBUS и будет нам счастье!
Соответственно вот и схема:
Соотв доберусь до фотика весь процесс преобразования в картинках тут выпишу...