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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.