Uso de la memoria EEPROM del shield DS3231

Introducción

Algunos modelos de relojes DS3231 vienen con un chip EEPROM de 32 Kb, que casi nadie usa. Podemos disponer de 32,768 registros!!!.

Este tipo de RTC se conecta a placas arduino en varios sabores (Due, MEGA, UNO, etc) mediante i2C. Los pines específicos son SDA y SCL.

Afortunadamente contamos con otras MCU de desarrollo que podemos programar con el IDE de arduino. Se han agregado en la lista placas como el teensy 3.1/3.2 y recientemente placas de la serie STM32F103X. Solo basta con seguir los pasos necesarios para instalar el software que asociado a cada una. También en ellas podemos usar el DS3231, ya que incluyen varios puertos i2C.

¿Que librería sirve?

Wire (incluida en el IDE de arduino, o en el pack de instalación arduino STM32).

En el ecosistema Teensy 3.X, se puede usar la libreria Wire del IDE de arduino. Me parece que en STM32 también (es un sistema reciente que apenas empiezo a conocer, lo revisaré mas adelante).

No es necesario usar otra librería, ambos chips en la placa DS3231, están conectados a SDA/SCL, por lo que la conexión que empleamos para acceder al DS3231, sirve para comunicar nuestra placa de desarrollo con la memoria EEPROM.

Requerimos de tan solo 4 hilos para usar los dos dispositivos:

SDA
SCL
GND
3.3V

Las direcciones de cada componente son:

DS3231     0x68
EEPROM     0x57

PD: hay que cumplir con los deberes allá afuera, dejo aquí el avance para reunir fotos y ejemplos.

--- Reservado para los ejemplos de uso ---

Hola TFTLCDCyg, si los últimos DS3231 que he comprado vienen con esa EEPROM y la he usado.
Esta librería DS3231 Simple soporta la memoria

Gracias surbyte. La cuestión es que las librerías que últimamente he encontrado para el DS3231 (y la que me recomiendas) funcionan impecablemente para AVR, pero para ARM... solo me ha tocado desvelada tras desvelada. Me estoy familiarizando con una placa Teensy 3.2 o alguna de la familia STM32F103.

Luego está "mi parte favorita": uso de estructuras en lenguaje C que escapan a mi nivel de conocimiento... modificas un valor y se arruina la librería...

Pretendo algo mas simple y fácil de usar y hasta cierto punto universal. He visto que la mejor forma de sacarle provecho al DS3231, es mediante la librería Wire, tal como lo indican acá: tutorial DS3231.

Pretendo comunicar una placa teensy 3.6 y un arduino Due; también usaré la pantalla FT813, los sensores NTC, los arreglos de neopixeles, y por supuesto, el DS3231 que no ha fallado desde hace mas de un año. La EEPROM me ayudará a crear configuraciones de restablecimiento luego de cortes de luz. Creo que no regresaré al MEGA o al UNO.

1 Like

Para Teensy debes usar DS3231RTC que es la que uso yo pero no tiene soporte EEPROM, asi que algo lógico sería agregarlo.
Mira la página del DS1307RTC que corresponde a www.pjrc.com hay soporte para RTC y para EEPROM y todo para Teensy 3.0

EEPROM Library
EEPROM allows you to permanently store small amounts of data, which is very useful for saving settings, collecting small data sets, or any other use where you need to retain data even if the power is turned off.
Download: EEPROM is included with Arduino
Hardware Requirements
All Teensy boards have EEPROM memory build inside the chip. No extra hardware is required. The demo program reads an analog voltage and stores it into EEPROM, so a trim pot was connected to analog input A0.

Buen punto surbyte, en el Teensy 3.2 si uso la librería EEPROM sin la pantalla FT813, funciona sin problemas. Sin embargo al momento de agregar la librería del gameduino 2 al esquema, la pantalla se comporta erráticamente y llega un momento en el que se queda en blanco.

En el Teensy así como en arduino UNO y MEGA, la librería de gameduino necesita de la librería EEPROM.

Al principio pensé que me había equivocado en algún ajuste, reconecté el cableado al Teensy 3.2 y la pantalla seguía fallando. Todo vuelve a la normalidad si elimino las lineas que accesan a la EEPROM.

En el Due la librería EEPROM no es compatible.

He llegado a la conclusión de que la librería del gameduino 2, usa algunos de los registros de la memoria EEPROM (no sé que posiciones, ni cuantos), principalmente para almacenar los parámetros de calibración de la pantalla táctil. En el caso del arduino Due, la calibración se debe hacer en cada reinicio.

Es por eso que busqué alguna opción, para, mediante la librería Wire, conseguir acceso a la EEPROM del DS3231, para no afectar el funcionamiento de la pantalla FT813.

Ahora te comprendo.
La posibildad de la que hablas es que el BUS I2C se vea comprometido por el RTC y el GAMEDUINO.
A investigar ese problema.

No encontré nada.