/** * @brief Read the coordinate of the point touched and assign their * value to the variables u32_TSXCoordinate and u32_TSYCoordinate * @param None * @retval None */ void TSC_Read(void) { #if TOUCH_SCREEN_CAPABILITY TSC_Value_X = 0x00; TSC_Value_Y = 0x00; if((I2C_ReadDeviceRegister(pTscHwParam.TSC_DeviceRegister, GL_TSC_CTRL) & 0x80)) { GL_Delay(TOUCH_DELAY); /* Stop touchscreen controller */ I2C_WriteDeviceRegister(pTscHwParam.TSC_DeviceRegister, GL_TSC_CTRL, 0x00); TSC_Value_X = I2C_ReadDataBuffer(pTscHwParam.TSC_DeviceRegister, GL_TSC_DATA_Y); TSC_Value_Y = I2C_ReadDataBuffer(pTscHwParam.TSC_DeviceRegister, GL_TSC_DATA_X); I2C_ReadDataBuffer(pTscHwParam.TSC_DeviceRegister, GL_TSC_DATA_Z); u32_TSXCoordinate = getDisplayCoordinateX( TSC_Value_X, TSC_Value_Y ); u32_TSYCoordinate = getDisplayCoordinateY( TSC_Value_X, TSC_Value_Y ); touch_done = 1; /* Clear the interrupt pending bit and enable the FIFO again */ I2C_WriteDeviceRegister(pTscHwParam.TSC_DeviceRegister, GL_FIFO_CTRL_STA, 0x01); I2C_WriteDeviceRegister(pTscHwParam.TSC_DeviceRegister, GL_INT_STA, IOE_TS_IT); I2C_WriteDeviceRegister(pTscHwParam.TSC_DeviceRegister, GL_FIFO_CTRL_STA, 0x00); GL_Delay(0x02); /* Enable touchscreen controller */ I2C_WriteDeviceRegister(pTscHwParam.TSC_DeviceRegister, GL_TSC_CTRL, 0x01); GL_Delay(0x05); /* check if the FIFO is not empty */ if(I2C_ReadDeviceRegister(pTscHwParam.TSC_DeviceRegister, GL_FIFO_CTRL_STA) != 0x20) { /* Flush the FIFO */ I2C_WriteDeviceRegister(pTscHwParam.TSC_DeviceRegister, GL_FIFO_CTRL_STA, 0x01); I2C_WriteDeviceRegister(pTscHwParam.TSC_DeviceRegister, GL_FIFO_CTRL_STA, 0x00); } } else { GL_Delay(1); } #endif }
void TSC_Read(void) { #if TOUCH_SCREEN_CAPABILITY if (TP_IRQ != SET) { TSC_Value_X = 0x00; TSC_Value_Y = 0x00; TP_GetAdXY(&TSC_Value_X, &TSC_Value_Y); u32_TSXCoordinate = getDisplayCoordinateX( TSC_Value_X, TSC_Value_Y ); u32_TSYCoordinate = getDisplayCoordinateY( TSC_Value_X, TSC_Value_Y ); touch_done = 1; } #endif }