www.mikrocontroller.net

Forum: Compiler & IDEs DS1307 mit Peter Fleury Library


Autor: Joel B. (jeybee666)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: GG (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.