Forum: Projekte & Code DS1307 TWI I2C RTC Initialisierung ROM Zeit setzen auslesen Assembler ATmega8


von Bernhard S. (bernhard)



Lesenswert?

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

von Stephan W. (stipo)


Lesenswert?

Hallo Bernhard,

danke für das tolle Beispiel. Ich beschäftige mich gerade mit TWI und 
einem DS1307. Mit einer minimalen Anpassung, klappt es auch auf anhieb 
mit meinem 1-Zeiligen Display. Das Beispiel funktioniert einwandfrei. 
Werde mir nun den Code genau ansehen und mir daraus wissen schöpfen.

Grüße
Stephan

von Bernhard S. (bernhard)


Lesenswert?

Hallo Stephan,

ich danke Dir, vielleicht könntest Du den angepassten Programmcode mit 
an diesen Beitrag anhängen, dann hätten alle was davon.

Gruß Bernhard

von Hans-Joachim B. (beckhj)


Lesenswert?

Bernhard S. schrieb:
> (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,

Hallo!

Nachdem ich sehr lang gesucht hatte warum mein I2C Bus plötzlich hing, 
fand ich dieses Problem hier auch.
Ich hatte fälschlicherweise eine Spannung von 4,2 V an UBat Anschluss. 
Der DS1307 hat stundenlang problemlos funktioniert, aber irgendwann 
blieb mein Bus stehen. Das Problem ist, dass der Chip dann immer NCK 
liefert, wenn man ihn ansprechen will.

War ganz klar mein Fehler, aber dass sich so was erst spät äußert ....
Jetzt läuft es erst mal seit 5h durch.

Grüße
Hans-Joachim

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.