gera, en el anterior comentario, hice dos correcciones:
1. no considerabas el bit de r/w (resuelto)
2. no mandabas la direccion de memoria que querias leer
no se si estoy equivocado, pero me parece que la funcion i2c_read(0x02) es incorrecto
la ayuda del ccs dice lo siguiente:
Syntax:
data = i2c_read();
data = i2c_read(ack);
data = i2c_read(stream, ack);
Parameters:
ack -Optional, defaults to 1.
0 indicates do not ack.
1 indicates to ack.
stream - specify the stream defined in #USE I2C
o sea que solo se puede mandar como parametro "1" o "0"
no se si el parametro 0x02 es la dirccion de memoria que esperas recibir
aumenta la siguiente codigo en la linea 22:
22. i2c_write(0x02); //direccion del touchpad status register
23. i2c_read();
por defecto envia ack, si no da, prueba con nack (0) y si nada siempre, diria que es la targeta