Beispiel-Code: Benutzen des DS1307 NVRAM

swarkn

swarkn

Stefans Schwerpunkte liegen im Umfeld von Betriebssystemen, serverbasierten Diensten und im weitesten Sinne in allgemeiner technischer Infrastruktur. Tagsüber mit strategischen IT-Themen beschäftigt, tackert er Nachts doch mal gerne ins schwarze Loch.
swarkn

Letzte Artikel von swarkn (Alle anzeigen)

Dieses Beispiel gehört zur Baugruppe: Tiny RTC I2C Module und dient der Veranschaulichung der allgemeinen Kommunikation mit dem DS1307 (lesen der RAW-Daten) und dem Schreiben der gelesenen Werte in den NVRAM.

Ihr könnt das Beispiel noch erweitern, in dem Ihr den NVRAM mit Sensordaten füllt und danach einen „roll-over“ macht. Interessant wäre auch die Möglichkeit herauszufinden, ob die RTC einen Spannungsverlust erlitten hat. Es gibt noch so viel mehr Möglichkeiten. Aber – so viel Sand und keine Förmchen.

Screenshot des seriellen Monitors

Screenshot_DS1307
//
//    This is a demo, how to use the DS1307 to read the time direct from RAM and write it into the 56 Bytes of NVRAM
//    Stefan (swarkn) from http://www.do-it-neat.com
//
//    This demo need the following libraries:
//      https://github.com/jcw/rtclib
//
//    Please note: i put things a bit appart to better understand and read the code.
//    

// includes
#include <Wire.h>
#include <RTClib.h>

RTC_DS1307 RTC;                           // Set the namespace RTC to DS1307

// global variables
byte i;                                   // counter
byte data[8];                             // hold read data

void setup(void) {

  Serial.begin(9600);                     // start serial port

  ////
  //// Start DS1307 setup
  ////
  Wire.begin();               // start I²C Bus
  RTC.begin();                // start communicating to I2C device 0x68 (DS1307)
  RTC.adjust(DateTime(__DATE__, __TIME__));             // set RTC date and time to compilation time

}

void loop(void) {
 
  ////
  //// Do the DS1307 operations
  //// 

  Serial.print("Read from low RAM (0x00-0x08): ");
  for ( i = 0; i < 8; i++) {            // read 9 bytes of time register into NVRAM
    data[i] = RTC.readByteInRam(i);
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.println();  

  Serial.print("Write to NVRAM (0x08-0x10): ");
  for ( i = 0; i < 8; i++) {            // write the 9 bytes into NVRAM
    RTC.writeByteInRam(i + 0x08,data[i]);
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.println();

  Serial.print("Read from NVRAM (0x08-0x10): ");
  for ( i = 0; i < 8; i++) {            // read the 9 bytes from NVRAM
    Serial.print(RTC.readByteInRam(i + 0x08), HEX);
    Serial.print(" ");
  }
  Serial.println();
  Serial.println();
  
  ////
  //// wait some time
  //// 
  delay(1000);
}

Viel Spaß damit :),
swarkn

pinterest

Tiny RTC I2C Module

swarkn

swarkn

Stefans Schwerpunkte liegen im Umfeld von Betriebssystemen, serverbasierten Diensten und im weitesten Sinne in allgemeiner technischer Infrastruktur. Tagsüber mit strategischen IT-Themen beschäftigt, tackert er Nachts doch mal gerne ins schwarze Loch.
swarkn

Letzte Artikel von swarkn (Alle anzeigen)

Hallo zusammen,

ich möchte euch heute gerne das Tiny RTC I2C Module vorstellen. Das Modul selbst dürfte alter Kaffee sein. Ich habe aber festgestellt, dass sich im Internet seit der ersten Veröffentlichung um 2010 wohl so einiges geändert hat. Es tummeln sich jede Menge veralteter Code und Libraries da draußen.

Wir hatten ohnehin vor, die Baugruppen in unserem Besitz auf unserer Seite ins rechte Bild zu setzen. *daumenhoch*

Baugruppe

NameTiny RTC I2C Module
Revisionv1.1
Designhttp://www.dfrobot.com (Waiman)
Herstellerunterschiedlich

Beschreibung

Der hauptsächliche Einsatzzweck des Tiny RTC I2C Modules ist sicherlich die zur Verfügungstellung des aktuellen Datums und Uhrzeit. Das Besondere ist in jedem Fall die integrierte Batterie. Das Datum und Uhrzeit sollte laut dem Designer mindestens 9 Jahre ohne externe Stromversorgung gepuffert werden. Interessant in Schaltungen, welche aus Stromspargründen nur wenige Male am Tag/Monat mit Strom versorgt werden.

Das Package unterstützt Schaltjahre, 12h und 24h Anzeige (abhängig von der verwendeten Bibliothek) und einen Kalender bis ins Jahr 2100. Weiter werden 4k programmierbarer EEPROM Speicher sowie 56Bytes nicht-flüchtigen RAM Speichers zur Verfügung gestellt.

Weitere Besonderheiten sind der Frequenz-Ausgang welcher für externe Schaltvorgänge verwendet werden kann, ein über I2C programmierbares EEPROM, sowie ein digitales Thermometer. Mögliche Taktungen für den Frequenzausgang sind 1, 4, 8 und 32Hz.

Software

Designers Libraryhttp://www.dfrobot.com

Download | Dokumentation

Unsere Empfehlunghttp://jeelabs.org

Download | Dokumentation

Chipsatz

DS130764 x 8, Serial, I²C Real -Time Clock
DS18B201-Wire Digital Thermometer

Sollte kein DS18x20 auf eurem Package verbaut sein, einfach kaufen und auf den Platzhalter löten (s. unten Bilder, Form beachten!).

24C32I2C EEPROM chip

Bilder des Tiny RTC I2C Module

 Das Wiring

Arduino UNO/NanoTiny RTC I2C Modules
GNDGND
5VVCC
analog 4SDA
analog 5SCL
digital 10DS

Original Beispiel-Code

examples/ds1307/ds1307.inohttp://github.com

Screenshot des seriellen Monitors

RTClib_output

Unser Beispiel-Code

Interoperatibilität DS18B20 & 24C32

Benutzen des DS1307 NVRAM

Möglich wären weiter:

Benutzen des 1Hz Frequenz-Ausganges

Viel Spaß!

swarkn

pinterest