Raloj ds tempo real DS1307
RELOJ DE TIEMPO REAL (RTC) DS1307
El cireuito integrade DS 1307 es un reloj calendario que procesa la informacién de
los segundos, minutos, horas, dia del mes, dia de lb semana. mes y affo. El ajusie
para la duracién de los meses y afios bisiestos es realizado por el propio circuito y
8 walido hasta él afio 2100. Contiené 56 localdades de memoria NVRAM (No
volatil RAM), Tiene 2 terminales para conectarle una pila de litio para mantener
operando e! reloj alin sin energla eléctrica en sus temminales de alimentacién, con
un consume de 500 nA en esta condicién. También puede generar una sefial de
salida de onda cuadrada a una frecuencia programable. La siguiente figura,
muestra e! diagrama de terminales.
Entre las terminales Voc y GND se aplica el voltaje de alimentacién del circuito
imegrado, que es de 5 Volts
La terminal Vasr fecibe el voltaje de una pila de 3 Volts, se recomienda emplear
una de litio por ser esta altamente eficiente y de larga duracién. Esta pila,
mantiene activo el reloj adn sin la energla aplcada en sus terminales de
alimentacién, Si el voltaje de alimentacién aplicado entre Voc y GND disminuye
por debajo de 12 Volts, entra como respaldo la pila externa. Esta pila no hace
funcionar 1a lectura y escriura al DS1307, pero mantiene operando el reloj en
modo de bajo consume de energla
A través de la terminal SQWIOUT, se obtiene la generacién de una sefial de onda
cuadrada de 1 Hz. 4 kHz. 8 kHz o 32 kHz. Este terminal es de tipo open drain
(drenaje abierta), por lo que es necesario para su empleo conectar una resistencia
de pull-up conectado al voliaje postive.
Las teminales SCL (clock) y SDA (data), sonlas encargadas de enviar y recibir la
informacién a través del bus 12C. Debe conectarse una resistencia en pultup de
4.7 kentre cada terminal y el voltaje positive,
El DS1307 cuenta con una tabla de memoria, en donde se encuentran los
registros que contienen él dato de la hora.y fecha. El fomato numérico de los
datos es en cédigo BCD. De igual manera, se cuenta con un registro de control
para la salida SOWOUT yun 4rea de memoria libre NVRAM para él usuario,rc eepereennpenenarirnieni
El mapa de memoria del RTC DS1307 es el siguiente:
Loealldad DATO.
00H SEGUNDOS,
OTH MINUTOS
O2H HORAS.
3H DIA SEMANA
OH DIA DEL MES
OSH MES
06H ANG
O7H CONTROL
08H aI
3FH xe
El registro O7H es de control para la terminal de salida SQW/OUT y se muestra a
continuacién:
BT7 | Sit6 | BITS | BiT4] BiT3 | Bir2 | BiT1 | Biro
on Tor, x x [sawel x x _[ R51 | SO
El bit SQWE habilta o deshabilta la generacién de la sefal cuadrada por el
teminal SQW/OUT, la frecuencia de esta sefial puede ser definida mediante les
bits RS1y RSO segin se muestra en la siguiente tabla:
RSi | R80 FRECUENCIA
o o THz
o 4 4.086 kHz
4 o 8.192 kHz
1 4 32,768 kHz.
Cuando el bit SQWE es igual a 0, la sefal cuadrada no esta habilitada, y el bit 7
(out) permite controlar el estado del terminal SQWOUT, siendo este igual al
contenido de! bit out
Para mayores detalles, se recomienda leer la hoja de datos del 051307, de la
firma DALLAS SEMICONDUCTOR.GONEXION DEL RTG 081307 GON EL PIG16F876
‘Como ejemplo, se conectaré el DS1307 al PIGT6FE76 como se muestra ene!
siguiente diagrama:
+
OAL
32788 KHz
J, |
“C4
BAT
3 Voks z
Litium
81307
7
PIC16FA76 |
Para un mejor manejo, se dispone de una tablilla electronica que contiene
montados los comporentes involucrados en la operacion del retoj de tiempo real.
En la siguiente figura se muestran las terminales de conexién de dicha tablila:
2
i
MODULORTE:
=‘Pale s Pampa rea! DS1307
PROGRAMACION
Para enviar y recibir datos desde el PIC hasta el DS1307, es necesario utilizar los
comandos en Pic Basic Pro: I2GWRITE (envia dates al bus |2C) ¢ 2CREAD (lee
datos del bus I2C)
En ambos comandos, es necesario espeficar los pines del PIC por donde se
enviaran las sefiales SDA y SCL al bus 12C. De igual forma, es necesario enviar la
direccién de control del dispositive al que se va a enviar Ja informaciin. Cada
dispositive I2C cuenta con una direccién espectfica. Para el caso del DS1307 es la
siguiente: %11010000, la cual, equivale al valor hexadecimal $D0. Seguido a esto,
se coloca la direccién de memoria a la cual se quiere acceder en el DS 1307,
seguido entre corhetes, por kos valores que se desean escribir o leer a partir de
esa localidad, uno a uno y separadas por comas,
En el siguiente ejemplo, se muestra como leer de la localidad $00 de la memoria
del 081307, equivalente a los segundos, y coloca el valor en la variable segundos:
I2GREAD porte.4, poric.§,§D0,$00, [segundes]
EJERCICIOS DE PROGRAMAGION
Lo primera, es “poner a tiempo” el reloj y calendario, Una vez puesto a tiempo, el
DS1307 se programa en forma permanente. Es importante que para mantener
activa la programacién, se encuentre conectada la pila en el circuito D$1307. Para
ponerlo a tiempo, es necesario escribir en todas sus localidades de memoria, los
datos correspondientes a la hora y fecha actual. El siguiente programa, realiza
dicha programacidn, Analfcelo cuidadosamente.
Las primeras instrucciones son neoesarias para operar el LCD asl como las
configuraciones de puertas de ES.
‘Prege
ms pars eager dstns iniisies si RTC DS1207
"Configure LCD
DEFINE LCD OREG PORTE
DEFINE LCO_O8IT 0
DEFINE LCOITS4.
DEFINE LCO_RSREG PORTE
DEFINE LCD_RSBIT4
DEFINE LCO_EREG PORTS
DEFINE LCD_ESTTS
DEFINE LCD_LINES2
PAUSE 500 ‘Pause pers inkisizer el LCD de 0.5 seg.
LODOUT 254.1 ‘Limpia pertalis delLCD.alg a5 tompa rea’ OS 1307
"Asigneniin de versties
29 VAR BYTE ‘Variable que simarenard los segundos del RTC.
minuVARBYTE —‘Warisbi que elmecensré los minutos d=! RTC
hrVARBYTE ‘Verisble que smecenerd les horas de RTC.
Gs VAR BYTE “Verde que smacenard ol dla de ls semang de! RTC.
Gm VAR EVTE Veriene que smarenerd idle ce! mes d=/ RTC.
mesVARBYTE —— “Warisbe que simecensré el mes dei RTC
anVARBYTE “Veriabe que simacenaré elsho dei RTC
SDAVAR ported — “Se-ssigne ele varisble SDAe!bi 4 puer C pers el enw de datos io,
SCLVARponsS —“Seasigne els varianle SCLei bi S puaro € para el anvia da cook ido,
"Configuraciin de pusnos
TRISA = S300010101 "RAD, RAZ yRAd = Entades, RATRAS y RAS = Saiddes
TRISC = 9400000000 "Port Ces de ssides,
ADCON = 4410001110 RAO = anaidgiog RAT-RAS = cigtztes.
“Limpia =! puerto A
“Limpia =! puerto C.
"Envis configuecién alregiewa O7h de la memoria dei DS1307
‘Eecribe en el DE1307_ vawés de los bits SDA y SCL fponcd y pores), el bye de comral de
Gisposmve $00 (17010000), en is lonsidsd da memons $07 (Geslided o& contol terminal
SQWIOUT dal DS1 307) ‘e configuresién $10 (00010000),
IRCWRITE SDA, SCL$D0,807 |S]
PAUSE 10
"Carge los registos de hore y feche of DS4907
“Loa regisos de tiempo yfechs e2 encuentran 2 pertirde is ines ited $00 heats is $06,
“En este eempio, ene veiores de un tempo y fecha determinedos. Pars reaizer ems ejemplo en
‘tiempo resi, es necessrincarger los dstos resies si momento de que se capture estejerccio,
IRCWRITE SA SCL$00,S00,,800 £20,510 $03,825,808 508)
PAUSE 10
"Rufina pate leer los datos da! 01207 y exhibitios en el LOD.
Bl comendo HEX2 convene | valor leldo de los registro del 081307 del codign BCD al oddizn
‘BBCI que requiere €! LCD,
facture:
BCREAD SOA SCL $010 800 [529 minu hr.ds.dm mes,sn]
LODOUT 254, 128,HEX2 209,"", HEX minu," SHEXE br
LODQUT 254, 192, HEX mes,’ 7 HEX2 an
GOTO eau
EX2dm,""
END‘Fisioj ds tsmpo resi 051307
EJEMPLO DE APLICACION
El siguiente programa, muestra un reloj calendario en un display de LCD
-empleando el circuita 081307. Para el buen funcienamiento de este programa, es
indispensable primero poner a tiempo él reloj con él programa anterior.
"RELOU Y CALENDARIO CON EL RTC 081307
"Configure LCD
DEFINE LCD_DREG PORTE
DEFINE LCO_OBITO
DEFINE (co eirs4
DEFINE LCO_RSREG PORTS
DEFINE LCO_RS8IT 4
DEFINE LCO_EREG PORTS
DEFINE LCD EBITS
DEFINE LCD_LINES2
PAUSE 500
LODOUT 254.4 1
Puss pers inicisizer =! LCD de 05 seg.
pia pantalla del LCD.
‘Oefiniion de verispies
seg VARBYTE
ming VAR BYTE
hrVAR BYTE
ds VAR EYTE
dm VAR BYTE
mes VAR BYTE
enVARBYTE
SDA VAR ported
‘SCL VAR panes.
"Configureciin de pueros
TRISA = 9500010101 TRAD, RA2 y RAd = Enrades, RAI RAS y RAS= Sslides
TRISC = %500000000 Pon es de Salidas
ADCON4 = 610007110 "RAQS aneiigics, RATRAS = digtsies
pis puero A
‘Limpis posto C
‘Lee los dstos del RIC 051307 y los muessenel LCD
leoure:
(2CREAD SDASCL$D0500 589, minsyhr.ds.cimmes, sr]
LCDOUT 254,128," Hors: “HEX? HEX? 225,"Fisioj ds tsmpo reat OST307
‘CONTROL CON EL RELOJ DE TIEMPO REAL
Una aplicacién importante del RTC es el poder controlar eventos en determinado
tiempo y fecha. Esto es posible si empleamos los datos de los registros del
DS1307 y comparamos su valor con otro deteminado por el usuario, De esta
forma, és posible lograr el contral, en tiempo real, de miliples procesos con
aplicaciones tan diversas como puede ser en la industria, domdtica, seguridad,
etc.
El siguiente programa, muestra un ejemplo simple de encendido de una salida del
PIC a determinada hora durante el dia, asl como su apagado a otra determinada
hora. El programa tiene como base él ejemplo anterior del rele] calendario.
"GONTROL CON EL RTC 0S 1307
"Configura LCD
DEFINE LCD_OREG PORTE
DEFINE LED_o8iTO
DEFINE LED BITS4
DEFINE LOD_RSREG PORTS
DEFINE LCD_RSBIT4
DEFINE LCD_EREG PORTS
DEFINE LED EBITS
DEFINE LOD LINES 2
PAUSE 500 "Pause pete inkislizer el LOD de 05 seg.
LepouT.254.1 ‘Limpis aentsiedeiLcD.
"Definicitn de variables
32g VAR BYTE
minu VAR BYTE
hrVAR BYTE
ds VAR BYTE
dm VAR BYTE
mes VAR BYTE
snWAR BYTE
SDA VAR ported
SCL VAR porte5:
"Configurecién de puerios
TRISA = $4000 10104 RAD, RAD y RAd = Entradas, RAI RAS y RAS= Seiden
TRISC = 8400000000 Port Ces de Seiides.
ADCON 1 =561 0001 110 "RAO= aneidaiog RA LRAS = digtsios
ports =0 ‘Limpia puerio AL
pore=0 “Limpia pueno CRelj de tiempo res DS1307
‘Lee los datos del RTC DS1307 y les muestra en elLCD
lecture:
I2GREAD SDA.SCL.$D0 $00 {seg.minu hrds.dmmes.n]
LGDOUT 254,128," Hora: "HEX® hr", HEX2 minu,"" HEX2 seg” *
LGDOUT 254,192," Fecha: " HEX2 dm." HEX2 mes," hex2 an
GOSUB condcion ‘Checs las condiciones de cortral en esta subrutina
GOTO lecture
“Aqui agregamas todas las condiciones de comparacién deseadas para cualquiera de los registas
‘del RTC, de tal forma, que cuando se cumplan manden el flujo del programa a otras rutinas para
hacer diversas. operaciones. Las instrucciones AND permiten que la condicién se forme con varios
‘eventos al misma tiempo. En este caso, los valores son de ejemplo. En la practica, deberin ser
‘Valores que correspondan 3 un tiempo deseado.
candicion:
10 AND minu = $24 AND seg = $10 THEN active
$40 AND minu = $25 AND seg = $25 THEN apsga
RETURN
‘Cuando se cumple la primer candicién: hora 10:24:00
‘Adiva la salida RAS
activa
HIGH porta3
GOTO lectura
‘Cusndo se cumple |s primer condicién: hors 10:25:25
“Apaga la salida RAS.
page:
LOW porta.3
GOTO lectura
END