Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    11

    orologio PCF8563

    Ciao a tutti, ho un problema con l'integrato PCF8563 che permette di leggere tramite i2c l'ora e la data.
    In pratica se continuo a interrogare l'integrato ogni minuto ho una perdita di circa 30-40 secondi all'ora. :berto:
    Ho letto sul datasheet che quando si fa una lettura/scrittura i dati sono congelati, ma c'è un contatore che memorizza i colpi di clock persi e quindi l'orologio è poi riallinato. VVoVe:
    Ho controllato la frequenza del clock tramite il pin di CLKOUT ed è corretto. La mia routine di lettura dura circa 2 ms quindi non credo sia nemmeno quella a creare problemi...
    Avete qualche idea?
    Spero possiate aiutarmi.
    Ciao e grazie!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Magari, come indicato nel regolamento, sarebbe utile (anzi, indispensabile) sapere il linguaggio di programmazione che usi e possibilmente anche vedere in che modo fai l'interrogazione...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    11
    E' vero...scusa...utilizzo il c e l'assembler.

    Ho un timer che scade ogni secondo e richiama questo metodo:

    void Read_I2cRTC(void)
    {
    unsigned char i = 0x000;

    I2c_Init();
    I2c_Start();
    TxByte_I2c(_i2cRTCWRITE);
    TxByte_I2c(_i2cRTCWRIN);
    I2c_Restart();
    TxByte_I2c(_i2cRTCREAD);
    for (i = 0x000; i < 0x010; i ++)
    {
    BUF_RTC[i] = RxByte_I2c();
    I2c_Ack();
    }

    I2c_Stop();
    }


    Questo è il codice relativo hai medoti che chiamo:

    I2c_Init:
    bsf TRISD,5,0 ;SDA serial data
    bsf TRISD,6,0 ;SCL serial clock
    bsf PORTD,5,0
    bsf PORTD,6,0
    bcf SSP2STAT,CKE ;status register CKE bit6 Disnable SMBus specific inputs
    return

    I2c_Start:
    bsf SSP2CON2,SEN ;control register
    btfsc SSP2CON2,SEN ;SEN: Start Condition Enable bit(
    bra $ - 002H
    return

    I2c_Restart:
    bsf SSP2CON2,RSEN ;Repeated Start Condition Enable bit(
    btfsc SSP2CON2,RSEN
    bra $ - 002H
    return

    I2c_Stop:
    bsf SSP2CON2,PEN ;Stop Condition Enable bit
    btfsc SSP2CON2,PEN
    bra $ - 002H
    return

    I2c_Ack:
    bcf SSP2CON2,ACKDT ;Acknowledge Data bit
    bsf SSP2CON2,ACKEN ;Acknowledge Sequence Enable bit
    btfsc SSP2CON2,ACKEN
    bra $ - 002H
    return

    TxByte_I2c:
    movf POSTDEC1,W,A
    movff POSTDEC1,SSP2BUF
    btfsc SSP2STAT,BF,A
    bra $ - 002H
    btfsc SSP2STAT,R_W,A
    bra $ - 002H
    btfsc SSP2CON2,ACKSTAT
    nop
    movf POSTINC1,W,A
    movf POSTINC1,W,A
    return

    RxByte_I2c:
    bsf SSP2CON2,RCEN
    btfsc SSP2CON2,RCEN
    bra $ - 002H
    movf SSP2BUF,W,A ;Buffer register
    btfsc SSP2STAT,BF,A
    bra $ - 002H
    return


    Se serve altro chiedi pure

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Guarda, non ho esperienza diretta con quel device, ma che io ricordi dal datasheet, dovrebbe ammettere errori dell'ordine di 1s/giorno o, in certe condizioni, 1s/settimana.

    Il fatto di avere dei ritardi a causa della lettura lo escluderei.

    Secondo me hai dei problemi sulla precisione del clock (problemi di deriva termica e/o di disturbi sovrapposti).

    Non ho idea del circuito elettrico che hai adottato e di come l'hai costruito praticamente, ma fossi in te, porrei piu' attenzione al filtraggio dei disturbi e al miglioramento del clock.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.