SchemaTheek
 
Home Nieuws Forum Schema's Artikelen Magazine Downloads Links Shops Zoeken
 
Controle Paneel
Gebruikersnaam
Wachtwoord
  Onthoud mij
» Wachtwoord?
» Registreren
Site info
» Het Team
» Contact
» FAQ
» Leden
» Upload Archief
Stats
Totaal online: 19
19 gasten
0 leden:
Forum > Digitaal > pcf8563 uitlezen met een pic18f2550
« 1 2 [3]
pascalbianca
Lid
Berichten: 1449
Gepost op zaterdag 22 Februari 2014 23:53:44 QuoteWijzig

Oke heb dus deze regel weg gehaald .:

Code
HBusIn $A3 , $02, [Seconde, Minuut, Uur, Datum, Maand] ;Datum bevat datum + jaar / Maand bevat dag + maand


en vervangen op deze manier zoals jij het vermeld.:

Code
HBusIn $A3 , $02, [Seconde]
HBusIn $A3 , $03, [Minuut] 
HBusIn $A3 , $04, [Uur] 
HBusIn $A3 , $05, [Dag] 
HBusIn $A3 , $07, [Maand] 


Echter blijf ik dus nu nog altijd hetzelfde op het scherm houden.


http://pascalbianca.blogspot.nl/
Stynus
Admin
Berichten: 2854
Gepost op zondag 23 Februari 2014 00:01:47 QuoteWijzig

Heb je de tijd al ingesteld in de rtc?

Tijd in de variabelen zetten en dan:

Code

HBusIn $A2 , $02, [Seconde]
HBusIn $A2 , $03, [Minuut] 
HBusIn $A2 , $04, [Uur] 
HBusIn $A2 , $05, [Dag] 
HBusIn $A2 , $07, [Maand] 



en dan nog ergens in de eerste byte's start op 1 zetten.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
pascalbianca
Lid
Berichten: 1449
Gepost op zondag 23 Februari 2014 00:43:21 QuoteWijzig

Nee ik heb de tijd nog niet ingesteld in de RTC omdat Frits mij eerst aan had geraden om eerst de RTC aan de praat te krijgen en als die liep eventueel een DCF77 te gebruiken zodat je altijd goed zit met de tijd/datum.

Maar ik heb dus nu weer de gehele dag zitten stoeien ermee en nu net heb ik hem via proteus 8 virtueel aan de praat.
Dus dacht ik , weet je wat schreeuw niet te hard , eerst testen of het ook op mijn breadboard werkt en wat denk je , hij doet het.

Het vreemde ia alleen, het adres staat vast volgens de datasheet alleen $A2 en $A3 werken helemaal niet, het moet zijn $A0 en $A1 zijn , hierop begon hij te werken.
Vind het vreemd dat in de datasheet heel wat anders staat.

[Update]
Na lang zoeken ben ik erachter gekomen dat het adres overeen komt met die van de PCF8583.: Slave addresses: A1h or A3h for reading, A0h or A2h for writing terwijl op de ic duidelijk PCF8563 staat en ook niet wisselbaar is in adres.
Lijkt mij dan hierop duidelijk een foute bedrukking op de IC , wel de eerste keer dat ik dit meemaak.

Dus heb ik zitten zoeken en prutsen met de codes van die PCF8583 en heb het nu werkend en goed ingesteld.
Voor de personen die interesse hebben , indien ze ook die IC willen gebruiken, hierbij de code.
Alvorens wil ik melden , er zit een controle in het begin voor als de RTC leeg zou zijn word deze ingesteld met de waarden die in het gedeelte zit van SETTIME.
Alles word zo goed mogelijk als opmerking uitgelegd.
Hopelijk hebben jullie in de toekomst ook iets eraan, tevens heb ik deze ingestuurd als Schema met code voor op het forum


