#include "ICNT86X.h" ICNT86_Dev ICNT86_Dev_Now, ICNT86_Dev_Old; void ICNT_Reset(void) { TRST_1; DEV_Delay_ms(100); TRST_0; DEV_Delay_ms(100); TRST_1; DEV_Delay_ms(100); } void ICNT_Write(UWORD Reg, char *Data, UBYTE len) { I2C_Write_Byte(Reg, Data, len); } void ICNT_Read(UWORD Reg, char *Data, UBYTE len) { I2C_Read_Byte(Reg, Data, len); } void ICNT_ReadVersion(void) { char buf[4]; ICNT_Read(0x000a, buf, 4); printf("IC Version is %x %x \r\n", buf[0], buf[1]); printf("FW Version is %x %x \r\n", buf[2], buf[3]); } void ICNT_Init(void) { ICNT_Reset(); ICNT_ReadVersion(); } UBYTE ICNT_Scan(void) { char buf[100]; char mask[1] = {0x00}; if (ICNT86_Dev_Now.Touch == 1) { // ICNT86_Dev_Now.Touch = 0; ICNT_Read(0x1001, buf, 1); if (buf[0] == 0x00) { //No new touch ICNT_Write(0x1001, mask, 1); DEV_Delay_ms(1); // printf("buffers status is 0 \r\n"); return 1; } else { ICNT86_Dev_Now.TouchCount = buf[0]; if (ICNT86_Dev_Now.TouchCount > 5 || ICNT86_Dev_Now.TouchCount < 1) { ICNT_Write(0x1001, mask, 1); ICNT86_Dev_Now.TouchCount = 0; // printf("TouchCount number is wrong \r\n"); return 1; } ICNT_Read(0x1002, buf, ICNT86_Dev_Now.TouchCount*7); ICNT_Write(0x1001, mask, 1); ICNT86_Dev_Old.X[0] = ICNT86_Dev_Now.X[0]; ICNT86_Dev_Old.Y[0] = ICNT86_Dev_Now.Y[0]; ICNT86_Dev_Old.P[0] = ICNT86_Dev_Now.P[0]; for(UBYTE i=0; i