fenglogo
Laboratório de Processadores
Programação do LPC2378 usando o arm-elf-gcc
Parte 5: Relógio RTC
puclogo

Neste exemplo vamos fazer o programa a05_relogio.tgz para testar a configuração do relógio (RTC = Real time clock). O lpc2378 tem um conjunto de contadores com a finalidade de implementar um relógio para manter atualizada a hora e data do sistema. O relógio pode ser configurado para usar como base de tempo o clock do sistema, passando por um preescalonador ou usar um oscilador dedicado de 32768Hz alimentado com backup de bateria. Com a alimentação por bateria, pode-se configurar o relógio para manter um horário atualizado inclusive quando a alimentação principal está desligada.

O pograma a05_relogio.tgz mostra horas, minutos e segundos no display LCD e pode ser acertado usando os botões.

O RTC do LPC2378

Usam-se os seguites registradores para configurar e usar o relógio:
RTC_CCR
0xE0024008
Clock Control Register: Configura a fonte de temporização do RTC. A oscilação pode vir do clock principla do sistema ou de um oscilador específico para o RTC, alimentado por bateria.
bit 0: Habilita o relógio. Em 1 o RTC funciona. Em zero todos os registradores são inicializados
bit 1: Reset: Em 1 força todos os registradores para o estado inicial.
bit 2,3: Não usados. Devem ser mantidos em zero.
bit 4: Seleciona a fonte de claock: Em zero pega a oscilação do clock do sistema com o prescaler. Em um pega diretamente do oscilador específico do RTC.
bits 5 a 7:Não usados. Devem ser zero.
RTC_PREINT
0xE0024080
Parte inteira de preescalonador de frequencia. Quando usa-se o clock da CPU (PCLK=12MHz) para o relógio, este registrador deve ser configurado com o valor:
RTC_PREINT = (PCLK >> 17)-1;
RTC_PREFRAC
0xE0024084
Parte fracionária de preescalonador de frequencia. Quando usa-se o clock da CPU (PCLK=12MHz) para o relógio, este registrador deve ser configurado com o valor:
RTC_PREFRAC = (PCLK >> 2) & 0x7fff;
RTC_SEC
0xE0024020
Contador de segundos [0 a 59]
RTC_MIN
0xE0024024
Contador de minutos [0 a 59]
RTC_HOUR
0xE0024028
Contador de horas [0 a 23]
RTC_DOM
0xE002402C
Dia do mes [1 a 31]
RTC_DOW
0xE0024030
Dia da semana [0 a 6]
RTC_DOY
0xE0024034
Dia do ano [1 a 365 (366 em ano bisexto)]
RTC_MONTH
0xE0024038
Mes [1 a 12]
RTC_YEAR
0xE002403C
Ano [0 a 4095]