Красная точка
Решил начать с непонятного: заведется красная точка – значит можно продолжать проект. Открыл книгу, ну все понятно. Подключил – не работает.
Классика.
Поскольку serial port во всей красе застал уже в трудовых буднях, оттого начал испытывать стресс, но благодаря своей природной настойчивости, я разобрался куда ставить паяльник. Итак, у нас 5 контактов, 3 из них описаны на схеме:
- +5v -
VCC- PWR он же power. Питальник по-нашему. - Земля, нейтраль,
GND. DATA, он же DTA подключается к выбранному входу RP2040ичерез резистор 4.7 кОм к+5vСLOCK, от же CLK. Подключаем ровно как DATA из п.3RST, он же RESET, через пленочный конденсатор 2.2мкф к+5Vи через 100кОм кGND. Через этот пин мк может рестартовать контроллер когда готов получать от него данные, т.к. в ps/2 хот плаг не завезли.
Что же делать с еще тремя свободными пинами? А это кнопки, если замкнуть их на GND, трекпоинт отправит в малину нажатие ЛКМ, ПКМ или нажатие на колесо.
Было изведено 2 кг ABS пластика на тестовые образцы, все они как один были некуда не годными. На первых итерациях было много лишних клавиш таких как Delete, Insert, PrintScreen, 4 клавиши курсора, но в процессе оптимизаций они канули в лету, а точнее в следующий слой) Оказалось очень удобно иметь “стрелочки” всегда под пальцами по волшебному модификатору Fn. Фотокарточки к публикации расположены в порядке эволюции.
#define PS2_MOUSE_ENABLE_SCROLLING /* позволяет включить скролл как в ThinkPad – когда тянешь трекпоинт вниз с нажатым "колесом". Логи gcc скролить так одно удовольствие */
#define PS2_MOUSE_BTN_LEFT 0
#define PS2_MOUSE_BTN_RIGHT 1
#define PS2_MOUSE_BTN_MIDDLE 2 /* порядок клавиш можно переназначить, если произошла путаница на PCB */
Можно врубить инверсию осей движения:
#define PS2_MOUSE_INVERT_X
#define PS2_MOUSE_INVERT_Y
И инверсию направления прокрутки:
#define PS2_MOUSE_INVERT_H
#define PS2_MOUSE_INVERT_V
ну и самое полезное, плата не всегда становится в естественную позицию, потому координаты можно повернуть:
#define PS2_MOUSE_ROTATE 270
#define PS2_MOUSE_ROTATE 180
#define PS2_MOUSE_ROTATE 90
/*
Мой GitHub
*/