Funções RTC M41T56

M41T56 é um chip de relógio em tempo real, que é análogo ao popular DS1307. E mesmo que a pinagem do microcircuito seja a mesma, eles têm diferenças significativas, sobre as quais tentarei falar.

Breve descrição


Não vou me debruçar sobre a operação do barramento IIC, observo apenas que os dois chips têm o endereço 0xd0. Para trabalhar com o tempo, o microcircuito contém sete registros de contas e um registro de controle. Registradores de contas contêm números no formato decimal binário, no entanto, alguns bits têm um significado especial.

Registros
O valor de xxx bits não está definido.
funçãoíndicebitsvalores possíveis
76543210 0
segundos0x00STdezenas de segundosunidades de segundos0 - 59
minutos0x01xxxdezenas de minutosunidades de minutos0 - 59
o relógio0x02SebSBdezenas de horasunidades de horas0 - 23
dia0x03xxxxxxxxxxxxxxxdia da semana1 - 7
dia do mês0x04xxxxxxdezenas de diasunidades do dia1 - (28 | 29 | 30 | 31)
mês0x05xxxxxxxxxdesunidades do mês1 - 12
ano0x06dezenas de anosunidades do ano0 - 99
registro de controle0x07OUTFTSvalor de correção-

Bits
x - após ligar, o estado do bit pode ser qualquer.
um poucoapós a reposiçãoa descrição
STxAo escrever 1 neste bit, o gerador para
CEBxQuando o bit CEB (Century Enable Bit) é definido, quando um novo século é alcançado, o bit CB (Century Bit) altera o valor para o oposto.
CBx
OUT1Quando os bits OUT (nível de saída OUT) e FT (Frequency Test) são zero, o pino FT / OUT é pressionado ao terra. Com FT = 1, a saída FT / OUT é de 512 Hz e o bit OUT não importa.
FT0 0
SxMarca de calibração do curso RTC.

As diferenças começam na atribuição dos bits 7, 6 e 5 do registro do relógio. No M41T56, os bits 7 e 6 são usados ​​para indicar a transição para o novo século, e os bits 5 e 4 são usados ​​para contar dezenas de horas. Além disso, a contagem de horas é possível apenas no modo 24, o modo AM / PM não está disponível. No DS1307, o bit 7 não é usado, um zero no bit 6 indica que o modo de contagem 24 é usado e, neste caso, os bits 5 e 4 contêm dezenas de horas. Se o bit 6 é um, o bit 5 se torna o sinalizador AM / PM e o bit 4 contém dezenas de horas.

Diferenças significativas estão no registro de controle, que contém o curso de correção da palavra.

Correção de curso


O M41T56 permite compensar o erro do ressonador de quartzo na faixa de -62 a +124 ppm, o que resulta em um desvio não superior a ± 5 segundos por mês. Para compensação, os seis bits menos significativos do registro de controle são responsáveis. Os bits 4-0 contêm um número inteiro não assinado do valor de correção, e o bit 5 define a direção da correção. Se o bit 5 contiver zero, o curso diminui em passos de 2,034 ppm, caso contrário, o RTC acelera em passos de 4,068 ppm. Isso é inconveniente, por isso esbocei algumas funções simples para converter de ppm em palavra de correção e vice-versa.

/*        . */ #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; } 

Detecção de falhas


Nem o DS1307, mas o M41T56 podem detectar erros de geração, mas garantem que quando a energia for ligada, alguns bits estarão em um determinado estado. M41T56, quando ativado no registro de controle, será 10xxxxxx. Para rastrear falhas no programa, você pode usar o seguinte algoritmo. Se, quando o microcontrolador estiver ligado, o registro de controle RTC contiver 10xxxxxx, houve uma falha de energia e um valor deverá ser gravado no registro cujos bits altos não sejam iguais a 10. O mais simples é escrever a palavra de correção com os bits 7 e 6 iguais a zero.

Literatura


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


All Articles