
BRAVO!!!!

Por fin lo has conseguido!!!
Genial, lo del tic del sounder es genial, y la sensibilidad se ve muy bien. ¿Has probado con las pistas adyacentes si generan sensado?
Tiene muuuuyyyyy buena pinta este controlador... habrá que probarlo.
A ver si esta sugerencia te sirve. En la lectura donde tu tienes:
I2C_Start(); // inicia condicion de start
I2C_Wr(0b10111001); //manda direccion del esclavo en modo lectura (Bit0=1) direccion slave 0b1011100 (0x5c)
I2C_Wr(0x13); // escribe direccion del comando a leer
Dato=I2C_Rd(0); // espera que el esclavo mande el byte de dato leido
I2C_Stop(); // termina, genera condicion de stop
Prueba a introducir una condición de Start y una de stop al I2C as:
I2C_Start(); // inicia condicion de start
I2C_Wr(0b10111001); //manda direccion del esclavo en modo lectura (Bit0=1) direccion slave 0b1011100 (0x5c)
I2C_Wr(0x13); // escribe direccion del comando a leer
I2C_Stop(); // termina, genera condicion de stop
--- Aqui podrías poner un pequeño delay de unos 25-50 "NOPs" o ciclos de reloj
I2C_Start(); // inicia condicion de start Dato=I2C_Rd(0); // espera que el esclavo mande el byte de dato leido
I2C_Stop(); // termina, genera condicion de stop
Es que la secuencia de lectura, va despues de una de escritura de la dirección del registro a leer y pienso que deben ser completas con su start y su stop ya que mantiene internamente la dirección del registro seleccionado.
Ya contarás...
Me alegro mucho que esto funcione, porque te lo has currado un montón y has probado diferentes configuraciones y diseños hasta dar con el óptimo sin desfallecer o desistir.
Enhorabuena.
Salu2