Programm um RTC DS3231 zu testen
================================
Sollte mit DS3231SN, DS3231S und DS3231M funktionieren.
(DS1307 sollte auch gehen. Dazu aber eventuell noch Anpassungen noetig.)

echtuhr.cc          das ist das Hauptprogramm
lcdmoduli2c4blau.c  Ansteuern eines 4-Zeilen LCD-Moduls mit 20 Zeichen/Zeile
rtc.c               Library zum Ansteuern von DS3231 und DS1307
i2c.h		    Definition von i2c-Funktionen (i2c.c schon in lcd...)
extmem.c	    Library zum i2c-Memory (z.B. AT24C32) anzusprechen
rtc_korr.h	    Fuer Software-Korrektur bei extremer Abweichung der RTC


Installieren des Programms
--------------------------
Compilieren und installieren wie ueblich mit "make install".
Oder wenn es ueber Arduino gemacht werden soll "make arduino-version",
dann unter Arduino installieren.

Nach dem ersten Installieren unbedingt die CPU-Frequenz nachmessen.
Dann F_CPU_GENAU entsprechend setzen und nochmals compilieren.

Tastenbelegung:
TASTE1 '-'  Statusregister anzeigen
TASTE2 '+'  Laufende Zeit mit RTC-Zeit vergleichen
TASTE3 '#'  Uhr stellen: mit '#' und '*' Ziffer waehlen, mit '+' '-' aendern
TASTE4 '*'  Ausgabe-Frequenz an SQW einstellen
            nochmals '*' fuer Justierregister (Aging Offset)
	    nochmals '*' zum noch F_CPU nachmessen
	    oder noch Korrekturfaktor einstellen.

Beim Arduino-Mega sind die Tasten auf A5 bis A7 gelegt. Fuer andere Pins
die entsprechenden #define bei Tasten-Entprellung anpassen.

Der Zeitvergleich zwischen RTC und CPU-Zeit erfolgt auf die Millisekunde genau.
(Stellen der Zeit geht aber bisher nur auf die Sekunde genau)
Damit die interne Uhr richtig laeuft muss die CPU-Frequenz moeglichst genau
ausgemessen werden. Bei Verwendung eines Quarzes sollte es auf etwa 5ppm genau
gehen. Mit dem Resonator im Arduino-Mega ist es etwas ungenauer.

CPU-Frequenz nachmessen:
------------------------
Mit Taste '*' mehrmals druecken bis "F_CPU nachmessen".
Beim Arduino-Mega die Frequenz dann an Pin 13 mit genauem Frequenzmessgeraet messen.
Bei andern Boards die #defines fuer LED1 anpassen.
Die gemessene Frequenz mit 8 multipliziert ergibt die F_CPU_GENAU.
Danach Reset, oder gleich neu compilieren mit neuem Wert.

Abweichung in PPM berechnen:
----------------------------
Uhr sekundengenau stellen, und auch RTC setzen. Dann etwa 10 Tage warten
(oder auch weniger lang, aber dann ist die Messung nicht so genau).
Danach Uhr sekundengenau stellen aber ohne RTC neu zu setzen.
Mit Taste2 dann den Zeitvergleich starten. Das Programm sollte dann die
Abweichung der RTC in PPM anzeigen.
Abweichungen bis etwa 8 ppm sollten mit dem Aging Register korrigierbar sein.

INT/SQW setzen
--------------
Wie bei Tastenbelegung angedeutet kann man die Ausgabefrequenz mit Taste4
einstellen. Beim DS3231S und DS3231SN kann man 1Hz, 1024, 4096, oder 8192 waehlen.
Man kann hier auch auf den INT-Modus wechseln. Dann ist es der Interrupt-Ausgang
der durch die Alarm-Einstellungen kontrolliert werden kann.
In diesem Testprogramm werden Alarme aber noch nicht unterstuetzt.
Beim DS3231M ist nur 1Hz moeglich, die andern Frequenzen werden ignoriert.
Beim DS1307 sind 1Hz, 4096, 8192, oder 32768 moeglich. (noch nicht getestet)
