-         

Ergebnis 1 bis 10 von 10

Thema: Uhrzeit über I2C programmieren (DS1307)

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    26.03.2006
    Beiträge
    78

    Uhrzeit über I2C programmieren (DS1307)

    Anzeige

    Hi Leute!
    Brauche wieder einmal eure Hilfe!
    Möchte auf ein 4x20 LCD die Uhrzeit (Datum) ausgeben (Tag-Monat-Jahr)!
    Als Baustein habe ich den DS 1307 Z mit einem Quarz 32768 und eine Bat. 3V ausgewählt.
    Programmieren möchte ich in C (AVR-Studio) einen Mega 32L, wobei ich die Pin's PC0/PC1 dafür vorgesehen habe.
    Leider habe ich keine Ahnung, wie ich eine Zeit realisieren kann. Gibt's vielleicht schon eine Funktion dafür.
    Danke
    Pap

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    Ich habe mal ein paar Funktionen zum Ansteuern dieser RTC mittels TWI geschrieben. Vielleicht helfen sie dir weiter.
    Angehängte Dateien Angehängte Dateien
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    32
    Beiträge
    563
    Ich habe das DS1307 im Moment an einem Atmega mit 16x2 LCD am laufen. Ich benutze zur Ansteuerung die Libs von Peter Fleury. Damit lässt sich sowohl das RTC einfach auslesen als auch das LCD einfach ansteuern. Bei Bedarf kann ich mein Projekt zur Verfügung stellen. Ist bestimmt nicht optimal programmiert (bin noch Anfänger) aber es sollten die Vorgänge verständlich sein. Hab das Projekt nur grade nicht zur Hand (liegt auf meinem demontierten Desktop-PC)

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    26.08.2006
    Beiträge
    84
    Mahlzeit!

    Sieh auch auch noch eine Verbindung vom square wave out (SQW/OUT) zu einem der externen Int Pins des AVR vor.

    Dann brauchst du die Zeit nur zu jeder vollen Sekunde bei einem externen Interrupt auslesen und hast den Rest der Sekunde zur Verfügung was zum Stellen der Uhr zu tun (Tasten/GPS o.ä.).

    Die Zeit selber legst am Besten in einem Feld aus bytes (uint8_t) ab.

    Schreiben in ein LCD geht dann relativ problemlos durch Addition von 0x30 pro Stelle, da der DS1307 alles schön in Zehnern und dem Rest im Speicher hat und von sich gibt

    http://www.asciitable.com/

    Viel Spaß!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    26.03.2006
    Beiträge
    78

    DS 1307!

    Hi Arkon,
    bitte kannst du mir dein Projekt (Code usw.) zukommen lassen.
    Wäre super!
    Dank dir schon Mal vorab!
    Gruß Papua

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    32
    Beiträge
    563
    Hier mein mal Projekt. Arbeitet mit einem 16x2 LCD. Das RTC hängt an PIN 28 und 27 vom Atmega.
    Angehängte Dateien Angehängte Dateien

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    26.03.2006
    Beiträge
    78
    Hi Arkon!
    Danke für dein Projekt!
    Frage: Ist die Library von Peter Fleury auch für ein Display 4x20 Zeichen ausgelegt? Bei mir funktioiert die Anzeige nicht so richtig! Bei mir hängt das LCD-Display (HD44780) auf
    Port D (RS=D2, R/W=GND, E=D3, DB4=D4,DB5=D5, DB6=D7, DB7=7)
    Also 4-Bit Mode. Muss zuerst die Anzeige hinkriegen, erst dann geht's mit der Zeit weiter!
    Danke Pap

    Meine Konfiguration!
    LCD.h
    #define LCD_IO_MODE 1

    #define LCD_PORT PORTD /**< port for the LCD lines */
    #define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */
    #define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */
    #define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */
    #define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */
    #define LCD_DATA0_PIN 4 /**< pin for 4bit data bit 0 */
    #define LCD_DATA1_PIN 5 /**< pin for 4bit data bit 1 */
    #define LCD_DATA2_PIN 6 /**< pin for 4bit data bit 2 */
    #define LCD_DATA3_PIN 7 /**< pin for 4bit data bit 3 */
    #define LCD_RS_PORT LCD_PORT /**< port for RS line */
    #define LCD_RS_PIN 2 /**< pin for RS line */
    #define LCD_RW_PORT LCD_PORT /**< port for RW line */
    #define LCD_RW_PIN 5 /**< pin for RW line */
    #define LCD_E_PORT LCD_PORT /**< port for Enable line */
    #define LCD_E_PIN 3 /**< pin for Enable line */

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    32
    Beiträge
    563
    Die Lib müsste auch mit 20x4 Displays funktionieren. Ich habe es aber noch nicht ausprobiert da mir zum debuggen im moment mein 16x2-Display reicht.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    26.03.2006
    Beiträge
    78
    Zeichen werden bei mir ausgegeben, aber alles durcheinander....
    Irgendwie ganz komisch...
    Bei der Konfig. habe ich ja hoffentlich auch nicht falsch gemacht???
    Danke Pap

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    26.03.2006
    Beiträge
    78

    Datum realisieren mit DS1307!

    Hi Arkon!
    Habe endlich das mit der LCD-Ausgabe hinbekommen!
    Zeitausgabe via LCD , Std.-Min.-Sek. funktioniert!
    Nur habe ich keine Ahnung, wie das mit dem Datum Tag-Monat-Jahr funktioniert. Macht das der Baustein (DS 1307) selber und muss nur den Tag auf Adr. 4, Monat Adr. 5 und das Jahr auf Adr. 6 abholen und am Display anzeigen lassen. Oder benötigt das wieder ein Stück Code?
    Danke Pap

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •