Você está na página 1de 5

Uso do RTC (Relógio de tempo real) DS1302 com um microcontrolador PIC

Em muitas aplicações onde se faz necessário gravar alguns “registros”, a possibilidade


de ter nestes a data e hora da coleta dos dados pode ser um item de suma importância. O
uso de um relógio de tempo real (como o DS1302 da Dallas) pode ser uma boa
alternativa para solucionar o problema. Neste artigo o leitor aprenderá um pouco mais
sobre este componente e como utilizá-lo com o microcontrolador PIC.

Márcio José Soares

O DS1302

O relógio de tempo real DS1302 da Dallas é um CI que permite a contagem de


segundos, minutos, horas, dias, meses, anos e dias da semana, com compensação para o
ano e validade até 2100.

figura 1 - Pinagem do CI DS1302

Na figura 1 o leitor tem a pinagem deste CI na sua versão DIP 8 pinos. A tabela 1 traz a
descrição destes pinos e sua função básica.

Tabela 1 - Descrição dos pinos do DS1302


Uso do RTC (Relógio de tempo real) DS1302 com um microcontrolador PIC

Em muitas aplicações onde se faz necessário gravar alguns “registros”, a possibilidade


de ter nestes a data e hora da coleta dos dados pode ser um item de suma importância. O
uso de um relógio de tempo real (como o DS1302 da Dallas) pode ser uma boa
alternativa para solucionar o problema. Neste artigo o leitor aprenderá um pouco mais
sobre este componente e como utilizá-lo com o microcontrolador PIC.

Márcio José Soares


Figura 2 - Diagrama de blocos do DS1302

Na figura 2 o leitor pode ver o diagrama de blocos do CI DS1302. A operação deste CI


depende exclusivamente da compreensão do seu padrão de comunicação e do trabalho
com seus registradores.
Figura 3 - Gráfico de transferência de dados
Na figura 3 ilustramos o gráfico que demonstra a transferência de dados do DS1302, tanto
para escrita como para leitura. Se o leitor observar atentamente verá que o modo de
comunicação é o 3-Wire (já demonstrado na revista Eletrônica Total no artigo – Termômetro
Digital com Microcontrolador PIC – edição nº111).

O nome “3-Wire” reflete diretamente o tipo de comunicação que temos neste componente:
uma comunicação do tipo “serial síncrona”, com três fios: Dados (I/O), “Clock” (SCLK) e “Reset”
(/RST). Neste tipo de comunicação o elemento de controle “mestre” (microcontrolador) é
responsável pela geração do “clock” de sincronismo para comunicação e também pelo
controle do “Reset”. No caso do DS1302, o mesmo é feito levando o pino /RST ao nível lógico
“1”. Quando isto é feito, seu pino de dados é levado ao estado “tri-state” (alta impedância).

Figura 4 -  Gráfico dos tempos para transferência de dados - leitura.

Na figura 4 vemos o gráfico que demonstra os tempos para a transferência de dados entre o
DS1302 e um microcontrolador (microcontrolador lendo os registradores do DS1302).

Figura 5 - Gráfico dos tempos para transferência de dados - escrita

Já na figura 5 observamos o gráfico que demonstra os tempos para a transferência de dados


entre um microcontrolador qualquer e o RTC (microcontrolador escrevendo nos registradores
do DS1302).
Nota: Os valores máximos, mínimos e médios para os tempos informados em ambos os
gráficos devem ser consultados no “datasheet” do componente inserido em nosso site.

Como dito anteriormente, não basta apenas conhecer o modo de comunicação e seus tempos.
É necessário compreender as funções dos registradores internos do DS1302, que fazem todo o
controle do CI. Na figura 6 o leitor encontrará estas informações.

Figura 6 - Registradores internos de controle do DS1302

A interpretação dessa figura é bem simples. Na coluna “Register Address” temos o endereço
do registro, e na coluna “Register Definition” a definição e o modo de uso do registro. Como
exemplo, vamos analisar o registro de numero 80H (segundos).

Neste registro é possível escrever um valor “BCD” (Binary Coded Decimal – Decimal Codificado
em Binário) de 0 a 59 (segundos). Este é o registro de escrita para o dado – “segundos”. O
endereço 81H permite a leitura do dado - “segundos”.

A forma com que o dado é escrito ou lido é de fundamental importância. É importante que o
leitor compreenda que o dado é passado ou lido no formato “BCD” e não no formato binário
puro.

No formato BCD cada dígito de um valor decimal qualquer é codificado (ou representado)
separadamente. Como um digito decimal pode assumir valores entre 0 a 9, são necessários
quatro bits para a codificação em BCD de cada dígito. Considere o valor 953 decimal, sua
codificação BCD ficaria então:

Se a conversão do valor 953 fosse feita para o binário puro o resultado seria b1110111001. O
leitor deve ter notado que os bits foram dispostos de maneira completamente diferente para
ambos os casos. No caso binário puro a conversão é feita de forma direta, mas no caso BCD,
cada “digito decimal” foi convertido separadamente.

Todos os outros registradores do DS1302 como “minutos”, “mês” e “dia da semana” (1 a 7)


seguem o mesmo princípio. O registrador que contém o dado “hora” tem apenas uma
diferença. Dependendo do valor inserido no bit7 deste mesmo registrador, o bit5 em conjunto
com o bit4 será utilizado para marcar o dígito da segunda dezena (0010) da hora para o
formato 24 horas, ou ainda um bit que indicará a nomenclatura “AM” ou “PM” para o formato
12 horas.

O leitor deve ter muita atenção ao lidar com os registradores do DS1302 para evitar
problemas. Lembre-se, os registradores são escritos e lidos no formato BCD !!!

Obs.: O DS1302 possui também recursos para carga da bateria de “backup”. Este recurso não
será discutido neste artigo. O leitor interessado neste recurso poderá, através do “datasheet”,
encontrar as informações necessárias para o seu uso.

Você também pode gostar