AULA – RTC – Real Time Counter Disciplina: Aplicações Avançadas de Microprocessadores (AAM) Profa. Ana T. Y. Watanabe [email protected] “Bem-aventurado aquele que lê e bem-aventurados os que ouvem as palavras desta profecia e guardam as coisas que nela estão escritas; porque o tempo está próximo.” Apocalipse 1:3 RTC – Real Time Counter RTC – Real Time Counter O RTC consiste em: • Um contador de 8-bit (RTCCNT); • Um módulo de 8-bit (RTCMOD); • Um comparador 8-bit; • Divisor de prescaler; • Três fontes de clocks: 1) 1 kHz internal low-power oscillator (LPO) 2) External clock (ERCLK) 3) 32 kHz internal clock (IRCLK); • Período de Interrupção programável. • Aplicação: • Relógio, calendário, ou função de scheduling de tarefas, acordar (wake up) de um modo de baixo consumo sem necessidade de componentes RTC – Real Time Counter - RTCSC RTCPS: Real-Time Clock Prescaler Select. Estes 4 bits selecionam o fator de divisão do clock da fonte; Um Reset limpa RTCPS. RTIE: Real-Time Interrupt Enable. Habilita interrupção de RTC. Se RTIE está setado, então uma interrupção é gerado quando RTIF é setado. Um Reset limpa RTIE. 0 – Solicitação de interrupção por RTC desabilitado; 1 – Solicitação de interrupção por RTC habilitado; RTC – Real Time Counter - RTCSC RTCLKS: Real-Time Clock Source Select. Estes 2 bits seleciona a fonte do clock; Ao trocar a fonte reseta o contador RTCCNT; Um Reset limpa RTCLKS. 00 - Real-time clock source is the 1-kHz low power oscillator (LPO) 01 - Real-time clock source is the external clock (ERCLK) 1x - Real-time clock source is the internal clock (IRCLK) RTIF:Real-Time Interrupt Flag Este bit indica que o contador RTCCNT atingiu o valor do módulo RTCMOD. Escrever 0 neste bit não tem efeito, mas ao escrever 1 limpa o bit e a solicitação de interrupção; Um Reset limpa RTIF. 0 – O Contador RTCCNT não atingiu o RTCMOD; 1 – O Contador RTCCNT atingiu o RTCMOD; RTC – Real Time Counter Período do prescaler: ADC – Conversor Analógico Digital Exemplo de Aplicação: RTC – Real Time Counter REGISTRADORES PARA SEREM CONFIGURADOS: 1) RTCSC 2) RTCMOD RTC – Real Time Counter #include <hidef.h> /* for EnableInterrupts macro */ #include "derivative.h" /* include peripheral declarations */ // macros e definições #define Desabilita_COP() SOPT1 &= 0x3F // desabilita COP void main(void) { Desabilita_COP(); PTED = 0xFF; // desliga leds PTEDD = 0xFF; // configura para saidas // configura a Interrução de timer RTC RTCSC = 0x1F; // 1 seg Interrupção habilitada EnableInterrupts; /* enable interrupts */ for(;;) { } /* loop forever */ /* please make sure that you never leave main */ } RTC – Real Time Counter interrupt VectorNumber_Vrtc void ISR_RTC(void) { RTCSC_RTIF = 1; // reseta flag do RTC PTED = ~PTED; } RTC – Real Time Counter Exercício: Utilizar RTC para obter timer nos projetos.