- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 11

Thema: Denkfehler bei einer DS1307?

Hybrid-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
    Zitat Zitat von MagicWSmoke Beitrag anzeigen
    Deine Kommunikation ist einseitig, vom und hin zum DS1307 muss jeweils Dez/BCD gewandelt werden, bei Dir nur nach BCD.
    Im Bascom\Samples\I2C Ordner ist genau ein Beispiel zur 1307, woran Du Dich orientieren kannst.
    Super! Dank dir ich schau es mir direkt mal an.
    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

  2. #2
    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
    Ok es scheint nun zu funktionieren. Dank dir nochmals
    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

  3. #3
    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
    So also das mit der Uhrzeit funktioniert nun einwandfrei, allerdings klappt das auslesen in der ISR nicht.
    Ich hab den SQW Pin der RTC direkt mit Pin B.2 verbunden. Der Plan ist nun gewesen, dass ich beim Mega32 an diesem Pin den Pull-Up aktiviere und den Interrupt und der SQW Pin der RTC auf 1Hz gestellt wird.
    Das klappt allerdings nicht.
    Mein Code ist folgender:
    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 Settime
    Declare Sub Read_dcf
    Declare Sub Enable_sqw
    
    'Ports konfigurieren
    Config Porta = Output                                       'Port für die Stunden
    Config Portd = Output                                       'Port für die Minuten
    Config Portb.2 = Output
    Ds1307 Alias Pinb.2
    
    Porta = 0
    Portd = 0
    Ds1307 = 1                                                  'Pull-Up aktivieren
    
    'Variablen
    Dim Zaehler As Byte
    Dim _hour As Byte
    Dim _min As Byte
    Dim _sec As Byte
    Dim _weekday As Byte
    Dim _day As Byte
    Dim _month As Byte
    Dim _year As Byte
    Dim Ds1307w As Byte
    Dim Ds1307r As Byte
    Dim Stunde As Byte
    Dim Minute As Byte
    Dim Sekunde As Byte
    
    'Adresse der DS1307
    Ds1307w = &HD0                                              'Schreibadresse der RTC
    Ds1307r = &HD1                                              'Leseadresse der RTC
    
    'Interrups aktivieren
    Enable Interrupts
    
    'Interrupts einstellen
    On Int2 Ds1307_int
    Config Int2 = Rising
    Enable Int2
    
    'Uhrzeit voreinstellen
    _hour = 16
    _min = 01
    _sec = 00
    'Call Settime
    
    Call Enable_sqw                                             'SQW der RTC aktivieren
    
    Do
    
    'Call Uhrzeit
    
    Porta = Zaehler
    'Porta = Stunde
    'Portd = Minute
    Wait 1
    
    Loop
    End
    
    '------------------------------------------------------------------------------
    
    'RTC auslesen
    Sub Uhrzeit
      I2cstart
      I2cwbyte Ds1307w                                          ' Schreibadresse senden
      I2cwbyte 0                                                ' Startadresse auf Register 0 setzen
    
      I2cstart
      I2cwbyte Ds1307r                                          ' Adresse übermitteln
      I2crbyte Sekunde , Ack
      I2crbyte Minute , Ack
      I2crbyte Stunde , Ack
      I2crbyte _weekday , Ack
      I2crbyte _day , Ack
      I2crbyte _month , Ack
      I2crbyte _year , Nack
      I2cstop
    End Sub
    
    '------------------------------------------------------------------------------
    
    Sub Read_dcf
    
    Return
    End Sub
    
    '------------------------------------------------------------------------------
    
    Sub Enable_sqw
    I2cstart
    I2cwbyte &HD0
    I2cwbyte 7
    I2cwbyte &B00010001
    I2cstop
    End Sub
    
    '------------------------------------------------------------------------------
    
    Ds1307_int:
    
    Incr Zaehler
    
    Return
    
    '------------------------------------------------------------------------------
    
    Sub Settime
      _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
      I2cstart
      I2cwbyte Ds1307w
      I2cwbyte 0
      I2cwbyte _sec
      I2cwbyte _min
      I2cwbyte _hour
      I2cstop
    End Sub
    
    '------------------------------------------------------------------------------
    Ich finde da einfach keinen Fehler.... aber es funktioniert nicht.
    Kann mir da jemand helfen (ist sicher wieder was total banales -.-)?
    Danke schonmal!
    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

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Kampi Beitrag anzeigen
    ... dass ich beim Mega32 an diesem Pin den Pull-Up aktiviere
    Einen Pullup aktiviert man nicht, indem man den Pin auf Ausgang setzt.

  5. #5
    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
    Zitat Zitat von MagicWSmoke Beitrag anzeigen
    Einen Pullup aktiviert man nicht, indem man den Pin auf Ausgang setzt.
    Naja selbst wenn ich den auf Input stelle gehts nicht :/
    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

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Input ist schon richtig, aber einen Pullup brauchst Du trotzdem. Den musst Du entweder intern einschalten oder extern dranlöten.

  7. #7
    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
    Zitat Zitat von MagicWSmoke Beitrag anzeigen
    Input ist schon richtig, aber einen Pullup brauchst Du trotzdem. Den musst Du entweder intern einschalten oder extern dranlöten.
    Ja ich wollte den internen Pull-Up verwenden, da mir hier gesagt wurde das das gehen würde
    Den aktiviere ich doch mit

    PINB.2 = 1

    oder?
    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
  •  

Solar Speicher und Akkus Tests