DS1307 mit Peter Fleury Library

OP #1598494
Lesenswert?
• ▲
▼
Guten Tag,

Ich habe eine DS1307 RTC, ein EEprom und ein LM75 Temperatursensor an 
einem ATmega16 angeschlossen. Als Lib nehme ich die I2C Library von 
Peter Fleury. Das Auslesen des Temperatursensors, so wie das Beschreiben 
und das Auslesen des EEproms funktionieren ohne Probleme.
Nun wollte ich die DS1307 in Betrieb nehmen. Als erstes habe ich mich 
etwas mit dem Datenblatt beschäftigt, um die Funktionen und 
Eigenschaften der RTC kennen zu lernen. Jedoch weiss ich noch immer 
nicht, wie ich die RTC beschreiben und auslesen kann. Auch google 
brachte keine brauchbaren ergebnisse, da meistens eigene Libs verwendet 
werden. Auch bei myAVR, wo ich die Komponenten gekauft habe, konnte ich 
keine brauchbare Source finden.

Hat jemand einen kleinen Sourcecode, der auf der Peter Fleury library 
basier?
Oder kann mir wenigstens jemand Step-by-Step erklären, was ich für Bytes 
zum RTC über den TWI schiken muss?



Gruss JeyBee66
Gast #1603135
Lesenswert?
• ▲
▼
Servus,

habe mal eine DS1307 Lese- und Schreibroutine zusammen kopiert:
Beachte nur die Reihenfolge , die I2C- Befehle sind nicht aus der Lib
von Peter Fleury

i2c_start(ds1307+I2C_WRITE);   // set device address and write mode
i2c_write(0x00);
i2c_rep_start(ds1307+I2C_READ);    // setze Leserister-Adresse
sekunde= i2c_readAck();            // höherwertiges Byte, Daten auslesen
minute= i2c_readAck();         // LSB auswerten niederwertiges Byte
stunde = i2c_readAck();        // höherwertiges Byte, Daten auslesen
tagnr = i2c_readAck();         // LSB auswerten niederwertiges Byte
tag = i2c_readAck();           // höherwertiges Byte, Daten auslesen
monat= i2c_readAck();          // LSB auswerten niederwertiges Byte
jahr= i2c_readNak();  //*Nak!! LSB auswerten niederwertiges Byte
i2c_stop();


ret = i2c_start(ds1307+I2C_WRITE);  // set device address and write mode
i2c_write(0x00);                       // Startadresse
i2c_write(0x00);                       // sekunde
i2c_write(0x05);                       // minute
i2c_write(0x57);                       // stunde
i2c_write(0x06);                       // tagnr
i2c_write(0x30);                       // tag
i2c_write(0x12);                       // monat)
i2c_write(0x05);                       // jahr
i2c_write(0x90);                       // Sekundentakt
i2c_stop();                            // Bus stop

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.