DS1307 modo de 12 horas

0

Estoy intentando configurar un RTC DS1307 para que esté en modo de 12 horas. He comprobado la configuración doble y triple, y no puedo entender lo que tengo mal.

Según la documentación, el bit 6 del registro 0x02 debe estar alto para habilitar el modo de 12 horas. En el modo de 12 horas, el bit 5 del registro 0x02 será alto en PM y bajo en AM.

He habilitado correctamente el modo de 12 horas en el registro. Pero al descargar el contenido del registro de hora 0x02 sin ninguna modificación, obtuve el siguiente valor al realizar la transición de 11h59m59s AM al siguiente segundo: 0x52 - > 0x41.

En esos dos valores, tengo el bit 6 alto, así que estoy en modo de 12 horas. También tengo una transición correcta de un valor de 12 horas a 1 hora. Pero el bit de AM / PM no cambia de AM a PM.

¿Qué extrañé aquí? Realmente no lo entiendo.

    
pregunta Nicolas Appriou

2 respuestas

1

Parece que los valores de registro de horas de 0x52- > 0x41 son correctos, pero para la transición de 12.xxAM a 1.xxAM.

El diseño del registro 0x02 es:

3:0 Hours low digit 4 12hr: 0=AM, 1=PM 24hr: 10's digit 5 10's digit 6 Mode: 0=24hr; 1=12hr 7 Always 0

Desglosando tus valores ...

0x52 es 0101 0010 y significa "modo de 12 horas, 10 + 2 en punto de la mañana".

0x41 es 0100 0001 y significa "modo de 12 horas, 1 en punto de la mañana".

Parece que la falla está en su programa de prueba de transferencia AM-PM.

En realidad estás probando para las 12.59AM- > 1.00AM, no para las 11.59AM- > 12.00PM que crees que estás intentando.

    
respondido por el TonyM
0

Su problema es que no hay reinversión de 12:59 pm a 13:00 (1 pm). La reinversión se produce de 11:59 a 12:00.

Los resultados parecen consistentes con la realidad.

    
respondido por el FRob

Lea otras preguntas en las etiquetas