Vous êtes sur la page 1sur 8
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 C Relj 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

Vous aimerez peut-être aussi