Période PWM PIC16F877A
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Période PWM PIC16F877A



  1. #1
    DangerousMic

    Période PWM PIC16F877A


    ------

    Bonjour,

    J'ai un petit problème avec le PWM du pic16f877a. j'ai besoins de contrôler un servomoteur à rotation continu et pour cela avec une période de 21.5ms (a peut prêt... la période va varier si je veux faire tourner le moteur dans un sens ou l'autre).

    Or, la documentation me précise ce calcul : PWM Period = [(PR2) + 1] • 4 • TOSC • (TMR2 Prescale Value).

    J'utilise un quartz 16MHz. J'ai donc un Tosc = 1/16000000 et pour TMR2 Prescale j'ai mis 16 (je peux pas plus).

    Le problème et que si je décide de mettre la période maximum soit PR2=0xFF, j'obtiens une fréquence de 1.022ms. Je suis loin des 21.5ms donc est ce possible d'augmenter la pérode sans changer le quartz ou dois-je créer une boucle moi même pour simuler un PWM ?

    Merci d'avance.

    -----

  2. #2
    extremgear

    Re : Période PWM PIC16F877A

    il ne faut pas utiliser le mode pwm mais le mode compare du module CCP , avec le timer 1 qui est en 16 bits .

  3. #3
    RISC

    Re : Période PWM PIC16F877A

    Salut,

    Lis bien la datasheet et regardes le tableau page 68 et tu verras les valeurs max atteignables.
    Comme l'a mentionné extremgear tu devrais pouvoir y arriver en utilisant le TIMER1 en mode compare.
    Tu peux aussi faire cela par soft (completement ou partiellement)

    Il y plein d'exmples sur internet : http://www.best-microcontroller-proj...interrupt.html

    a+
    Dernière modification par RISC ; 16/11/2014 à 12h07.

  4. #4
    DangerousMic

    Re : Période PWM PIC16F877A

    Je vous remercie, je travaille dessus.

    Mais avec ce code ma broche CCP reste a 0 ou 1 selon comment je configure CCPCON

    Code:
    int main(int argc, char** argv) {
    
    
    
    //**************************** CONFIGURATION PWM *************************
    
    TRISC = 0;
    PORTC = 0;
    
    CCP1CON = 0x08;     //Active le Compare Mode
    CCPR1H = 0xC3;
    CCPR1L = 0x52;
    
    T1CON = 0x01;       // Active le TIMER1
    
    
    
    //Boucle Infini
        while(1)
        {
    
    
        **
        return (EXIT_SUCCESS);
    J'ai tenté de configurer TMR1H et TMR1L avec plusieurs valeurs mais j'ai aucune comparaison ou plutot j'ai TOUJOURS une comparaison car si je met CCP1CON = 0x08; Il me met la broche a 1.

    Vous savez pourquoi ?

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Periode radioactive et période ?
    Par invite5dcd7bce dans le forum Physique
    Réponses: 2
    Dernier message: 20/10/2011, 15h23
  2. Pic16f877a!
    Par invite6ab74433 dans le forum Électronique
    Réponses: 0
    Dernier message: 24/05/2008, 17h34
  3. adc + pic16F877A+LCD
    Par invite412b515c dans le forum Électronique
    Réponses: 0
    Dernier message: 29/05/2007, 22h59
  4. Période de rotation = période de révolution
    Par invite2405ba88 dans le forum Archives
    Réponses: 3
    Dernier message: 04/02/2006, 16h20
  5. Pseudo période, période propre
    Par benjy_star dans le forum Physique
    Réponses: 5
    Dernier message: 12/05/2005, 16h43
Découvrez nos comparatifs produits sur l'informatique et les technologies.