1. RTC – Real Time Counter
As principais características do RTC são:
- Contador de 8 bits:
- Módulo de 8 bits com limitador;
- Período de interrupção controlável por software.
- Três fontes de clock selecionáveis por software: estas fontes de clock são utilizadas em prescaler para gerar a base de tempo do RTC:
- LPO: 1 kHz interno;
- o ERCLK: External clock;
- IRCLK: 32 kHz interno.
1.1. Diagrama em blocos

1.2. Funcionamento do RTC em Modos de operação
A família Flexis tem a característica de operar em modos diferenciados para baixo consumo de energia. São os Low Power Modes da família Flexis. Dependendo de qual LPM se está operando, o RTC terá comportamentos distintos, como mostrado a seguir.
1.2.1. Operação do RTC quando em Wait Mode
Neste modo o RTC continuará a operar se estiver habilitado antes de executar a instrução WAIT (que coloca o MCU em Wait Mode). Deste modo o próprio RTC pode ser utilizado para acordar o MCU do Wait Mode, através de interrupções programadas. Caso seja desejado o menor consumo de corrente possível, o RTC deve ser desligado por software quando não estiver sendo utilizado no Wait Mode.
1.2.2. Operação do RTC quando em Stop Mode
O RTC continua a funcionar em STOP2 ou STOP3 se ele foi habilitado antes das instruções STOP. Deste modo o próprio RTC pode ser a fonte de interrupção que será utilizada para acordar o MCU, se as interrupções estiverem habilitadas e configuradas.
A fonte de clock LPO está disponível nos modos STOP2 e STOP3. As fontes de clock ERCLK e IRCLK estão disponíveis apenas no modo STOP3.
1.2.3. Operação do RTC quando em Active Background Mode
O RTC suspenderá todas as contagens durante o Active Background Mode até que o MCU retorne ao modo de operação normal. A contagem recomeça no valor exato que estava no registrador até que o RTCMOD não seja escrito e os bits em RTCCPS e RTCLKS não sejam alterados.
1.3. Os registradores que controlam o RTC

1.3.1. RTCSC -> RTC Status and Control Register

O que cada bit faz neste registrador é mostrado na tabela a seguir:

1.3.2. RTCCNT -> RTC Counter Register

1.3.3. RTCMOD -> RTC Modulo Register

1.4. Funcionamento do RTC
Após qualquer reset do MCU o contador será parado e resetado (assume valor 0x00), o registrador de módulo também vai para 0x00 e o prescaler é desligado. Após o reset, a fonte de clock de 1 kHz interna será selecionada como fonte padrão. Se um novo valor é ajustado nos bits RTCLKS, o prescaler e o RTCCNT serão zerados.
Para ajustar o valor do prescaler é necessário ajustar os bits RTCPS, de acordo com a tabela abaixo:

O modulo RTCMOD permite compara qualquer valor entre 0x00 e 0xFF. Quando o contador está ativo, este será incrementado através da fonte de clock ajustada até que o valor do contador seja igual ao valor do módulo RTCMOD. Neste momento o contador será resetado e continuará a contar.
A flag de interrupção RTIF será setada toda vez que uma igualdade ocorrer entre os registradores contador (RTCCNT) e o módulo (RTCMOD). Escrever no registrador RTCMOD causará o reset do prescaler e do RTCCNT.
1.4.1. Gráfico de estados lógicos no RTC

1.4.2. EXEMPLO 33: Como inicializar e utilizar o RTC
Veja no EXEMPLO 33 como fazer um pisca-pisca com um segundo utilizando o RTC:


1.4.3. EXEMPLO 34: Utilizando o RTC para contar tempo
Um código possível de se utilizar para contar tempo com o RTC é mostrado no EXEMPLO 34.
Veja que a configuração de segundos, minutos, horas e dias é de responsabilidade do programador.
Para ajustes de data (dia do mês, dia da semana, ano, etc.), também será de responsabilidade do programador escrever um código que incremente o calendário a cada estouro do RTC.
É bom lembrar que a fonte interna de 1 Khz, utilizada nos dois exemplos mostrados anteriormente, é bem menos precisa do que a utilização de um cristal de relógio de 32768 Hz.











