I2C con DS1307 se bloquea después del final de la transmisión

1

Tengo un RTC elaborado en casa con DS1307 . Puse dos resistencias pullup en las líneas SDA y SCL, las conecté al Arduino 5 y 6 pin respectivamente. También proporcioné una batería de respaldo ya que en ocasiones leo que el RTC puede bloquearse si no hay un voltaje de respaldo adecuado. El programa arduino cuelga en la instrucción:

int err = Wire.endTransmission();

Supongo que no hay respuesta del dispositivo, por lo que los SW esperan indefinidamente. Extrañamente, si elimino las conexiones I2C, endOfTrasmission devuelve un código de error NACK (lo digo de forma extraña porque es mejor esperar un bloqueo sin ningún dispositivo conectado). No tengo idea de qué probar, sospecho que el DS1307 está dañado por alguna prueba aventurera en el intercambio de datos A5-A6 pero no tengo idea de cómo hacer este diagnóstico.

    
pregunta Felice Pollano

1 respuesta

2

[Enviar mi comentario como respuesta]

¿Qué sentido tendría colgar la escritura si el esclavo no ACK? No es como si pudiera volver más tarde; se ha perdido su oportunidad. Lo más probable es que el DS1307 esté manteniendo presionada la línea SCL. El maestro interpretaría esto como un "estiramiento de reloj" y podría esperar indefinidamente a que se libere. Como dice, puede haber dañado el chip o tiene un corto en el paquete.

    
respondido por el DoxyLover

Lea otras preguntas en las etiquetas