Caracter铆sticas RTC M41T56

M41T56 es un chip de reloj de tiempo real, que es un an谩logo del popular DS1307. Y aunque incluso el pinout del microcircuito es el mismo, tienen diferencias significativas, de las que tratar茅 de hablar.

Breve descripci贸n


No me detendr茅 en el funcionamiento del bus IIC, solo observo que ambos chips tienen la direcci贸n 0xd0. Para trabajar con el tiempo, el microcircuito contiene siete registros de cuenta y un registro de control. Los registros de cuenta contienen n煤meros en formato decimal binario, sin embargo, algunos bits tienen un significado especial.

Registros
xxx: el valor de bit no est谩 definido.
funcionindicepedacitosvalores posibles
7 76 65 54 43210 0
segundos0x00STdecenas de segundosunidades de segundos0 - 59
minutos0x01xxxdecenas de minutosunidades de minutos0 - 59
el reloj0x02SebSBdocenas de horasunidades de horas0 - 23
dia0x03xxxxxxxxxxxxxxxdia de la semana1 - 7
dia del mes0x04xxxxxxdocenas de diasunidades del d铆a1 - (28 | 29 | 30 | 31)
mes0x05xxxxxxxxxdesunidades del mes1 - 12
a帽o0x06decenas de a帽osunidades del a帽o0 - 99
registro de control0x07FueraFTScantidad de correcci贸n-

Pedacitos
x - despu茅s de encender, el estado del bit puede ser cualquiera.
un pocodespu茅s de reiniciarla descripcion
STxAl escribir 1 en este bit, el generador se detiene
CEBxCuando se establece el bit CEB (Century Enable Bit), cuando se alcanza un nuevo siglo, el bit CB (Century Bit) cambiar谩 el valor a lo opuesto.
CBx
Fuera1Cuando los bits OUT (nivel de salida) y FT (prueba de frecuencia) son iguales a cero, el pin FT / OUT se presiona contra el suelo. Con FT = 1, la salida FT / OUT es 512 Hz y el bit OUT no importa.
FT0 0
SxMarca de calibraci贸n de carrera RTC.

Las diferencias comienzan en la asignaci贸n de los bits 7, 6 y 5 del registro del reloj. En el M41T56, los bits 7 y 6 se usan para indicar la transici贸n al nuevo siglo, y los bits 5 y 4 se usan para contar decenas de horas. Adem谩s, el recuento de horas solo es posible en el modo 24, el modo AM / PM no est谩 disponible. En DS1307, el bit 7 no se usa, un cero en el bit 6 indica que se usa el modo de conteo 24, y en este caso, los bits 5 y 4 contienen decenas de horas. Si el bit 6 es uno, entonces el bit 5 se convierte en el indicador AM / PM, y el bit 4 contiene decenas de horas.

Hay diferencias significativas en el registro de control, que contiene el trazo de correcci贸n de palabra.

Correcci贸n del curso


M41T56 le permite compensar el error del resonador de cuarzo en el rango de -62 a +124 ppm, lo que proporciona una desviaci贸n de no m谩s de 卤 5 segundos por mes. Para la compensaci贸n, los seis bits menos significativos del registro de control son responsables. Los bits 4-0 contienen un n煤mero entero sin signo del valor de correcci贸n, y el bit 5 establece la direcci贸n de correcci贸n. Si el bit 5 contiene cero, la carrera se ralentiza en incrementos de 2.034 ppm, de lo contrario, RTC se acelera en incrementos de 4.068 ppm. Esto es inconveniente, por lo que esboc茅 un par de funciones simples para convertir de ppm a palabra de correcci贸n y viceversa.

/*        . */ #define MASK_CALIBR ((1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)) /*        . */ #define MASK_CALIBR_SIGN (1 << 5) /** *    . * @param caliber    RTC. * @return    ppm. */ int8_t caliber_to_ppm(uint8_t caliber) { int8_t result = caliber & MASK_CALIBR; result = (uint8_t) result * 2; if ((caliber & MASK_CALIBR_SIGN) != 0) { result = -result; } else { result = (uint8_t) result * 2; } return result; } /** *   . * @param ppm    ppm. * @return    RTC. */ uint8_t ppm_to_caliber(int8_t ppm) { uint8_t result; if (ppm < 0) { result = (uint8_t) (-ppm + 1) / 2; result |= MASK_CALIBR_SIGN; } else { result = (uint8_t) (ppm + 2) / 4; } return result; } 

Detecci贸n de fallas


Ni DS1307, pero M41T56 pueden detectar errores de generaci贸n, pero garantizan que cuando se enciende la alimentaci贸n, algunos bits estar谩n en un cierto estado. M41T56 cuando est谩 habilitado en el registro de control ser谩 10xxxxxx. Para rastrear bloqueos de programa, puede usar el siguiente algoritmo. Si, cuando se enciende el microcontrolador, el registro de control RTC contiene 10xxxxxx, entonces hubo una falla de energ铆a y se debe escribir un valor en el registro cuyos bits altos no son iguales a 10. Lo m谩s simple es escribir la palabra de correcci贸n con los bits 7 y 6 iguales a cero.

Literatura


Source: https://habr.com/ru/post/457796/


All Articles