martes, 26 de julio de 2016

Slither - 3 - usb mouse con edu-ciaa-nxp

Viene de Slither - 2 - encoder con edu-ciaa-nxp


En clase recibí el trabajo de adaptación a CIAA de Pablo Ridolfi y la gente de la CIAA sobre los ejemplos de NXP para que la placa funcione como teclado[1]. Mirando fijo y buscando un poco en Internet, hallé el código necesario[2] para que funcione como mouse e hice la adaptación[3], que no hace más que decirle a la máquina "movete a la derecha un poco" cada tanto.

Hasta donde alcanzo a comprender no es un ejemplo bare metal y usa interrupciones, que no era lo que yo deseaba aún, pues me autoimpuesto terminar de agotar el recurso de NO usar interrupciones por cuestiones didácticas.

Para que no tengas que descubrirlo vos, te cuento que main() tiene un loop:

   Keyboard_Tasks();
   /* Sleep until next IRQ happens */
   __WFI();


y Keyboard_Tasks() llama a Keyboard_UpdateReport(), donde para cada tecla

if(!ciaaReadInput(#tecla#)) {
   HID_KEYBOARD_REPORT_SET_KEY_PRESS(g_keyBoard.report, 0x#letra#);


dependiendo de la #tecla# oprimida se agrega al reporte una #letra#

Para el mouse es casi igual,

   Mouse_Tasks();
   /* Sleep until next IRQ happens */
   __WFI();



y Mouse_Tasks() llama a Mouse_UpdateReport():

   setXYMouseReport(g_mouse.report, x, y);

con un x que se va incrementando, así que se va para la derecha cada vez más rápido.

Sigue en Slither - 4 - usb mouse y encoder con edu-ciaa-nxp

[1] https://github.com/cpantel/ciaa/tree/master/slither.io/STANDALONE/usbDeviceHID_keyboard

[2] https://github.com/micromint/LPCOpen-keil-lpc43xx/tree/master/applications/lpc18xx_43xx/examples/usbd_rom/usbd_rom_hid_mouse

[3] https://github.com/cpantel/ciaa/tree/master/slither.io/STANDALONE/usbDeviceHID_mouse

No hay comentarios:

Publicar un comentario