Controle Paneel |
|
|
Site info |
»
»
»
»
» Upload Archief
|
|
Stats |
Totaal online: 6 6 gasten 0 leden: |
|
|
Forum > Digitaal > pcf8563 uitlezen met een pic18f2550 |
« 1 2 |
|
Gepost op zaterdag 22 Februari 2014 23:53:44 |
 |
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/ |
|
Gepost op zondag 23 Februari 2014 00:01:47 |
 |
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 |
|
Gepost op zondag 23 Februari 2014 00:43:21 |
 |
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/ |
|
Gepost op zondag 23 Februari 2014 11:03:38 |
 |
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 |
|
Gepost op zondag 23 Februari 2014 11:03:41 |
 |
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. |
|
|
Gepost op zondag 23 Februari 2014 13:14:41 |
 |
@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 |
|
|
|
|
|