17
29.05.14 Workshop Miklrorechner 2013 1 Experiment Realtime-Clock über I2C Aufgabe: Das Uhrenchip DS1307 soll per I2C auf feste Startwerte initialisiert werden. Danach soll per seriellem Monitor fortlaufend - Datum (Jahr / Monat / Tag) - Uhrzeit (Std. / Min. / Sek.) angezeigt werden. Variante a: Die Initialisierung auf feste Startwerte findet nur statt, wenn zwischwendurch die Batteriespannung für die Uhr ausgefallen ist. Das kann durch Nutzung der RAM- Zellen in der Uhr festgestellt werden. Variante b: Es soll eine Stelleinrichtung eingebaut werden (über 2 Tasten oder Einlesen des Seriellen Monitors) Variante c: Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht mit Arduinos Serial Monitor, aber mit Hyperterminal oder puTTY-Terminal) A.Schultze, DK4AQ/23.05.2013

Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

  • Upload
    lydiep

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 1

Experiment Realtime-Clock über I2CAufgabe:

Das Uhrenchip DS1307 soll per I2C auf festeStartwerte initialisiert werden. Danach soll perseriellem Monitor fortlaufend- Datum (Jahr / Monat / Tag)- Uhrzeit (Std. / Min. / Sek.)angezeigt werden.

Variante a:Die Initialisierung auf feste Startwerte findet nur statt, wenn zwischwendurch die

Batteriespannung für die Uhr ausgefallen ist. Das kann durch Nutzung der RAM-Zellen in der Uhr festgestellt werden.

Variante b:Es soll eine Stelleinrichtung eingebaut werden (über 2 Tasten oder Einlesen desSeriellen Monitors)

Variante c:Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mitSerial.write(0x07) an serielles Terminal-Programm (geht nicht mit Arduinos SerialMonitor, aber mit Hyperterminal oder puTTY-Terminal)

A.Schultze, DK4AQ/23.05.2013

Page 2: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 2

VCC: 5V, UBAT: 3V, IBAT = 500nAExterner Quarz: 32,768kHzI2C-Geschwindigkeit: max. 100kb/s

DS 1307

Page 3: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 3

Hardware-Struktur DS1307

Rechteckspannung1Hz,4098Hz,8192Hz oder32,768kHz,OC-Ausgang

VCC: 5VUBAT: 3V

I2C

Quarz 32,768kHz

Page 4: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 4

DS1703 Timekeeper-Register

Aus diesen Registern wird Datum und Uhrzeit gelesen bzw. beim Einstellen geschrieben.Register 07 enthält das Control-Register.

A.Schultze, DK4AQ

Page 5: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 5

DS1703 Control-Register

OUT: Output Control, gibt den Wert an Pin SQW/OUT beim Disable durch SQWEvor..

SQWE: Square Wave Enable-Signal für die Rechteckausgangsspannung an PinSQW/OUT.

RS1, RS0: Rate Select, Einstellung der Frequenz am Pin SQW/OUT.

Page 6: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 6

Lesezugriff auf DS1703

Register-Pointer, Beginn der Übertragung bei dieser internen Adresse, wird auch miteinem Schreibbefehl vor Lesen angewendet!

Schreibzugriff auf DS1703

Page 7: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 7

Schaltbild Realtime Clock

Page 8: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 8

Detail: Beschaltung des DS1307

+5V

Page 9: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 9

Aufbauvorschlag Realttime Clock

Page 10: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 10

I2C_RealtClock_EXP4,Definition Konstanten und Variablen

Page 11: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 11

I2C_RealtClock_EXP4,Setup() Teil 1

Page 12: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 12

I2C_RealtClock_EXP4,Setup() Teil 2

Page 13: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 13

I2C_RealtClock_EXP4,loop() Teil 1

Page 14: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 14

I2C_RealtClock_EXP4,loop() Teil 2

Page 15: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 15

I2C_RealtClock_EXP4,loop() Teil 3

Page 16: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 16

I2C_RealtClock_EXP4,loop() Teil 3

Page 17: Experiment Realtime-Clock über I2C - darc.de · Weckerfunktion hinzufügen (Ton aus Piezo-Geber mit tone() oder mit Serial.write(0x07) an serielles Terminal-Programm (geht nicht

29.05.14 Workshop Miklrorechner 2013 17

I2C_RealtClock_EXP4,BcdToDec() und decToBcd()