Lab. Processadores: Programação do LPC2478 usando o gcc

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

Neste exemplo vamos fazer o programa a05_relogio.tgz para testar a configuração do relógio (RTC = Real time clock). O lpc2478 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 LPC2478

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]