Problème PCF8583
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 37

Problème PCF8583



  1. #1
    invitef7281f10

    Problème PCF8583


    ------

    Bonjour

    J'ai écrit un programme en assembleur pour l'affichage de l'heure à partir d'un PCF8583 . Mais tout ce que j'obtiens c'est "FF:FF".

    Voici le code du PCF8583:
    ;============================= ============================== =====
    ; initialiser PCF
    PCF_INIT
    call I2CStart
    movlw Wr_TIMER ; adresse d'écriture PCF
    call I2CSendByte
    call I2CWaitAck

    movlw 0x00 ; registre 0 : config
    call I2CSendByte ; pointer sur registre 0
    call I2CWaitAck
    movlw B'00000000' ; signaler alarmes hors service
    call I2CSendByte ; dans registre configuration
    call I2CWaitAck

    call I2CStop ; fin d'écriture

    return


    ;============================= =============; Lecture des minutes et des heures dans le PCF8583
    ReadHeure_minutes
    call I2CStart ; bit de START
    call Wait_04
    movlw Wr_TIMER ; PCF8583 en écriture
    call I2CSendByte
    call I2CWaitAck ; Attente d'un ACKnowledge

    movlw 03h ; word address des minutes
    call I2CSendByte
    call I2CWaitAck

    call I2CStartLoad ; Start spécial lecture
    movlw Rd_TIMER ; TIMER en lecture
    call I2CSendByte
    call I2CWaitAck ; Attente d'un ACKnowledge

    call I2CReceiveByte ; reception minutes
    movf I2C_Receive,w
    movwf minutes
    call I2CSendAck ; envoyer ACK

    call I2CReceiveByte ; reception Heure
    movf I2C_Receive,w
    movwf Heure
    call Wait_10 ; tempo de 10\'b5s car pas d'ACKnowledge
    call I2CStop ; bit de STOP
    return


    ;============================= ============================== ==============================

    J'ai besoin de votre aide

    -----

  2. #2
    invitef7281f10

    Re : Problème PCF8583

    Je travaille avec un PIC16F877 .
    A savoir que j'ai fais le test de LCD ainsi que de la conversion BCD-> hexa et ça marche très bien.
    Donc le problème est apparemment dans le code du PCF8583

  3. #3
    invitef7281f10

    Re : Problème PCF8583

    voici le schèma de ma carte.
    merci de m'avoir lu
    Images attachées Images attachées  

  4. #4
    invitef7281f10

    Re : Problème PCF8583

    Bonsoir
    Me voila encore
    Après visualisation des signaux SDA et SCL , j'ai constaté qu'ils sont constamment à 1. Peut être le problème est dans l'alimentation du PCF8583. En fait les pin VDD et VSS sont "hiden pins", je les ai lié respectivement à VCC et GND.
    je sais pas si c'est le bon branchement ou pas!!
    Merci

  5. A voir en vidéo sur Futura
  6. #5
    invite7a49d0d5

    Cool Re : Problème PCF8583

    Bonjour,

    >Après visualisation des signaux SDA et SCL , j'ai constaté qu'ils sont constamment à 1.
    enlèves le PCF pour tester... les signaux doivent changer... si non, ben c'est le code...

    >Donc le problème est apparemment dans le code du PCF8583
    je pense... moi j'aime mettre une petite led sur un port pour "visualiser"
    que le PCF à bien envoyé le premier ack... delà on sait qu'il est bien "là"...
    et on peut continuer à coder...

    vede
    ;O]
    ______________________
    ...

  7. #6
    invite7a49d0d5

    Cool Re : Problème PCF8583

    ps :

    et il manque plus de la moitié du code (init_pic, I2CStart, I2CSendByte, I2CWaitAck ...)...
    envoyes tout pour plus d'aides... entre des balises "codes" pour plus de lisibilité...

  8. #7
    invitef7281f10

    Re : Problème PCF8583

    Bonjour
    Effectivement c'est ça , j'ai visualisé les signaux SDA et SCL et je n'obtiens qu'un état haut.
    Bon voilà le code du protocole I2C.
    Merci encore
    Code:
    ;=============================================================== 
    I2CStartLoad
        	bsf	PORTC,4
            call	Wait_04
            bsf	PORTC,3	; préparation pour bit de start
            call	Wait_04
          
            return 
    I2CStart
                call Wait_06 
                bcf PORTC,4 
                call Wait_06
                bcf PORTC,3 
                call Wait_04
            
                return 
    
    ;=============================================================== 
    ; Fonction envoyant un bit de STOP \par
    I2CStop
               bcf PORTC,4 ;préparation pour bit de stop
               call Wait_06 
               bsf PORTC,3 
               call Wait_06 
               bsf PORTC,4 
               call Wait_04 
     
               return 
    ;=============================================================== 
    ; Fonction qui attend l'acquittement du PCF8583
    I2CWaitAck
              BSF PORTC,4
              movlw 10h 
               SDA_entre ; mise de SDA en lecture 
              call Wait_04 
              bsf PORTC,3; impulsion d'horloge 
              call Wait_04 
    bcl_ack 
              btfsc PORTC,4
              goto bcl_ack ; recommence si SDA=1 
              bcf PORTC,3
              call Wait_04 
    Fin_ack 
             movlw 0 
            SDA_sortie ; mise de SDA en écriture
             call Wait_04 
         
             return 
    ;=============================================================== 
    ; Fonction qui envoie l'acquittement vers PCF8583
    I2CSendAck 
              bcf PORTC,4
              call Wait_04
              bsf PORTC,3; impulsion d'horloge 
              call Wait_04 
              bcf PORTC,3
              call Wait_04 
        
              return 
    ;===============================================================
    ; Fonction qui envoie un octet sur le bus I2C pour PCF8583
    ; W doit contenir la donnée à envoyer 
    I2CSendByte 
              movwf I2C_Send 
              movlw 8 
              movwf Var1 ; compteur de bits
    bcl_env 
              rlf I2C_Send , f
              btfss STATUS,C
              goto C0_env ; si Carry=0
    C1_env 
              nop ; si Carry=1 
              bsf PORTC,4
              goto st_env
    C0_env 
              bcf PORTC,4
              goto st_env 
    st_env 
              bsf PORTC,3; impulsion d'horloge 
              call Wait_04 
              bcf PORTC,3
              decfsz Var1 , f
              goto bcl_env
              rlf I2C_Send , f ; repositionnement du buffer I2C 
              bsf PORTC,4; préparation de l'ACKownledge 
            
              return 
    ;=============================================================== 
    ;Fonction qui re\'e7oit un octet venant de PCF8583
    I2CReceiveByte 
             movlw 10h 
             SDA_entre; mise de SDA en lecture 
             clrf I2C_Receive
             movlw 8 
             movwf Var1 ; compteur de bits 
    bcl_rcp
             call Wait_04 
             bsf PORTC,4; impulsion d'horloge 
             call Wait_04 
             btfss PORTC,4
             goto SD0_rcp ; si SDA=0 
    SD1_rcp 
             nop ; si SDA=1 
             bsf STATUS,C 
             goto st_rcp 
    SD0_rcp 
             bcf STATUS,C 
             goto st_rcp 
    st_rcp 
            bcf PORTC,3      
            rlf I2C_Receive , f
            decfsz Var1 , f
            goto bcl_rcp 
            movlw 0 
            SDA_sortie; mise de SDA en écriture              
            call Wait_04 
         
            return

  9. #8
    invitef7281f10

    Re : Problème PCF8583

    Le PORTC,4 => SDA , le PORTC,3 => SCL
    Merci vede

  10. #9
    invite7a49d0d5

    Cool Re : Problème PCF8583

    Bonsoir,
    Citation Envoyé par aimima Voir le message
    Bonjour
    Effectivement c'est ça , j'ai visualisé les signaux SDA et SCL et je n'obtiens qu'un état haut.
    ça veut dire que ton programme n'arrive jamais à I2CStart...
    mais vu qu' il manque encore une bonne partie du code
    (fusibles, pic, ports, "main",... ) je ne peux t'en dire plus...

    vede
    ;O]
    _____________
    ...

  11. #10
    invitef7281f10

    Re : Problème PCF8583

    bonjour
    Si quelqu'un de vous a déjà travaillé avec un PCF8583 ça sera gentil de sa part de me communiquer son programme. En fait, j'ai essayé toutes les solutions mais rien ne marche .
    J'ai besoin de votre aide

  12. #11
    invitef7281f10

    Re : Problème PCF8583

    voilà le code d'initialisatin des ports
    Code:
    ; initialisation PORTS (banque 0 et 1)
    ; ------------------------------------
    
    PORT_INIT 
               BANK0
               CLRF PORTA ; Initialise le port A
               CLRF PORTB ; Initialise le port B
    
              CLRF PORTC ; Initialise le port C
    
              CLRF PORTD ; Initialise le port D
    
              CLRF PORTE ; Initialise le port E
    
             ; BSF STATUS, RP0 ; Bank 1 sélectionnée
              BANK1 
              MOVLW 0xC0 ; Port RC7-RC6 en entrée RC5-RC0 en sortie
              MOVWF TRISC;
              MOVLW 0x0 ; Port RD7-RD0 en sortie
    
              MOVWF TRISD ;
    
              MOVLW 0x7 ; Port RE2-RE0 en entrée
              MOVWF TRISE
    
              BCF  STATUS,RP0 ; Bank 0 sélectionnée
              return
    
    ;================================================================

  13. #12
    invitef7281f10

    Re : Problème PCF8583

    voici le main
    Code:
    main
              call PORT_INIT 
              call I2C_INIT
              call LCD_INIT
              call PCF_INIT 
              call ReadHeure_minutes 
              movf	Heure,w
              call	PutHex		; affiche heure
              movlw	":"
              call	LCD_sendRS
                 
             
               movf	minutes,w
               call	PutHex

  14. #13
    invite7a49d0d5

    Cool Re : Problème PCF8583

    re ;O]

    ben je comprends pas...
    car dans le I2CStart le code met bien les ports SDA et SCL @ 0...

  15. #14
    invitef7281f10

    Re : Problème PCF8583

    En fait dans l'initialisation de l'I2C "I2C_INIT" le SDA et SCL sont à 1, après on a dans "I2C_START" le SDA passe à 0 et le SCL le suit avec un retard.
    Merci vede pour ton soutien

  16. #15
    invite7a49d0d5

    Cool Re : Problème PCF8583

    re ;O]

    oui c'est exactement ça... c'est une "condition" de START I2C...
    peut-être envoyes TOUT le code d'une traite...
    ça sera plus clair à décrypter...

  17. #16
    invitef7281f10

    Re : Problème PCF8583

    En fait le code est trop long et j'ai pas pu l'envoyer.
    Mais je l'ai testé et ça marche , en plus il fait appel à d'autres périphériques (RS232, LCD, Bouttons) .
    Je vois pas où est le problème, mais c'est sûrement dans le I2C.

  18. #17
    invite7a49d0d5

    Cool Re : Problème PCF8583

    rere ;O]

    ça n'a rien à voir avec ton problème...
    mais après dans ton code je vois que
    pour tester le ack tu mets SDA en entrée...
    ya pas besoin...

    un petit code MikroBasic de mon cru,
    qui allume la led seulement si ack reçu
    (testé avec divers composants I2C en changeant l'adresse)
    Code:
    program IIC_TESTER
    '
    symbol SCL = PortA.0  
    symbol SDA = PortA.1
    '
    symbol LED = PortB.6
    '
    dim i, adresse as byte    
    '
    main:   ' init. le pic            
            ANSEL  = %00000000   ' désactive ADC sur un 16F88
            TRISA  = %00000000   ' met tous les ports en sorties
            TRISB  = %00000000   ' met tous les ports en sorties    
            LED    = 0           ' éteind la led
            ' iic start
            SCL = 1
            SDA = 1
            DELAY_US(5)
            SDA = 0
            DELAY_US(5)
            SCL = 0
            ' iic adresse composant
            adresse = %10100000  ' ici une 24LCxxx     
            for i = 1 to 8       ' envoye les 8 bits...
                  SDA = adresse.7    
                  adresse = adresse << 1
                  DELAY_US(5)        
                  SCL = 1
                  DELAY_US(5)
                  SCL = 0    
            next i
            SDA = 1
            DELAY_US(5)
            SCL = 1                        ' si ack reçu allume la led...
            if SDA = 0 then LED = 1 end if   ' et SDA est toujours en sortie...
    end.
    .

  19. #18
    invitef7281f10

    Re : Problème PCF8583

    Même après avoir enlever SDA_entre et SDA_sortie je n'obtiens que 00:00.
    Bon au moins je vois pas que des F ^^

  20. #19
    invitef7281f10

    Re : Problème PCF8583

    Vous croyer que j'ai mal configuré le PCF ? en fait je l'ai initialisé en mettant tout les bits du registre STATUS CONTROL à 0.

  21. #20
    invite7a49d0d5

    Cool Re : Problème PCF8583

    pour le ack on verra après...

    tu as bien entré l'adresse du PCF? je me rappelle pas l'avoir vue...

    enfin sans ça, car en fait ton problème n'a encore rien à voir avec ça (2 lignes ci-dessus)...

    I2C ou pas, PCF ou pas, quand dans I2CStart :

    bcf PORTC,4
    call Wait_06
    bcf PORTC,3

    les 2 ports doivent "passer" à 0...
    après on verra le ack, l'adresse...

    .

  22. #21
    invitef7281f10

    Re : Problème PCF8583

    si j'ai entré l'adresse du PCF
    "Wr_TIMER equ B'10100000' ; Horloge PCF8583 en écriture

    Rd_TIMER equ B'10100001' ; Horloge PCF8583 en lecture"

    J'ai visualisé les signaux SDA et SCL , il y a jamais passage à 0

  23. #22
    invite7a49d0d5

    Cool Re : Problème PCF8583

    Citation Envoyé par aimima Voir le message
    (...)
    J'ai visualisé les signaux SDA et SCL , il y a jamais passage à 0
    le problème est là...

  24. #23
    invitef7281f10

    Re : Problème PCF8583

    mais quand j'ai mis dans le main
    call I2C_INIT
    call I2C_start
    le SDA et le SCL passent de 1 à 0

  25. #24
    invite7a49d0d5

    Re : Problème PCF8583

    Citation Envoyé par aimima Voir le message
    mais quand j'ai mis dans le main
    call I2C_INIT
    call I2C_start
    le SDA et le SCL passent de 1 à 0
    ok, donc dans ton code faut remplacer tes ligne I2CStart par I2C_start
    (sans le _) ... et oui... c'est tune fote dortografe pour le compilo ;O]

    ou remplacer le nom du bloc...
    voir si erreurs similaires (_) sur d'autres (I2CStop,...) ...

  26. #25
    invitef7281f10

    Re : Problème PCF8583

    non je me suis trompée
    même on mettant juste BSF SDA et après BCF SDA ça ne marche pas

  27. #26
    invitef7281f10

    Re : Problème PCF8583

    J'ai l'impression qu'on ne peut pas forcer les lignes SDA et SCL à un état bas.
    J'ai lu cela quelque part
    Peut être dans le cours de Bigonoff

  28. #27
    invite7a49d0d5

    Cool Re : Problème PCF8583

    Citation Envoyé par aimima Voir le message
    non je me suis trompée
    même on mettant juste BSF SDA et après BCF SDA ça ne marche pas
    ya quand même on dirait un bug avec le _ ?
    sinon fait un petit programme très simple...
    juste pour tester les ports... avec des leds...
    car c'est très bizarre... c'est en simu?

  29. #28
    invite7a49d0d5

    Cool Re : Problème PCF8583

    Citation Envoyé par aimima Voir le message
    J'ai l'impression qu'on ne peut pas forcer les lignes SDA et SCL à un état bas.
    J'ai lu cela quelque part
    Peut être dans le cours de Bigonoff
    en neffet, il faut les "forcer" au niveau haut,
    avec sur chaque "ligne" une résistance de pull-up...
    comme sur ton schéma...

    après on les "force" @ 0 logiciellement (I2CStart)...
    obligé pour envoyer des bits...

  30. #29
    invitef7281f10

    Re : Problème PCF8583

    wi c'est bizarre et cela me rend dingue, j'ai tout essayer mais sans aucun résultat.
    Je veux bien vous envoyer le schèma sous ISIS comma ça vous pouvez le simuler et voir le résultat
    mais apparemment je ne peux joindre les fichier d'extention . DNS

  31. #30
    invitef7281f10

    Re : Problème PCF8583

    voilà un passage de la PART2 du cours de Bigonoff
    "Chaque circuit peut forcer la ligne SCL ou SDA à 0, mais aucun circuit ne peut la forcer à l’état haut. Elle repassera à l’état haut via les résistances de rappel (pull-up) si tous les circuits connectés ont libéré la ligne."

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. urgent svp PCF8583
    Par invitef24949cf dans le forum Électronique
    Réponses: 0
    Dernier message: 02/05/2010, 12h06
  2. PCF8583 help please
    Par invite0490cd3a dans le forum Électronique
    Réponses: 23
    Dernier message: 07/10/2009, 13h22
  3. Horloge temps PCF8583
    Par invite3de9f323 dans le forum Électronique
    Réponses: 3
    Dernier message: 12/03/2009, 18h38
  4. initialisation du PCF8583
    Par invite28559ad9 dans le forum Électronique
    Réponses: 3
    Dernier message: 23/12/2008, 21h44
  5. programmation en c pcf8583
    Par invitecec8a619 dans le forum Électronique
    Réponses: 0
    Dernier message: 10/03/2008, 17h19
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...