- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Programmierung des PCF8583

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.03.2005
    Ort
    Bayern
    Beiträge
    62

    Programmierung des PCF8583

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo an alle,

    ich spiele mich gerade mit einem Atmel Mega8515 und dem Uhr Clock-IC PCF8583.
    Das schreiben und anschließende auslesen der Uhrzeit funktioniert einwandfrei. Jetzt würde ich gerne den Timer des 8583 programmieren und komme irgendwie garnicht zu schuß.
    Daher meine Fragen:

    - Kann ich eingentlich den 8583 als Uhr und Timer gleichzeitig verwenden?
    - Was schreibe ich in die Register 07 bis 0F um z.B. nach 1 Std. den Timer auszulösen?
    - Wie lange ist dann der INT-Ausgang aktiv?

    Vielen Dank für eure Antworten

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2003
    Ort
    Langen / Hessen
    Alter
    58
    Beiträge
    393
    Kannst Du mal den Code posten, würde gerne auch mal mit meinem PCF8583 rumspielen, habs aber noch net kapiert

    Gruss Clemens
    Erfolg kommt NUR im Duden vor Leistung
    Grüße Euer LuK-AS

    Autonome Robotik www.CWNet.de
    Tauchroboter www.T-Bot.de

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    23.03.2005
    Ort
    Bayern
    Beiträge
    62
    So sieht im Moment das Programm für die Uhrzeit aus.
    Funktioniert eigentlich ganz gut. Fehlt halt nur noch der Timer!

    Wenn das Programm funktioniert, werde ich es natürlich auch veröffentlichen!!!

    Code:
    ' -----[ Initialisierung ]------------------------------------------------------
    $regfile = "8515DEF.dat"                                    ' Chip auswählen
    $crystal = 7372800                                          ' Quarzfrequenz festlegen
    
    Config Sda = Portd.0                                        ' I2C-Port festlegen
    Config Scl = Portd.1                                        ' I2C-Port festlegen
    
    Config Lcdmode = Port
    Config Lcdbus = 4
    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
    Config Lcd = 16 * 2                                         ' LCD-Typ festlegen
    Cursor = Off                                                ' Cursor ausschalten
    
    Dim S As Byte , M As Byte , H As Byte , D As Byte
    Dim Wm As Byte , Yd As Byte , Month As Byte                 ' Uhrvariablen
    
    S = 0
    M = 0
    H = 0
    D = 1
    Month = 1
    Wm = 1
    Yd = 5
    
    Ddrd = &B00010000
    
    Cls
    
    Settime:
    
        S = Makebcd(s)                                          'Sekunden
        M = Makebcd(m)                                          'Minuten
        H = Makebcd(h)                                          'Stunden
        D = Makebcd(d)                                          'Tag
        Month = Makebcd(month)                                  'Monat
    
        I2cstart                                                'I2C Start
        I2cwbyte &HA0                                           'Schreibemodus
        I2cwbyte 0                                              'select control register
        I2cwbyte &HC                                            'set year and day bit for masking
        I2cstop                                                 'I2C Stop
    
        I2cstart                                                'I2C Start
        I2cwbyte &HA0                                           'Schreibemodus
        I2cwbyte &H2                                            'Sekunden-Register auswählen
        I2cwbyte S                                              'Sekunden schreiben
        I2cwbyte M                                              'Minuten schreiben
        I2cwbyte H                                              'Stunden schreiben
        I2cwbyte D                                              'Tag schreiben
        I2cwbyte Month                                          'Monat schreiben
        I2cstop                                                 'I2C Stop
    
    
    '???????????????????????????????????????????????????????????????????????????????
    
        I2cstart                                                'I2C Start
        I2cwbyte &HA0                                           'Schreibemodus
        I2cwbyte 8                                              'Alarm-Register auswählen
        I2cwbyte &H4B                                           '01001011 schicken
    
        'hier sollte der Timer stehen
    
        I2cstop                                                 'I2C Stop
    
    '???????????????????????????????????????????????????????????????????????????????
    
    
        Gettime:
    
       I2cstart                                                 'I2C Start
       I2cwbyte &HA0                                            'Schreibemodus
       I2cwbyte 2                                               'Sekunden-Register auswählen
       I2cstart                                                 'I2C Start
       I2cwbyte &HA1                                            'Lesemodus
       I2crbyte S , Ack                                         'lese Sekunden
       I2crbyte M , Ack                                         'lese Minuten
       I2crbyte H , Ack                                         'lese Stunden
       I2crbyte Yd , Ack                                        'lese Jahr und Tag
       I2crbyte Wm , Nack                                       'lese Wochentag und Monat
       I2cstop                                                  'I2C Stop
    
       S = Makedec(s)
       M = Makedec(m)
       H = Makedec(h)
    
       If H >= 10 Then
       Locate 1 , 5 : Lcd H
       Else
       Locate 1 , 5 : Lcd " " ; H
       End If
    
       Locate 1 , 7 : Lcd ":"
    
       If M >= 10 Then
       Locate 1 , 8 : Lcd M
       Else
       Locate 1 , 8 : Lcd "0" ; H
       End If
    
       Locate 1 , 10 : Lcd ":"
    
       If S >= 10 Then
       Locate 1 , 11 : Lcd S
       Else
       Locate 1 , 11 : Lcd "0" ; S
       End If
    
       If Pind.6 = 0 Then                                       'An Pind.6, der an INT des PCF8583 angeschlossen ist,
       Portd = &B00010000                                       'soll eine LED leuchten, wenn der Timer abgelaufen ist
       Else
       Portd = &B00000000
       End If
    
       Goto Gettime

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    23.03.2005
    Ort
    Bayern
    Beiträge
    62
    Gibt es wirklich niemanden der bereits den Timer des PCF 8583 progammiert hat?

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.11.2004
    Ort
    Berlin
    Beiträge
    58
    hi tooltime,

    ja das kannst du machen, indem du folgendes machst:
    -> Reg 0x00 mit 0x84 beschreiben
    -Alarm Enable
    -32,768 kHz
    -Stop counting (Uhr muss zuerst gestoppt werden)

    -> Reg 0x01 bis 0x07 beschreiben
    - Zeit schreiben 0x01..0x06
    - Timer zurücksetzen Reg 0x07 mit 0x00 beschreiben

    -> Reg 0x08 mit 0x0B
    - Timer ON -- Minutes (99 Minuten)
    - Timer Int. Enable

    -> Reg 0x00 mit 0x04 beschreiben
    - Alarm Enable
    - 32,768 kHz
    - Start Counting (Uhr/Timer läuft)

    Timer-Flag muss per Software zurückgesetzt werden!!



    folgend ein Bildausschnitt vom RS232-I2C-Adapter Software, da kannst du sehen wie die Register beschreiben sind:
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken pcf8583-01.jpg  

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    12.11.2004
    Ort
    Berlin
    Beiträge
    58
    hallo,

    in ein paar Tage kann die Software von meiner HomePage downgeloadet werden. Es ist eignetlich für den RS232-I2C-Adapter gedacht, aber damit kannst du auch die Inhalte der Register berechnen.


    IngBo

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    21.09.2004
    Ort
    Augsburg
    Beiträge
    49
    is ja ne ganz nette uhr aber was macht das ding bei stromausfall bzw. wie kann man dafür sorgen dass die uhr weiter läuft und der speicher erhalten bleibt.
    vielleicht weiß auch jemand einen anderen ic als alternative?
    gruß werner...

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    12.11.2004
    Ort
    Berlin
    Beiträge
    58
    ich hoffe, mein googlen hilft dir weiter!!!
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken pcf8583.gif  

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    23.03.2005
    Ort
    Bayern
    Beiträge
    62
    Hallo IngBo,

    danke für die Tips.
    In welches Register schreibe ich aber jetzt die Minuten oder Stunden für den Timer?

  10. #10
    Neuer Benutzer
    Registriert seit
    27.03.2005
    Ort
    Väster Götland
    Beiträge
    3
    Hallo,
    ich hab da auch mal eine Frage. Ich will den PCF8583 als Event-Counter benutzen - über Reflex-Lichtschranke die Umdrehungen einer Welle zählen. Ein Puls-Pausen-Verhältnis von 50-50% scheint nicht zu funktionieren. Weiss jemand wie ich das Eingangssignal aufbereiten muss?
    Gruss Uwe

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen