Librería que controla un reloj de tiempo real DS1307. Genera el protocolo I2C para la transferencia de datos.
Puertos de la librería
FREC_FPGA: Puerto genérico de tipo entero donde se especifica la frecuencia de reloj base.
CLK: Entrada de reloj.
SDA_DS: Puerto bidireccional de datos para I2C conectado al SDA del integrado.
CARGAR_INI: Bit que inicia el proceso para almacenar la información cuando se pone a ‘1’.
FORMATO_2412: Bit que selecciona el formato de hora, 12 (‘1’) o 24 (‘0’) horas.
AM_PM: Selecciona AM ‘0’ o PM ‘1’ en formato de 12 horas.
DIA_IN: Día del mes en formato BCD.
MES_IN: Mes en formato BCD.
YEAR_IN: Año en formato BCD.
DIA_SEMANA_IN: Día de la semana, 1 representa Domingo, 2 Lunes, 3 Martes, etc.
HORA_IN: Hora en el formato especificado 12 o 24 horas.
MINUTO_IN: Minuto en formato BCD.
SEGUNDO_IN: Segundo en formato BCD.
LEER_INI: Bit que inicia la lectura de datos.
SCL_DS: Reloj de I2C.
LEER_FIN: Bit que indica cuándo se realizó la lectura de datos y ya se encuentran disponibles en los puertos de salida. Sólo dura un ciclo de reloj.
CARGAR_FIN: Bit que indica cuándo se cargaron los datos en el integrado. Sólo dura un ciclo de reloj.
DIA_OUT: Día del mes leído en formato BCD.
MES_OUT: Mes leído en formato BCD.
YEAR_OUT: Año leído en formato BCD.
DIA_SEMANA_OUT: Día de la semana leído en formato BCD.
HORA_OUT: Hora leído en formato BCD. El bit 6 indica el formato de hora, el bit 5 indica AM o PM si se seleccionó formato de 12 horas o se complementa con el bit 4 para formar la parte de las decenas de las horas.
MINUTO_OUT: Minutos leídos en formato BCD.
SEGUNDO_OUT: Segundos leído en formato BCD.
El DS1307 cuenta con 7 registros en donde se almacena o se lee la información siempre en formato BCD. El formato se refiere a que el número binario se divide en N bits para las decenas y N bits para las unidades. En el caso del DS1307 los bits se dividen dependiendo el dato que se está trabajando, la siguiente tabla es la representación de esos valores.
Funcionamiento
Almacenar datos.
Para almacenar información en el integrado basta con colocar los datos en los puertos de entrada un ciclo de reloj antes de poner en alto a CARGAR_INI y esperar a que finalice el proceso indicado por CARGAR_FIN. Por ejemplo, se desea almacenar la siguiente fecha 19/11/2019 (DD/MM/AA) Martes, 1:20:00 PM. El diagrama de tiempos quedaría de la siguiente forma:
Para obtener la información almacenada en el integrado se tiene que activar el puerto LEER_INI y esperar a que finalice el proceso indicado por LEER_FIN, en ese momento los datos están listos en los puertos de salida.