Ein kleines Beispiel, um einen DS1307 RTC (Real-Time Clock)
zu initialisieren, Zeit, Datum und RAM zu setzen/auszulesen.
Bei erfolgreicher Initialisierung liefert der Ausgangspin des
RTC einen Sekundenimpuls.
Alle ca. 100ms wird der RTC abgefragt und das Ergebnis angezeigt.
Ev. auftretende Fehler (Errorcodes) werden angezeigt.
Auf die Batterie habe ich im Versuchsaufbau absichtlich verzichtet.
Eine Kapazität von 220µF konnte den RTC bei Spannungsausfall mehrere
Minuten (ca.15) lang puffern. Diese Zeit ist u.a. abhängig vom
Leckström der Kapazität, der Spannung an der Kapazität / PIN3
und dem Sperrstrom der Diode.
(PIN3/Bat max 3,5V lt. Datenblatt, beim anlegen einer höheren Spannung,
z.B. 5V, läßt sich der RTC in meinem Versuchsaufbau per TWI nicht mehr
ansprechen, Sekundentakt funktioniert zwar noch,
aber erst ein komplette Spannungsabschaltung, incl. Bat,
erweckt ihn zum Glück wieder zum Leben. Bitte nicht unbedingt testen,
der RTC könnte beschädigt werden.)
Probleme gab es, als der PIN3 (Bat) unbeschaltet war,
meine Empfehlung: PIN auf GND oder an ein definiertes
Spannungspotential.
Es können auch BUS-Probleme auftreten, wenn die BUS-Widerstände einen
zu kleinen Wert haben, der RTC schaltet relativ hochohmig gegen GND,
dann stimmen ev. die Pegel nicht.
Der Programmcode könnte optimaler gestaltet sein.
Bernhard