- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 11

Thema: Denkfehler bei einer DS1307?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9

    Denkfehler bei einer DS1307?

    Hallo Forum,

    ich schreibe gerade den Quellcode für meine Uhr. Und ich habe einen Denkfehler aber ich finde ihn nicht.
    Ich habe einen Mega32 der mit 8MHz getaktet ist. Am I²C hängt ne DS1307 RTC wo die Uhrzeit ausgelesen wird. Die Kommunikation funktioniert auch und das auslesen funktioniert auch zu 99%. An den Ports A und D hängen 4 71414 die die Uhrzeit auf meinen Röhren anzeigen. Ich hab es aber eben z.B. gehabt das bis 20:10 die Uhrzeit richtig als 20:10 angezeigt wurde aber sobald es 20:10 war, war auf den Röhren 20:16 zu lesen. Und die Uhr läuft dann auch mit der Zeit weiter. Es wird also nicht 20:15 angezeigt sondern 20:21.
    Ich finde den Fehler einfach nicht >.<
    Mein bisheriger Code sieht so aus:
    Code:
    'Mikrocontroller
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    'Stackgröße festlegen
    $hwstack = 200
    $swstack = 200
    
    'TWI konfigurieren
    Config Sda = Portc.1
    Config Scl = Portc.0
    Config Twi = 100000                                         'TWI Frequenz
    
    'Unterprogramme
    Declare Sub Uhrzeit
    Declare Sub Read_dcf
    Declare Sub Rtc_einstellen
    Declare Sub Enable_sqw
    
    'Ports konfigurieren
    Config Porta = Output                                       'Port für die Stunden
    Config Portd = Output                                       'Port für die Minuten
    Config Pinb.2 = Input                                       'Input für die SQW der RTC
    
    Porta = 0
    Portd = 0
    Pinb.2 = 1                                                  'Pull-Up aktivieren
    
    'Variablen
    Dim _sec As Byte
    Dim _min As Byte
    Dim _hour As Byte
    Dim _weekday As Byte
    Dim _day As Byte
    Dim _month As Byte
    Dim _year As Integer
    Dim Ds1307w As Byte
    Dim Ds1307r As Byte
    Dim Stunde As Byte
    Dim Minute As Byte
    Dim Ds1307_config As Byte                                   'Controllregister der RTC
    
    'Uhrzeit voreinstellen
    _sec = 00
    _min = 04
    _hour = 20
    
    'Adresse der DS1307
    Ds1307w = &HD0                                              'Schreibadresse der RTC
    Ds1307r = &HD1                                              'Leseadresse der RTC
    
    'Interrupts einstellen
    Config Int2 = Falling
    Enable Int2
    On Int2 Ds1307_int
    
    'Interrups aktivieren
    Enable Interrupts
    
    
    'Call Rtc_einstellen
    
    Do
    
    Call Uhrzeit
    
    Porta = Stunde
    Portd = Minute
    Wait 1
    
    Loop
    End
    
    '------------------------------------------------------------------------------
    
    'RTC auslesen
    Sub Uhrzeit
    I2cstart                                                    'TWI Start
    I2cwbyte Ds1307w                                            'Übergabe der Slaveadresse
    I2cwbyte 0                                                  'Registerzähler wird auf Null gesetzt
    
    I2cstart                                                    'Zweite Startkondition
    I2cwbyte Ds1307r                                            'Übergabe der Leseadresse
    I2crbyte _sec , Ack                                         'Auslesen des Sekundenregisters
    I2crbyte _min , Ack                                         'Auslesen des Minutenregisters
    I2crbyte _hour , Nack                                       'Auslesen des Jahresregisters
    I2crbyte _weekday , Ack
    I2crbyte _day , Ack                                         'Auslesen des Tagesregisters
    I2crbyte _month , Ack                                       'Auslesen des Monatsregisters
    I2crbyte _year , Nack                                       'Auslesen des Jahresregisters
    I2cstop                                                     'TWI Stoppkondition
    
    Minute = Makebcd(_min)                                      'Umwandeln in BCD Code
    Stunde = Makebcd(_hour)
    
    End Sub
    
    '------------------------------------------------------------------------------
    
    Sub Read_dcf
    
    Return
    End Sub
    
    '------------------------------------------------------------------------------
    
    'Einstellen Der Zeit
    Sub Rtc_einstellen
    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 0
    I2cwbyte _sec
    I2cwbyte _min
    I2cwbyte _hour
    I2cstop
    End Sub
    
    '------------------------------------------------------------------------------
    
    Sub Enable_sqw
    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 7
    I2cwbyte Ds1307_config
    I2cstop
    Return
    End Sub
    
    '------------------------------------------------------------------------------
    
    Ds1307_int:
    
    Return
    
    '------------------------------------------------------------------------------
    Anbei noch der Schaltplan meines Aufbaus.
    Kann mir jemand auf die Sprünge helfen und mir sagen wo der Fehler ist?
    Danke für die Hilfe!

    Edit: Und statt 20:20 steht da 20:32.
    Angehängte Dateien Angehängte Dateien
    Geändert von Kampi (04.04.2012 um 19:21 Uhr) Grund: Was ergänzt.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

Ähnliche Themen

  1. Verbindungsproblem mit DS1307?
    Von Kampi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 13.07.2010, 09:16
  2. Denkfehler?
    Von Feratu im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 04.02.2008, 21:00
  3. Programmierung => Denkfehler?
    Von Feratu im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 03.02.2008, 21:44
  4. DS1307 ???
    Von EDatabaseError im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 18.08.2006, 11:39
  5. Denkfehler?
    Von Stolle im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 30.03.2006, 10:54

Berechtigungen

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

Labornetzteil AliExpress