Ver I2C + RTC DS3231 usando C
En éste post mostraré un programa que permite configurar un DS1307. Como sabemos el DS1307 se comunica por I2C.
En éste post mostraré un programa que permite configurar un DS1307. Como sabemos el DS1307 se comunica por I2C.
El programa tiene dos partes que son ejecutadas por dos interrupciones.
En la interrupción del timer 1, que se ejecutará cada 1000ms (1seg), leerá la hora y fecha del DS1307 y se mostrará en un LCD.
Por el uart llega información que permite leer ó escribir el DS1307.
La información para escribir(configurarlo a una hora y fecha determinada) consta de 8 bytes que son:
| CABECERA(1) | COMANDO(1) | HORA(1) | MIN(1) | SEG(1) | FECHA(1) | MES(1) | AÑO(1) |
La cabecera es 0xBA
El comando puede ser ‘W’(0x57) para escribir y ‘R’(0x52) para leer.
El resto de datos deben estar en BCD.
Un ejemplo de esto es: BA 57 12 21 08 08 07 11
Donde la hora es 12:21:08 y la fecha es 08/07/11.
En el caso que se quiera leer solamente hay que enviar BA 52 y la respuesta a esto será por ejemplo BA 57 12 30 12 08 07 11 , donde se indica que la hora leída es 12:30:12 08/07/11

Ahora mostraré las macros usadas.
Ahora las rutinas para I2C y DS1307.
Como ya sabemos cada esclavo que se conecta al bus I2C debe tener una dirección y en éste caso la dirección del DS1307 es 0b1101000 + el bit de R/W, es por ello que para escritura se envía D0 y para lectura D1.
Ahora las rutinas del UART.
Por último el mensaje principal.
Hay que tener en cuenta que se esta usando el RC interno.
En el siguiente video se muestra el funcionamiento del programa.
El programa que se muestra para configurar el DS1307 lo hice en visual C#, éste programa lo pueden descargar de éste enlace RTC_DS1307.
Si no lo pueden abrir instalen netframework 3.5.
Si no lo pueden abrir instalen netframework 3.5.