Академический Документы
Профессиональный Документы
Культура Документы
UNIVERSIDAD POLITECNICA
SALESIANA
INTEGRANTES:
OSCAR AYALA
ANDRES VALDIVIESO
CURSO:
SEXTO ELECTRONICA
TEMA:
RELOJ EN TIEMPO REAL
1
SISTEMAS MICROPROCESADOS 1 UPS
1. INTRODUCCION:
Un reloj en tiempo real (en inglés, real-time clock, RTC), es un reloj de un ordenador, incluido en
un circuito integrado, que mantiene la hora actual. Aunque el término normalmente se refiere a
dispositivos en ordenadores personales, servidores y sistemas embebidos, los RTCs están
presentes en la mayoría de los aparatos electrónicos que necesitan guardar el tiempo exacto.
Terminología
El término se usa para evitar la confusión con el reloj hardware ordinario, que sólo son señales
que dirigen circuitos digitales, y no cuentan el tiempo en unidades reales.
Propósito
Bajo consumo de energía (importante cuando está funcionando con una pila)
Libera de trabajo al sistema principal para que pueda dedicarse a tareas más críticas
Algunas veces más preciso que otros métodos
Fuente de alimentación
Los RTCs a menudo tienen una fuente de alimentación alternativa, por lo que pueden seguir
midiendo el tiempo mientras la fuente de alimentación principal está apagada o no está
disponible. Esta fuente de alimentación alternativa es normalmente una batería de litio en los
sistemas antiguos, pero algunos sistemas nuevos usan un supercapacitor , porque son recargables
y pueden ser soldados. La fuente de alimentación alternativa también puede suministrar energía a
una memoria no volátil.
La mayoría de los RTCs usan un oscilador de cristal , pero algunos usan la frecuencia de la fuente
de alimentación . En muchos casos la frecuencia del oscilador es 32.768 kHz. Ésta es la misma
frecuencia usada en los relojes de cuarzo, y por las mismas razones, que la frecuencia es
exactamente 215 ciclos por segundo, que es un ratio muy práctico para usar con circuitos de
contadores binarios simples.
2. MARCO TEORICO
La principal característica de I²C es que utiliza dos líneas para transmitir la información: una para
los datos y por otra la señal de reloj. También es necesaria una tercera línea, pero esta sólo es la
2
SISTEMAS MICROPROCESADOS 1 UPS
referencia (masa). Como suelen comunicarse circuitos en una misma placa que comparten una
misma masa esta tercera línea no suele ser necesaria.
SDA: datos
SCL: reloj
GND: masa
Las dos primeras líneas son drenador abierto, por lo que necesitan resistencias de pull-up.
Los dispositivos conectados al bus I²C tienen una dirección única para cada uno. También pueden
ser maestros o esclavos. El dispositivo maestro inicia la transferencia de datos y además genera la
señal de reloj, pero no es necesario que el maestro sea siempre el mismo dispositivo, esta
característica se la pueden ir pasando los dispositivos que tengan esa capacidad. Esta
característica hace que al bus I²C se le denomine bus multimaestro.
El bus esta libre cuando SDA y SCL están en estado lógico alto.
En estado bus libre, cualquier dispositivo puede ocupar el bus I²C como maestro.
El maestro comienza la comunicación enviando un patrón llamado "start condition". Esto
alerta a los dispositivos esclavos, poniéndolos a la espera de una transacción.
El maestro se dirige al dispositivo con el que quiere hablar, enviando un byte que contiene
los siete bits (A7-A1) que componen la dirección del dispositivo esclavo con el que se
quiere comunicar, y el octavo bit (A0) de menor peso se corresponde con la operación
deseada (L/E), lectura=1 (recibir del esclavo) y escritura=0 (enviar al esclavo).
La dirección enviada es comparada por cada esclavo del bus con su propia dirección, si
ambas coinciden, el esclavo se considera direccionado como esclavo-transmisor o esclavo-
receptor dependiendo del bit R/W.
El esclavo responde enviando un bit de ACK que le indica al dispositivo maestro que el
esclavo reconoce la solicitud y está en condiciones de comunicarse.
Seguidamente comienza el intercambio de información entre los dispositivos.
El maestro envía la dirección del registro interno del dispositivo que se desea leer o
escribir.
El esclavo responde con otro bit de ACK
Ahora el maestro puede empezar a leer o escribir bytes de datos. Todos los bytes de datos
deben constar de 8 bits, el número máximo de bytes que pueden ser enviados en una
transmisión no está restringido, siendo el esclavo quien fija esta cantidad de acuerdo a sus
características.
Cada byte leido/escrito por el maestro debe ser obligatoriamente reconocido por un bit de
ACK por el dispositivo maestro/esclavo.
Se repiten los 2 pasos anteriores hasta finalizar la comunicación entre maestro y esclavo.
Aun cuando el maestro siempre controla el estado de la línea del reloj, un esclavo de baja
velocidad o que deba detener la transferencia de datos mientras efectúa otra función,
3
SISTEMAS MICROPROCESADOS 1 UPS
puede forzar la línea SCL a nivel bajo. Esto hace que el maestro entre en un estado de
espera, durante el cual, no transmite información esperando a que el esclavo esté listo
para continuar la transferencia en el punto donde había sido detenida.
Cuando la comunicación finaliza, el maestro transmite una "stop condition" para dejar
libre el bus.
Después de la "stop condition", es obligatorio para el bus estar idle durante unos
microsegundos.
El código del kernel de Linux para el soporte I2C está separado en varias piezas lógicas:
I2C chip driver (maneja uno de los chips conectados al bus I2C, tanto si se comporta como
maestro o como esclavo)
I2C bus driver
I2C algorithm driver
I2C core (la parte genérica del subsistema de I2C)
4
SISTEMAS MICROPROCESADOS 1 UPS
Operaciones de Escritura
1.- Escribir un byte:
• El Maestro del bus generará un START, luego colocará la dirección asignada en el bus al
dispositivo EEPROM (7bits) y el bit R/W=0 para indicar que el Maestro va a grabar un dato en la
EEPROM Esclava. Tras el ACK que coloca la EEPROM al detectar coincidencia con su dirección, el
Maestro debe enviar la dirección de la posición que se desea grabar. Esto se hace en dos bytes, se
envía primero un byte con tres ceros y los 5 bits de la parte alta del puntero interno y luego los
otros 8 bits.
• Tras los correspondientes ACK de la memoria (tras cada byte), el Maestro enviará el byte a
escribir en la referida posición, la EEPROM responderá con un nuevo ACK y el Maestro finalizará
enviando una condición de STOP.
• Tras esta secuencia, la memoria inicia el ciclo interno de escritura que dura entorno a 2ms.
Durante ese tiempo, la EEPROM no generará bits ACK de reconocimiento si se intenta una
transferencia
3. OBJETIVOS:
Configurar la comunicación I2C para sincronizar los datos del PIC 16F877A y el
Circuito integrado DS1307 y desplegarlos en un Display LCD 16x2.
4. MATERIALES
1 PIC 16F877A
5
SISTEMAS MICROPROCESADOS 1 UPS
1 LCD 16*2
1 C.I DS 1307
1 cristal de 4Mhz
1 cristal de 32.768kHz
Resistencias
-2 de 4.7kΩ
-1 de 5.1kΩ
Capacitores
-2 de 22pf
-1 de 0.1uf
6
SISTEMAS MICROPROCESADOS 1 UPS
5. PROCEDIMIENTO
program RELOJ_DE_TIEMPO_REAL
dim g_horas, g_minutos, g_segundos as byte
dim g_anio, g_mes, g_dia, g_fecha, dato as byte
'Inicilizar DS1307
sub procedure DS1307_Init() 'Inicio del DS1307
I2C_start 'Señal de inicio para nla comunicación I2C
I2C_wr($D0) 'Direccion escritura en el C.I. DS1307
I2C_wr($00) 'Escribir en direccion 0
delay_ms(10) 'Retardo de 10 milisegundos
I2C_Repeated_Start 'Repetir señal de inicio dentro de la comunicación I2C
I2C_wr($D0) 'Direccion escritura en el C.I. DS1307
delay_ms(10) 'Retardo de 10 milisegundos
I2C_wr($00) 'Escribir en direccion 0
delay_ms(10) 'Retardo de 10 milisegundos
I2C_wr($00) ' Configurar los Segundos
delay_ms(10) 'Retardo de 10 milisegundos
I2C_wr($02) 'Configurar los Minutos
delay_ms(10) 'Retardo de 10 milisegundos
I2C_wr($20) 'Configurar las Horas
delay_ms(10) 'Retardo de 10 milisegundos
I2C_wr($02) 'Configurar el Dia (lun-dom)
delay_ms(10) 'Retardo de 10 milisegundos
I2C_wr($09) 'Configurar la fecha
delay_ms(10) 'Retardo de 10 milisegundos
I2C_wr($07) 'Configurar el Mes
delay_ms(10) 'Retardo de 10 milisegundos
I2C_wr($10) 'Configurar el Año
delay_ms(10) 'Retardo de 10 milisegundos
I2C_wr($0) 'Habilitar la salida I2C del cristal de 32.768kHz
delay_ms(10) 'Retardo de 10 milisegundos
I2C_stop 'Finalizamos la comunicación I2C
end sub 'Fin de subprocedimiento
7
SISTEMAS MICROPROCESADOS 1 UPS
8
SISTEMAS MICROPROCESADOS 1 UPS
6. ESQUEMATICO
9
SISTEMAS MICROPROCESADOS 1 UPS
7. RESULTADOS
8. CONCLUSIONES
10
SISTEMAS MICROPROCESADOS 1 UPS
9. BIBLIOGRAFIA
Creado el 18 ene 2010, a las 02:08. El texto está disponible bajo la Licencia
Creative Commons Reconocimiento. http://es.wikipedia.org/wiki/RTC
11