Code
Dim Minuten         As Byte     ; minuten                 (decimaal)
Dim Seconden        As Byte     ; seconden                (decimaal)
Dim Uren            As Byte     ; uren                    (decimaal
Dim Dag             As Byte     ; datum v/d maand         (decimaal
Dim Maand           As Byte     ; maand                   (decimaal)
Dim JaarVier        As Byte     ; jaar zoals in PCF8583 (hoogste 2 bits in YearDays)
Dim Jaar            As Word     ; jaar
Dim Weekdag         As Byte
 
Dim WeekdagString[2]      As Byte
Dim MaandString[3]        As Byte
 
                                ;Het jaar wordt in de PCF8385 alleen bijgehouden in een vier 
                                ;jaars tijdvak (0 tot 3) waarbij 0 het schrikkeljaar is.
                                ;De software waarin de PCF8385 opgenomen is moet zelf een 
                                ;variable bijhouden waaruit het uiteindelijke jaar berekend kan worden.
                                ;In dit voorbeeld wordt daar JaarDev4 voor gebruikt. JaarDev4 
                                ;moet met 1 verhoogd worden wanneer het jaar in de PCF8583 
                                ;van 3 naar 0 verandert.
Dim YearDays        As Byte     ;bit 0 tot 3 voor dag eenheden, bit 4 
                                ;en 5 voor dag tientallen (0-3), bit 6 en 7 jaar (0-3).
Dim WeekDayMonths   As Byte     ;bit 0 tot 3 voor maand eenheden, bit 4 voor maand 
                                ;tientallen (0-1), bit 5 tot 7 weekdagen (0-6).
Dim secs            As Byte     ;bit 0 tot 3 voor seconden eenheden, bit 4 tot 6 
                                ;voor seconden tientallen (0-5), bit 7 niet gebruikt.
Dim mins            As Byte     ;bit 0 tot 3 voor minuten eenheden, bit 4 tot 6 
                                ;voor minuten tientallen (0-5), bit 7 niet gebruikt.
Dim hrs             As Byte     ;bit 0 t0t 3 voor uren eenheden, bit 4 en 5 
                                ;voor uren tientallen (0-2), bit 6 0=AM 1=PM , bit 7 0=24 
                                ;uur mode, 1=12 uur mode(AM/PM).
Dim JaarDev4        As Byte     ;hoogste 7 bits = jaar - 2000 gedeeld door 4 
                                ;(wordt niet door PCF8583 geupdate), laagste bit is jaar3 flag
Dim jaar3           As Byte     ;flag om de jaar overgang van 3 naar 0 
                                ;(schrikkeljaar)te kunnen detecteren voor update van JaarDev4
Dim dummy           As Byte     ;hulp variable.
    
     
Symbol PCF8583r   = $A0         ;Adres om PCF8583 uit te lezen (r = read)
Symbol PCF8583w   = $A1         ;Adres om naar PCF8583 te schrijven (w = write) 
Symbol PCF8574A_ADDR =$70       ;$70 is schrijf $71 is lezen

Clear
DelayMS 200 'stabilizza LCD
Cls

   If hrs = 0 And YearDays = 1 And WeekDayMonths = 1 Then ;reset status van de PCF8583. (PCF8583 is leeg) 
        GoSub setTime                                     ;Stelt klok in
    End If         
GoSub getTime

Loop:
    GoSub WerkingIC
    GoSub getTime
 
    Print At 1 , 1, Str WeekdagString, " ", Dec2 Dag," ",Str MaandString," ", Dec4 Jaar, "  "
    Print At 2 , 1 , @Uren, ":", Dec2 Minuten, ":", Dec2 Seconden, " "
    Print At 3,5,Dec Weekdag 
 
    DelayMS 100
 
    GoTo Loop
    
getTime:
    HBusIn PCF8583r, $02, [secs, mins, hrs,YearDays,WeekDayMonths] ;haal tijd op vanuit de PCF8583
    HBusIn PCF8583r, $10, [ JaarDev4 , jaar3]                      ;haal jaar op (-2000 / 4) 
 
    Seconden = ((secs >> 4) * 10) + (secs & 15)                     ;zie proton help "Math Operators"
    Minuten  = ((mins  >> 4) * 10) + (mins  & 15)
    Uren     = ((hrs     >> 4) * 10) + (hrs     & 15)
    Dag      = (((YearDays >> 4 ) & 3 ) * 10) + (YearDays  & 15)
    Maand    = (((WeekDayMonths >> 4) & 1 ) * 10) + (WeekDayMonths  & 15)
    JaarVier = (YearDays     >> 6)
    Weekdag  = (WeekDayMonths  >> 5)
 
    Jaar = 2000 + JaarVier + (JaarDev4*4)
 
    If JaarVier = 3 Then                    ;Twee if statements om JaarDev4 eens in de 4 jaar te verhogen 
        jaar3 = 1                           ;Bij overgang naar schrikkeljaar
        HBusOut PCF8583w, $11, [ jaar3 ]
    End If
 
    If JaarVier = 0 And jaar3 = 1 Then      ; omslag naar jaar 0 (schrikkeljaar)
        jaar3 = 0
        JaarDev4 = JaarDev4 + 1             ; JaarDev ophogen met 1 
        HBusOut PCF8583w, $10, [ JaarDev4, jaar3 ]
    End If
 
    Select Case Weekdag
        Case 0
            Str WeekdagString = "Zo"
        Case 1
            Str WeekdagString = "Ma"                                                    
        Case 2
            Str WeekdagString = "Di"
        Case 3
            Str WeekdagString = "Wo"
        Case 4
            Str WeekdagString = "Do"
        Case 5
            Str WeekdagString = "Vr"
        Case 6
            Str WeekdagString = "Za"
         Case 7
            Str WeekdagString = "Zo"    
    End Select
 
    Select Case Maand
        Case 1
            Str MaandString = "Jan"
        Case 2
            Str MaandString = "Feb"    
        Case 3
            Str MaandString = "Mar"
        Case 4
            Str MaandString = "Apr"    
        Case 5
            Str MaandString = "Mei"
        Case 6
            Str MaandString = "Jun"    
        Case 7
            Str MaandString = "Jul"
        Case 8
            Str MaandString = "Aug"    
        Case 9
            Str MaandString = "Sep"
        Case 10
            Str MaandString = "Okt"    
        Case 11
            Str MaandString = "Nov"
        Case 12
            Str MaandString = "Dec"
    End Select
Return  

setTime:                   ;Wordt in dit voorbeeld alleen gebruikt om lege PCF8583 te vullen
 
    Seconden = 00          ;Waarden voor "Do 28 Feb 2012  23:59:55" (testen schrikkeldag)
    Minuten = 10
    Uren = 9
    Dag = 23
    Maand = 2
    Jaar = 2014
    Weekdag = 7           ; Zondag                                               
 
    dummy=Seconden/10     ;dummy is tientallen van Seconden
    dummy=dummy*16        ;waarde doorschuiven naar de vier MSB
    secs=Seconden//10     ;secs is eenheden van Seconden 
    secs=secs | dummy     ;Bitwise OR combineert beide waarden in een byte
 
    dummy=Minuten/10
    dummy=dummy*16
    mins=Minuten//10
    mins=mins | dummy
 
    dummy=Uren/10
    dummy=dummy*16
    hrs=Uren//10
    hrs=hrs | dummy
 
    JaarVier = (Jaar - 2000) // 4                                   'rest van Jaar-2000 gedeelt door 4
    YearDays = (JaarVier << 6) +  ((Dag / 10) << 4) + (Dag // 10)
    JaarDev4 = ((Jaar - 2000) / 4)                                   ;Integer van Jaar-2000 gedeeld door 4 
 
    WeekDayMonths = (Weekdag << 5) + ((Maand/10) << 4) + (Maand //10)
 
    HBusOut PCF8583w, $02, [ secs,mins,hrs, YearDays,WeekDayMonths ]
    HBusOut PCF8583w, $10, [ JaarDev4 ]
Return

WerkingIC:
    HBusOut PCF8574A_ADDR, [%11111111] ;   ;Start Lezen van I2C
    DelayMS 100
    HBusOut PCF8574A_ADDR, [%11111101] ;   ;Start Lezen van I2C
    DelayMS 250
Return


 
[Bericht gewijzigd door pascalbianca op Zondag 23 Februari 2014 09:33:54]


http://pascalbianca.blogspot.nl/
Stynus
Admin
Berichten: 2854
Gepost op zondag 23 Februari 2014 11:03:38 QuoteWijzig

Ok, goed dat het nu wel werkt .

Quote
pascalbianca schreef:
...
Na lang zoeken ben ik erachter gekomen dat het adres overeen komt met die van de PCF8583.: Slave addresses: A1h or A3h for reading, A0h or A2h for writing terwijl op de ic duidelijk PCF8563 staat en ook niet wisselbaar is in adres.
Lijkt mij dan hierop duidelijk een foute bedrukking op de IC , wel de eerste keer dat ik dit meemaak...


Waar had je die gekocht? Als het bij een offici?le verdeler is zou ik klagen. Als het uit China komt is het waarschijnlijk namaak of recyclage en komen die dingen wel meer voor.

Let met die PCF8583 wel op als je het alarm wil gebruiken, de int uitgang staat bij deze namelijk op een andere positie.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
Henk (NL)
Lid
Berichten: 263
Gepost op zondag 23 Februari 2014 11:03:41 QuoteWijzig


Quote
Het vreemde ia alleen, het adres staat vast volgens de datasheet alleen $A2 en $A3 werken helemaal niet, het moet zijn $A0 en $A1 zijn , hierop begon hij te werken.
Vind het vreemd dat in de datasheet heel wat anders staat.


In de 2e link van CO kon je dit ook duidelijk zien.
Maar je zei toen dat het niet werkte; A2+A3 zijn dacht ik de E2prom adressen.

pascalbianca
Lid
Berichten: 1449
Gepost op zondag 23 Februari 2014 13:14:41 QuoteWijzig

@Stynus, hij komt inderdaad van China.
Nou die alarm functie wilde ik eigenlijk niet gebruiken , maar bedankt voor de tip.
@Henk nee dat klopt , dat werkte ook niet op een of andere manier, maar naar die wijziging wat je aangaf werkt het nu wel.

Ik heb ook een schema en uitleg+code via de schema tapblad door gestuurd voor toekomstige mensen die het willen gebruiken.


http://pascalbianca.blogspot.nl/
« 1 2 [3]

Active Topics

» ? => Mini kerstlan...
» ATSAMD21J18A-AU backupen
» De gevolgen van een kl...
» De tuin.
» Afstandsbediening plaf...
» Virtual Chemist probleem
» Probleem met Toyota Av...
» Whirlpool kookplaat
» 24 volt motor vertrage...
» Show je mini projecten

» Meer actieve topics

Advertenties

PCBway

© 2004-2022 SchemaTheek
Laadtijd: 0.19025 sec.