Starting with a virgin demo_apps/touch_cursor project from a SDK_2.0_LPCXpresso54608 generated for Keil... I get the expected results running under debug. If I remove the USB and plug it in again, the program runs as it did under the debugger. Now if I replace the for(;;) in main() with the following code to use GetMultiTouch function, it runs great under the debugger. The cursor will jump to the last contact point as I apply 1, 2, 3, 4 fingers. But If I remove USB and plug it in again, then the cursor never moves as I touch the panel. If I press target reset on the back of the board, then it works ok.
for (;;)
{
touch_point_t points[FT5406_MAX_TOUCHES];
if (kStatus_Success == FT5406_GetMultiTouch(&touch_handle, NULL, points))
{
for (int i = 0; i != FT5406_MAX_TOUCHES; ++i)
{
touch_point_t *p = points + i;
if (p->TOUCH_EVENT == kTouch_Down)
APP_SetCursorPosition(p->TOUCH_Y, p->TOUCH_X);
}
}
}
Hi Tom,
The LCD display does not detect any touch the first time the program runs so it will read back all 0xFF and this will cause the application to decode 0xFF number of touches causing a hardfault, please add the following code to the FT5406_GetMultiTouch function just before the line that says /* Decode valid touch points */ :
/* No touch, first time program runs */
if (touch_data->TD_STATUS == 0xFF)
{
touch_data->TD_STATUS=0x0;
}
Hope it helps!
Best Regards,
Carlos Mendoza
Technical Support Engineer
That solved the problem for me. Thanks