Make the blackberry trackball pointer move in all 4 directions.
This commit is contained in:
@@ -10,10 +10,52 @@ void BlackberryTrackball_Init(void)
|
||||
PORT_SetPinMux(BLACKBERRY_TRACKBALL_LEFT_PORT, BLACKBERRY_TRACKBALL_LEFT_PIN, kPORT_MuxAsGpio);
|
||||
PORT_SetPinInterruptConfig(BLACKBERRY_TRACKBALL_LEFT_PORT, BLACKBERRY_TRACKBALL_LEFT_PIN, kPORT_InterruptEitherEdge);
|
||||
NVIC_EnableIRQ(BLACKBERRY_TRACKBALL_LEFT_IRQ);
|
||||
|
||||
CLOCK_EnableClock(BLACKBERRY_TRACKBALL_RIGHT_CLOCK);
|
||||
PORT_SetPinMux(BLACKBERRY_TRACKBALL_RIGHT_PORT, BLACKBERRY_TRACKBALL_RIGHT_PIN, kPORT_MuxAsGpio);
|
||||
PORT_SetPinInterruptConfig(BLACKBERRY_TRACKBALL_RIGHT_PORT, BLACKBERRY_TRACKBALL_RIGHT_PIN, kPORT_InterruptEitherEdge);
|
||||
NVIC_EnableIRQ(BLACKBERRY_TRACKBALL_RIGHT_IRQ);
|
||||
|
||||
CLOCK_EnableClock(BLACKBERRY_TRACKBALL_TOP_CLOCK);
|
||||
PORT_SetPinMux(BLACKBERRY_TRACKBALL_TOP_PORT, BLACKBERRY_TRACKBALL_TOP_PIN, kPORT_MuxAsGpio);
|
||||
PORT_SetPinInterruptConfig(BLACKBERRY_TRACKBALL_TOP_PORT, BLACKBERRY_TRACKBALL_TOP_PIN, kPORT_InterruptEitherEdge);
|
||||
NVIC_EnableIRQ(BLACKBERRY_TRACKBALL_TOP_IRQ);
|
||||
|
||||
CLOCK_EnableClock(BLACKBERRY_TRACKBALL_BOTTOM_CLOCK);
|
||||
PORT_SetPinMux(BLACKBERRY_TRACKBALL_BOTTOM_PORT, BLACKBERRY_TRACKBALL_BOTTOM_PIN, kPORT_MuxAsGpio);
|
||||
PORT_SetPinInterruptConfig(BLACKBERRY_TRACKBALL_BOTTOM_PORT, BLACKBERRY_TRACKBALL_BOTTOM_PIN, kPORT_InterruptEitherEdge);
|
||||
NVIC_EnableIRQ(BLACKBERRY_TRACKBALL_BOTTOM_IRQ);
|
||||
}
|
||||
|
||||
void BLACKBERRY_TRACKBALL_IRQ_HANDLER(void)
|
||||
void handleTrackball(void)
|
||||
{
|
||||
GPIO_ClearPinsInterruptFlags(BLACKBERRY_TRACKBALL_LEFT_GPIO, 1U << BLACKBERRY_TRACKBALL_LEFT_PIN);
|
||||
BlackBerryTrackball_PointerDelta.x++;
|
||||
if (PORT_GetPinsInterruptFlags(BLACKBERRY_TRACKBALL_LEFT_PORT) & (1 << BLACKBERRY_TRACKBALL_LEFT_PIN)) {
|
||||
BlackBerryTrackball_PointerDelta.x++;
|
||||
GPIO_ClearPinsInterruptFlags(BLACKBERRY_TRACKBALL_LEFT_GPIO, 1U << BLACKBERRY_TRACKBALL_LEFT_PIN);
|
||||
}
|
||||
|
||||
if (PORT_GetPinsInterruptFlags(BLACKBERRY_TRACKBALL_RIGHT_PORT) & (1 << BLACKBERRY_TRACKBALL_RIGHT_PIN)) {
|
||||
BlackBerryTrackball_PointerDelta.x--;
|
||||
GPIO_ClearPinsInterruptFlags(BLACKBERRY_TRACKBALL_RIGHT_GPIO, 1U << BLACKBERRY_TRACKBALL_RIGHT_PIN);
|
||||
}
|
||||
|
||||
if (PORT_GetPinsInterruptFlags(BLACKBERRY_TRACKBALL_TOP_PORT) & (1 << BLACKBERRY_TRACKBALL_TOP_PIN)) {
|
||||
BlackBerryTrackball_PointerDelta.y++;
|
||||
GPIO_ClearPinsInterruptFlags(BLACKBERRY_TRACKBALL_TOP_GPIO, 1U << BLACKBERRY_TRACKBALL_TOP_PIN);
|
||||
}
|
||||
|
||||
if (PORT_GetPinsInterruptFlags(BLACKBERRY_TRACKBALL_BOTTOM_PORT) & (1 << BLACKBERRY_TRACKBALL_BOTTOM_PIN)) {
|
||||
BlackBerryTrackball_PointerDelta.y--;
|
||||
GPIO_ClearPinsInterruptFlags(BLACKBERRY_TRACKBALL_BOTTOM_GPIO, 1U << BLACKBERRY_TRACKBALL_BOTTOM_PIN);
|
||||
}
|
||||
}
|
||||
|
||||
void BLACKBERRY_TRACKBALL_IRQ_HANDLER1(void)
|
||||
{
|
||||
handleTrackball();
|
||||
}
|
||||
|
||||
void BLACKBERRY_TRACKBALL_IRQ_HANDLER2(void)
|
||||
{
|
||||
handleTrackball();
|
||||
}
|
||||
|
||||
@@ -13,7 +13,26 @@
|
||||
#define BLACKBERRY_TRACKBALL_LEFT_CLOCK kCLOCK_PortB
|
||||
#define BLACKBERRY_TRACKBALL_LEFT_PIN 6
|
||||
|
||||
#define BLACKBERRY_TRACKBALL_IRQ_HANDLER PORTB_IRQHandler
|
||||
#define BLACKBERRY_TRACKBALL_RIGHT_PORT PORTA
|
||||
#define BLACKBERRY_TRACKBALL_RIGHT_GPIO GPIOA
|
||||
#define BLACKBERRY_TRACKBALL_RIGHT_IRQ PORTA_IRQn
|
||||
#define BLACKBERRY_TRACKBALL_RIGHT_CLOCK kCLOCK_PortA
|
||||
#define BLACKBERRY_TRACKBALL_RIGHT_PIN 12
|
||||
|
||||
#define BLACKBERRY_TRACKBALL_TOP_PORT PORTB
|
||||
#define BLACKBERRY_TRACKBALL_TOP_GPIO GPIOB
|
||||
#define BLACKBERRY_TRACKBALL_TOP_IRQ PORTB_IRQn
|
||||
#define BLACKBERRY_TRACKBALL_TOP_CLOCK kCLOCK_PortB
|
||||
#define BLACKBERRY_TRACKBALL_TOP_PIN 2
|
||||
|
||||
#define BLACKBERRY_TRACKBALL_BOTTOM_PORT PORTB
|
||||
#define BLACKBERRY_TRACKBALL_BOTTOM_GPIO GPIOB
|
||||
#define BLACKBERRY_TRACKBALL_BOTTOM_IRQ PORTB_IRQn
|
||||
#define BLACKBERRY_TRACKBALL_BOTTOM_CLOCK kCLOCK_PortB
|
||||
#define BLACKBERRY_TRACKBALL_BOTTOM_PIN 0
|
||||
|
||||
#define BLACKBERRY_TRACKBALL_IRQ_HANDLER1 PORTA_IRQHandler
|
||||
#define BLACKBERRY_TRACKBALL_IRQ_HANDLER2 PORTB_IRQHandler
|
||||
|
||||
// Variables:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user