Go Down

Topic: Discussão - RTC Nativo ou chip (Read 955 times) previous topic - next topic

bubulindo

Viva,

Tenho estado a ver e em chips com mais de 40 pinos, a ATMEL normalmente coloca dois pinos chamados (TOSC1 e 2) que servem para ligar um cristal de 32kHz e criar um RTC no chip. Nos arduinos normais, isto também é possível, mas para funcionar o Arduino terá de funcionar com o cristal interno (8MHz) uma vez que os pinos TOSC são também os XTAL.

O que gostaria de saber era se vocês preferem usar um chip externo (a bateria é um ponto bastante forte) ou se pudessem, usariam antes um RTC interno ao arduino?
This... is a hobby.

AlxDroidDev

Boa discussao, e eu tenho pensado sobre isto recentemente.

A grande questao é que o RTC do Arduino nao tem a funçao de armazenar datas e horários. Sua funçáo é apenas manter um contador interno em milisegundos. Este contador é zerado todas as vezes que o arduino é desligado.

Isto posto, e imaginando que nao existe um RTC externo (como um DS1307, 1337 ou 1672), quando o arduino precisar de data/hora, ele tem algumas opçoes:

- usando uma placa de rede (Ethernet Shield ou Wi-fi), ele usar o protocolo NTP para pegar data/hora
- em algum momento o PC passa o horário para ele, e aquele horário e guardado, bem como o relógio interno do Arduino. Daí, quando se precisar de data/hora, faz-se a matemática do horario inicial + contador instantaneo - contador do momento em que o horário inicial foi lido. Isto é pouco prático e impreciso, mas funciona quando nao se tem rede ou um RTC externo.

Já com o RTC externo, ajusta-se este apenas 1 vez e daí em diante - se sua energia nao for removida - apenas lê-se data/hora quando for preciso.

Eu acho que é muito melhor ter um RTC externo, mesmo quando se tem uma EthernetShield, e estou desenvolvendo um pequeno shield para mim que abriga 1 DS1337 + 4 24LC256 (para um total de 1 Mbit de EEPROM).

Learn to live: Live to learn.
Showing off my work: http://arduino.cc/forum/index.php/topic,126197.0.html

bubulindo

Hmmm, pois... um RTC externo é vital sempre que se tem faltas de tensão e não existe uma maneira simples de interligar as coisas.

O millis não é bem um RTC... apesar de ser preciso. Mas também não é uma grande opcão para manter tempo até por causa do overflow. Logo entre ter um chip externo ou ter apenas um cristal, pode ser uma boa opcão intermédia. A vantagem é que o software pode ser criado de forma a guardar data e hora independentemente (com uma struct tm, por exemplo) e assim não ter problemas de overflow.

O NTP é outro problema que reparei... a avr-libc não tem a time.h, logo converter os segundos desde 1970 para a data e hora actual é uma chatice daquelas!!! É relativamente simples de tirar a data, mas os anos, por causa do ano bissexto torna as coisas um pouco mais chatas.

Eu estou a ver se crio (aliás já tenho uma boa parte feita) uma libraria para usar com o ATmega... o problema é que para usar nas versões oficiais, tem de se trocar o cristal de 16MHz por um de 32kHz no Uno/2009 e no Mega isto é impossível de fazer já que os pinos não foram passados para fora.

Talvez arranje um seeeduino mega... ou um bobuino. LOL
This... is a hobby.

Go Up