Go Down

Topic: Discussão - RTC Nativo ou chip (Read 1 time) 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).

Some of my projects:
Shield for DS1337+, DS1624 and AT24C1024B (RTC, temp & mem): http://forum.arduino.cc/index.php/topic,126197.0.html
CHDK Camera remote shutter (BT, IR, USB): http://forum.arduino.cc/index.php?topic=295377.0

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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy