4 votos

DS1307 RTC Debug

Estoy teniendo problemas para conseguir el DS1307 RTC a trabajar. Le estoy hablando a través de un Arduino, y sólo estoy tratando de conseguir un boceto de ejemplo para trabajar. He intentado dos bibliotecas diferentes - una de Ladyada y uno de Seeedstudios . Eléctricamente, tengo tanto el Arduino como la RTC alimentados por 5V, y la entrada VBAT de la RTC conectada a tierra (según la hoja de datos, ya que no estoy usando una batería durante las pruebas). Estoy construyendo usando el IDE de Arduino-0022. Tengo 10k pullups en las líneas SDA y SCL. Tradicionalmente he usado pullups más pequeños en el bus I2C (por ejemplo, 3,3k o 4,7k), pero no creo que ese sea mi problema.

Ambas bibliotecas indican básicamente que los datos que devuelve el dispositivo son todos ceros para la fecha y la hora. Así que fui y capturé el tráfico de I2C usando un osciloscopio (usando la biblioteca de Seeedstudios) y esto es lo que parece:

enter image description here

Esa misma transacción se repite a intervalos regulares. El rastro amarillo es SCL, el azul es SDA. ¿Cómo interpretas ese intercambio I2C? Tengo mis propias teorías, pero estoy buscando una evaluación independiente. Dado ese rastro, ¿crees que el DS1307 está cocido? ¿Crees que es un problema de software? ¿Otras ideas?

2voto

RelaXNow Puntos 1164

Probablemente tengas la dirección del chip del objetivo equivocada. Estás enviando 68h. O esa no es la dirección del chip o no está bien conectado. Las dos secuencias que muestras son primero una escritura y luego una lectura a esa dirección. En ambos casos, no se recibió ningún ACK, así que la secuencia se terminó. Revisa la hoja de datos para la dirección del chip.

Añadido:

Acabo de mirar en la hoja de datos, y la dirección de ese chip es realmente 68h (página 12), así que ese no es el problema. Eso deja algo que no está conectado al chip. Los rastros de su alcance se ven bien en que un chip correctamente cableado y funcionando debería han respondido con ACK hasta donde puedo decir.

0voto

Arvin Puntos 136

La dirección es incorrecta. La dirección es de 7 bits, que es 0x68, pero hay que añadir el bit R/W. La escritura sería 0 y la lectura es 1. Lo que lo haría 0xD0 para la escritura.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X