Conflit CCP1 & CCP2 en mode Compare
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Conflit CCP1 & CCP2 en mode Compare



  1. #1
    invite03481543

    Conflit CCP1 & CCP2 en mode Compare


    ------

    Salut,

    Est-ce que quelqu'un a déjà utilisé le mode compare avec un PIC et avec le même timer1?

    Dans mon appli, j'utilise un seul timer (Timer1 16 bits) et je stocke dans les CCPRx la consigne respective de chaque temps que je veux obtenir sur 2 I/O.

    Voici le code:

    static void interrupt inter(void) // Gestion du timer1 en mode compare

    {
    if (TMR1IF)
    {
    RC6=1 ;
    RC7=1 ;
    TMR1H=0xEC ;
    TMR1L=0x77 ;
    TMR1IF=0 ;
    }
    if (CCP1IF)
    {
    RC6=0 ;
    CCP1IF=0 ;
    }
    if (CCP2IF)
    {
    RC7=0 ;
    CCP2IF=0 ;
    }
    }

    void Init_compare (void)
    {
    {
    TMR1H = 0xEC ; //on fixe la fréquence 65535-20000µs/4µs = 0xEC77
    TMR1L = 0x77 ;
    CCP1CON = 0b00001010 ;
    CCP2CON = 0b00001010 ;
    T1CON = 0b00100001 ; //Prescaler=1:4 Timer1=on
    }
    }

    void Config_rapport_cycliqueV(unsig ned char)
    {


    unsigned int Val1_tmp ;
    Val1_tmp = (139*Vpos)/100 ;
    Val1_tmp += 60785 ;

    CCPR1L = Val1_tmp ;
    CCPR1H = Val1_tmp >> 8 ;


    }


    void Config_rapport_cycliqueH(unsig ned char)
    {


    unsigned int Val2_tmp ;
    Val2_tmp = (139*Hpos)/100 ;
    Val2_tmp += 60785 ;

    CCPR2L = Val2_tmp ;
    CCPR2H = Val2_tmp >> 8 ;


    }

    Tout va bien tant que les consigne dans CCPRx sont différentes par contre il y a conflit lorsque les interruptions (CCP1IE & CCP2IE) se télescopent.
    J'ai vérifié dans les datasheets que ce mode est déconseillé, mais joueur que je suis je pense que l'on peut gérer ce conflit sans casse.
    Donc peut-être que quelqu'un a une idée à me soumettre, pendant ce temps je cherche...

    -----

  2. #2
    invite03481543

    Re : Conflit CCP1 & CCP2 en mode Compare

    Alors les artistes, pas d'idée?

  3. #3
    freepicbasic

    Re : Conflit CCP1 & CCP2 en mode Compare

    je viens seulement de voir le post...
    Je conseillerais de regrouper les 2 Int sous la meme proc et de faire un Test direct sur les pins afin de déterminer celle ou celles qui sont activées.
    A+, pat

  4. #4
    invite03481543

    Re : Conflit CCP1 & CCP2 en mode Compare

    Oui il y a un peu de ça, mais en fait le principe est un peu plus complexe.
    Les pics ne disposent pas à proprement parlé d'une gestion organisée par priorité des interruptions dans le mode compare (et autre d'ailleurs) ce qui est une lacune je trouve.
    Il faut, par soft, faire cette gestion tout en perdant l'évènement qui survient durant le traitement de l'interruption précédente et donc l'usage de CCP1 et CCP2 simultanément est impossible de manière fiable dans ce mode de fonctionnement.
    J'ai solutionné mon problème par un usage différent du mode compare et je le présenterai dès que possible pour vous faire partager cette solution imparable dans la rubrique "projet" et que vous pourrez porter dans vos applications à évènements multiples.
    @+

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Rendement comparé diesel / essence.
    Par invitef470fdd0 dans le forum Physique
    Réponses: 76
    Dernier message: 21/08/2013, 13h50
  2. PIC24FJ128 & Sleep mode
    Par bouly94 dans le forum Électronique
    Réponses: 6
    Dernier message: 27/09/2007, 23h22
  3. Prix comparé des moteurs électriques
    Par Jean.Marc dans le forum Technologies
    Réponses: 0
    Dernier message: 11/03/2007, 18h08
Découvrez nos comparatifs produits sur l'informatique et les technologies.