terça-feira, abril 28, 2020

Relógio de Tempo Real: PCF8583

O último RTC desta série é o PCF8583 da NXP. Atenção que a NXP fabrica também os modelos PCF8563, PCF8565 e PCF8593 com características diferentes.


O datasheet do PCF8583 está aqui, um manual do usuário dá informações adicionais, Novamente é um RTC que usa I2C para a comunicação, suportando até 100KHz. O endereço pode ser selecionado, através de um pino, entre 0x50 e 0x51. O PCF8563 requer um cristal externo de 32768Hz.

Uma desvantagem do PCF8583 é que ele não tem suporte interno a bateria. Para ter uma bateria para manter a data e hora é preciso acrescentar alguns componentes, como no circuito abaixo (ele funciona com tensões de 1,0 a 6,0V, mas neste circuito Vsup deve ser da ordem de 5V).



O PCF8583 possui generosos 240 bytes de Ram e um alarme:



A figura acima mostra também o uso do PCF8583 como contador de eventos, neste post vou ignorar esta característica.

Como de costume, os acessos ao RTC são iniciados pela escrita de um endereço, seguida da leitura ou escrita do dado propriamente dito.  Posições consecutivas podem ser acessadas sem enviar o endereço para cada uma até que seja enviada a condição de stop.

A organização dos registadores de data e hora do PCF8583 é um pouco "especial":


Reparar que temos só 2 bits para o ano! A solução é guardar o ano na RAM e atualizá-lo na leitura quando percebermos que os bits mudaram. É o que é feito no driver para o Linux.

No Gerenciador de Bibliotecas do Arduino encontramos duas bibliotecas que suportam o PCF8583:


O esquema que vimos nos dois posts anteriores para uso de RTCs no Raspbery não funciona, pois não temos um overlay para o PCF8583. O jeito é carregar explicitamente o driver, como descrito aqui.

Nenhum comentário: