- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: Programmierung des PCF8583

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    12.11.2004
    Ort
    Berlin
    Beiträge
    58
    Anzeige

    Powerstation Test
    Hi,

    Register 0x07 (Timerinhalt) wird immer um 1 erhöht. je nachdem was du eingestellt hast. wenn
    1. 1/100 --> wird bei 1/100 Sec. um 1 erhöht
    2. Sec --> wird bei sekunden-takt um 1 erhöht
    3. Min. --> wird bei Minuten-Takt um 1 erhöht
    4. hrs --> wird bei Stunden-Takt um 1 erhöht.
    5. Days --> wird jeden Tag um 1 erhöht
    Diese werden in den ersten 3 Bits von Register 0x08 eingestellt.

    wenn der Inhalt des Registers 0x07 von 99 auf 0 zurückgeht, wird das Flagbit Bit0 des Registers 0x00 auf 1 gesetzt. Das muss dann per Software gelöscht werden. Wenn das Timer-En-Bit gesetzt ist, dann wird ein Int. ausgelöst. Timer Enable Bit findest du in Register 0x08 bit3.


    IngBo

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    12.11.2004
    Ort
    Berlin
    Beiträge
    58
    Hallo,

    wie versprochen, die Software kann jetzt downgeloadet werden
    http://www.channaa.com/html/rs232_i2c_adapter.html

    damit kannst du die Registerinhalte des PCF8583 berechnen.
    natürlich auch andere I2C-ICs


    IngBo

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo

    Ich hätte dazu ein paar Fragen zur Programmierung von dem PCF8583
    (Sind meine ersten Versuche mit I2C )

    Habe jetzt den PCF8583 angeschlossen und mit dem Programm von Tooltime probiert.
    Nachdem ich herrausgefunden habe, dass ich noch zwei Widerstände für die Datenleitungen brauche , funktioniert es jetzt

    Nur möchte ich es jetzt auch verstehen..

    Mir ist jetzt noch nicht ganz klar, wie das ansprechen von dem PCF.. jetzt wirklich funktioniert.
    Mein Ziel ist eine normale Uhr mit Datum für das Loggen von Daten dann in ein EEprom.

    Datenplatt von dem PCF8583 habe ich jetzt auch, aber wegen schlechtem englisch, blicke ich da nicht ganz durch.

    Wenn Tooltime schreibt:
    Code:
        I2cstart                                        'I2C Start
        I2cwbyte &HA0                         'Schreibemodus
        I2cwbyte 0                               'select control register
        I2cwbyte &HC                           'set year and day bit for masking
    Was passiert da eigentlich ?

    I2cwbyte... ist Schreiben am I2C Bus (I2crbyte 0 lesen)
    &HA0 = A0= 10100000
    Das dürfte die Adresse von dem PCF8583 am Bus sein ?!
    (Wobei 10100000 (A0) schreiben und 10100001 (A1) lesen sein dürfte ?!)

    Nur was jetzt kommt, ist mir nicht klar:
    I2cwbyte 0 'select control register
    I2cwbyte &HC 'set year and day bit for masking


    Genauso wie beim auslesen .
    Was geschiet hier ?
    Sehe zwar die Register im Datenblatt, aber wie komme ich dort hin ?
    Da habe ich Register 0,4,5,6,8

    Ist jemand vielleicht so lieb und kan mir das ein bisschen erklären ?



    l.G. Roberto

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo
    Hat keiner einen Tip für mich ?

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    23.03.2005
    Ort
    Bayern
    Beiträge
    62
    Sorry, dass so lange keine Antwort kam.
    Ich werde mir diese Woche noch einmal die Unterlagen zu dem damaligem Projekt raussuchen.
    Ich hoffe dir dann auch weiterhelfen zu können, denn einige Abläufe des PCF8583 sind mir heute noch ein Rätsel.

    Bitte hab noch etwas Geduld
    tooltime

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo Tooltime

    Häte schon noch interesse
    Aber für mich ist derzeit eher nur die normale Uhr funktion wichtig.

    Mir ist noch nicht ganz klar:
    Auf Seite 7 im Datenblatt (links)
    http://www.semiconductors.philips.co.../PCF8583_5.pdf
    Ist der Clock mode dargestellt.
    (Register 0 habe dafür auf 00000000 gestellt)

    Ist die Spalte da in 2*BCD aufgeteilt ?
    links 10s, rechts 1s ?

    Und mit
    I2crbyte S , Ack
    S = Makedec(s)
    lese ich dann die rechten BCD's aus?

    Kann man auch das Jahr irgendwie auslesen ?

    Im Register 05 (Seite7)
    steht da : Year/date
    unterhalb aber 10 month /1 month ?
    ?

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    23.03.2005
    Ort
    Bayern
    Beiträge
    62
    Hallo Roberto,
    ich habe gerade ein kleines Programm zusammengebastelt.
    Wenn Du einen Mega 8 µC hast, kannst Du das Programm 1 zu 1 übernehmen und ein bischen experimentieren.

    Gruß
    tooltime

    Code:
    ' ---------[ Initialisierung ]--------
    $regfile = "m8def.dat"                                      ' Chip auswählen
    $crystal = 1000000                                          ' Quarzfrequenz festlegen
    Config Scl = Portc.5                                        ' I2C-Clock festlegen
    Config Sda = Portc.4                                        ' I2C-Data festlegen
    Config Lcdmode = Port
    Config Lcdbus = 4
    Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.1 , Rs = Portb.0
    Config Lcd = 16 * 2                                         ' LCD-Typ festlegen
    Cursor = Off                                                ' Cursor ausschalten
    Cls
    
    Dim S As Byte , M As Byte , H As Byte , D As Byte , Month As Byte
    Dim Wm As Byte , Yd As Byte
    
    
    '-----[ Hauptprogramm ]----------------------------------------
    
    Wm = 3
    D = 8
    Month = 2
    Yd = 1
    H = 22
    M = 00
    S = 00
    
    Settime:
        'values are stored as BCD values so convert the values first
        S = Makebcd(s)                                          'seconds
        M = Makebcd(m)                                          'minuts
        H = Makebcd(h)                                          'hours
        D = Makebcd(d)                                          'days
        Month = Makebcd(month)                                  'months
        Yd = Makebcd(yd)                                        'seconds
        Wm = Makebcd(wm)                                        'minuts
    
        I2cstart                                                'generate start
        I2cwbyte &HA0                                           'write address
        I2cwbyte 0                                              'select control register
        I2cwbyte 8                                              'set year and day bit for masking
        I2cstop                                                 'generate stop
    
        I2cstart                                                'generate start
        I2cwbyte &HA0                                           'write mode
        I2cwbyte 2                                              'select seconds Register
        I2cwbyte S                                              'write seconds
        I2cwbyte M                                              'write minuts
        I2cwbyte H                                              'write hours
        I2cwbyte Yd                                             'write jear
        I2cwbyte D                                              'write day
        I2cwbyte Wm                                             'wirte weekday
        I2cwbyte Month                                          'write month
        I2cstop                                                 'generate stop
    
        Goto Gettime
    
    
    Gettime:
        I2cstart                                                'generate start
        I2cwbyte &HA0                                           'write addres
        I2cwbyte 2                                              'select second register
        I2cstart                                                'generate repeated start
        I2cwbyte &HA1                                           'write address for reading
        I2crbyte S , Ack                                        'read seconds
        I2crbyte M , Ack                                        'read minuts
        I2crbyte H , Ack                                        'read hours
        I2crbyte Yd , Ack                                       'read year
        I2crbyte D , Ack                                        'read day
        I2crbyte Wm , Ack                                       'read weekday
        I2crbyte Month , Nack                                   'read month
    
        I2cstop                                                 'generate stop
    
    Goto Zeit
    
    
    Zeit:
    
       S = Makedec(s)
       M = Makedec(m)
       H = Makedec(h)
       Yd = Makedec(yd)
       D = Makedec(d)
       Wm = Makedec(wm)
       Month = Makedec(month)
    
       If H >= 10 Then
       Locate 1 , 1 : Lcd H
       Else
       Locate 1 , 1 : Lcd " " ; H
       End If
    
       Locate 1 , 3 : Lcd ":"
    
       If M >= 10 Then
       Locate 1 , 4 : Lcd M
       Else
       Locate 1 , 4 : Lcd "0" ; M
       End If
    
       Locate 1 , 6 : Lcd ":"
    
       If S >= 10 Then
       Locate 1 , 7 : Lcd S
       Else
       Locate 1 , 7 : Lcd "0" ; S
       End If
    
       Locate 2 , 1 : Lcd D ; "." ; Month ; "." ; Yd ; " " ; Wm
    
       Waitms 100
    
    Goto Gettime

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo tooltime

    Danke dafür

    Werde es in den nächsten Tagen mal ausprobieren..

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    17.12.2006
    Beiträge
    9
    Scheint bei Euch schon 2Y zu laufen?

    Hallo tooltime
    Danke auch dafür, nur LCD Quarz + m88 angepasst (nach montage der I2C pullup) läuft suuuuppper!!!!!!

    Jahr geht nur 0.1.2.3 ist für Schaltjahrberechnung. Notfalls eine Speicherzelle für 0-256 opfern. Wenn der yP im Jahr 2256 noch läuft, muss ein Softwareupdate einen Offset dazuzählen oder auf 16bit erweitern für die "Ewigkeit"

    Teste syncronität mit 5V und 2pF seit ca. 30Minuten, noch ziemlich syncron(<1sec). Morgen werd ich dann die Initalisierung rausnehmen um auch die Sync auf CR2032 zu testen.

    Gute Nacht Wambly

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests