Importancia de la fecha de cronometraje DS1307 (¿segundos bisiestos?)

Como parte de un proyecto de pasatiempo, construí un reloj LED binario BCD relativamente simple usando un microcontrolador PIC y un RTC DS1307. Tras la pérdida de energía de la batería, el DS1307 se restablece a 01/01/00 00:00:00, lo que tiene sentido. Sin embargo, dado que el usuario solo puede ver las horas, los minutos y los segundos en mi reloj, no tiene sentido establecer la fecha.

Mi pregunta es, ¿cuál es la relevancia de configurar la fecha en un DS1307 en relación con el cronometraje? Hasta donde yo sé, la única relación entre la hora y la fecha es una corrección de un segundo intercalar cada pocos años que dudo que implemente el DS1307.

¿Está bien dejar que la fecha permanezca 01/01/00? Asumiría que no haría que el tiempo se desviara mucho, pero tal vez me estoy perdiendo algo.

De cualquier manera, es solo un reloj de pasatiempo, la precisión no es una misión crítica, solo pregunto por curiosidad.

¡Gracias de antemano!

Esa corrección de segundos intercalares a lo largo de los años, por supuesto, no está implementada, porque el RTC tiene una desviación muy alta. Si el tuyo tiene un error de solo 1 segundo/día, es excelente.
@MarkoBuršič te mostró un punto importante. Puede mantener la fecha como está. Los segundos bisiestos ocurren de forma impredecible (ver wiki de segundos bisiestos ). DS1307 solo admite años bisiestos, como puede leer en el manual . Si quieres jugar con la precisión teórica de tu reloj, encontré una página interesante relacionada con tu página de RTC. La precisión real depende no solo del cristal sino también del diseño de la placa de circuito impreso.

Respuestas (2)

Puede muy bien operar el chip RTC dejando el campo "fecha" en su valor predeterminado inicial. Sin embargo, encontrará que, al habilitar el RTC para contar el campo "hora", una vez cada 24 horas, el campo "fecha" acumulará otro día.

Establecer o no el campo "fecha" no tendrá ningún impacto en la precisión del RTC o en su consumo de energía de ninguna manera medible de manera realista.

No he trabajado con ningún RTC con una "función de horario de verano" (DST), pero si hubiera un RTC con dicha función y estuviera habilitado, vería que interactúa con su campo de "hora". En ese caso, probablemente querrá que su reloj comprenda la fecha. Como dije, es poco probable encontrar un chip RTC con la función DST, ya que dicha función es diferente en muchas partes del mundo y está sujeta a cambios en cualquier área en particular según el capricho de los tipos gubernamentales.

He visto dos tipos de soporte DST en el hardware RTC: algunos dispositivos tienen un bit cuyo uso sugerido es realizar un seguimiento de si el reloj representa la luz del día o la hora estándar. Al menos un dispositivo tiene una función para adelantar o atrasar el reloj exactamente una hora (sin alterar el conteo de segundos), pero con la pequeña y divertida advertencia de que una solicitud para atrasar el reloj una hora se emite entre la medianoche y la 1:00 a.m. Silenciosamente no podrá hacer nada.
Gracias por la respuesta. Lo que describes es lo que actualmente ya he implementado, así que gracias por la aclaración. Echaré un vistazo a algunos RTC que no realizan un seguimiento de la fecha (o posiblemente usen un RTC incorporado de PIC).
Si busca una MCU que tenga un RTC incorporado, prepárese para un poco de trabajo adicional, un mayor consumo de batería y posiblemente alguna decepción. Casi todas las MCU que he visto que admiten RTC no tienen una batería separada que se encienda automáticamente en el chip. Entonces, si desea admitir RTC en chip, debe diseñar su placa con un sistema de suministro de energía más complejo que puede cambiar entre batería y Vdd. Actualmente estoy trabajando con la familia de piezas PIC32MZ y si desea mantener el RTC funcionando mientras el sistema está apagado, la MCU debe ponerse en modo de suspensión mientras (continuación)
(continuación de arriba) se está quedando sin batería. El consumo de energía es mucho más de lo que puede lograr con un chip RTC independiente ubicado en un bus I2C. Seleccione el chip correcto y puede admitir el cambio de batería directamente en el chip, dura mucho tiempo con una batería de moneda pequeña y tiene una interfaz simple.
(Continuación) Si tiene una MCU que tiene un RTC incorporado, aún puede optar por usarla en tiempo de ejecución para obtener un acceso más rápido a los valores de tiempo y simplemente cargarla al inicio desde el chip RTC externo. Incluso he hecho algo similar en el que uso un RTC de software simple que desactiva una interrupción del temporizador y simplemente lo inicio con el valor de hora/fecha de inicio del RTC externo. Para algunos sistemas integrados en tiempo real, tomar los 6 o 7 ms para leer un chip I2C RTC impone un retraso de tiempo que no es atractivo.

No hay relevancia si no la necesitas.

Hay algunos tipos de RTC disponibles.

  1. Contador sencillo. Cuenta los segundos desde el último set/reset.
  2. Reloj. Cuenta el tiempo en formato legible por humanos, hh:mm:ss
  3. Calendario. Hora y fecha. El DS1307 es esto.
  4. Alarma. Se interrumpirá en una fecha u hora específica según lo establecido.
  5. Registrador. Registra el tiempo de un evento o interrupción.

Por lo general, cada uno incluye todos los que están por encima. Estas son solo funciones adicionales que puede usar si lo desea . De lo contrario, ignórelos, a menos que la hoja de datos indique que deben establecerse en un valor válido específico.

Simplemente puede ignorar la función de calendario del DS1307.

Francamente, si desea un proyecto de verdadero aficionado, deshágase del DS1307 e implemente su propio reloj en el software, con o sin un cristal de 32 khz.

Me doy cuenta de que es excesivo usar un DS1307, el PIC que estoy usando incluso tiene un RTC incorporado. Sin embargo, el propósito del proyecto era familiarizarme con protocolos como I2C y cómo funciona el sistema de registro de un dispositivo I2C típico. Aprendí mucho para alcanzar ese objetivo. Gracias por la aclaración de todas formas