DS1307 TWI I2C RTC Initialisierung ROM Zeit setzen auslesen Assembler ATmega8

OP #2416975
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
#2420424
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
#2993433
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren