PWM sur Pic18f452 en C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

PWM sur Pic18f452 en C



  1. #1
    invite2a7ab739

    PWM sur Pic18f452 en C


    ------

    Bonjour à tous!
    Je recherche des informations concernant la mise en oeuvre d'un signal PWM sur un Pic18f452, le tout étant programmé en C et non en assembleur.

    Jusqu'a présent j'ai trouvé beaucoup de chose (dont le cours part2 de Bigonoff ^^ ) mais tout est orienté assembleur.

    Donc pour commencer j'aimerai rentre actif le PWM sur le port C car je n'ai aucune idée de comment initialiser le pic pour faire ça.

    Merci de votre aide. A bientot. ^^

    -----

  2. #2
    RISC

    Re : PWM sur Pic18f452 en C

    Bonjour,

    La carte PICDEM 2 PLUS de Microchip est livrée avec le PIC18F452 (mais je crois que le soft fourni pour le téléchargement est en ASM) :
    http://www.microchip.com/stellent/id...&part=DM163022


    Regarde ici, ca devrait te plaire ;=) :
    http://www.picant.com/c2c/examples/p...lusDemo.c.html

    La page d'origine (cherche sous "PICDEM 2 PLUS" :
    http://www.picant.com/c2c/examples.html

    a+

  3. #3
    invitef3bd5ad5

    Re : PWM sur Pic18f452 en C

    Voici mon code, j'avais un post précédement. Fais attentions mon code c'est pour le 4431! ( peu de choses changent )

    #include <p18F4431.h>
    #include <stdio.h>
    #include <timers.h>
    #include <pwm.h>
    #include <delays.h>

    #pragma config OSC = HS
    #pragma config CP1 = OFF

    void Delay10mS(int x)
    {
    int i;
    for (i=0; i<x; i++) Delay10KTCYx(12);
    }

    void main (void)
    {
    int a;
    TRISB=0;

    OpenTimer2(T2_PS_1_16 & TIMER_INT_OFF);
    OpenPWM1(199);
    SetDCPWM1(640);

    while(1)
    {

    for(a=0;a<640; a=a+16)
    {
    SetDCPWM1(a);
    Delay10mS(4);
    }
    for(a=0;a<640; a=a+16)
    {
    SetDCPWM1(640-a);
    Delay10mS(4);
    }
    }
    }

  4. #4
    invite2a7ab739

    Re : PWM sur Pic18f452 en C

    Déja merci de vos réponses. Effectivement j'utilise la carte picdem 2 plus. Concernant le code je vais testé ça et je vous tiendrai au jus.

    En tout cas merci ça doit faire 2 semaines que je cherche sur le net et il vaut mieux 1 qui sait que 10 qui cherchent.


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

    Re : PWM sur Pic18f452 en C

    Bon, suite des évènements, voici le code:

    #include <p18f452.h>
    #include <stdio.h>
    #include <timers.h>
    #include <pwm.h>
    #include <delays.h>

    #pragma config OSC = HS
    #pragma config CP1 = OFF

    void Delay10mS(int x) //tempo x*10ms
    {
    int i;
    for (i=0; i<x; i++) Delay10KTCYx(12);
    }

    void main (void)
    {
    int a;
    TRISC=0;

    OpenTimer1(T2_PS_1_16 & TIMER_INT_OFF);//definition du prescale
    OpenPWM1(124);//periode du pwm = (PR2+1)*4*TOSC*prescale
    SetDCPWM1(250);//rapport cyclique --> 0% = 0; 100%= 799; 50% = 400

    while(1);


    Par contre un truc que je ne comprends pas:

    Si je tape le même code mais avec opentimer2, openpwm2 et setDCpwm2 (donc pour me servir du 2ème port pwm), les valeur que j'ai pour régler le rapport cyclique ne varie plus de 0 à 799 (avec 400 pour 50% de RC) mais de 0 à 499 (avec 250 pour 50% de RC).

    Si vous avez des réponses, merci ^^ .

  7. #6
    nanard

    Re : PWM sur Pic18f452 en C

    bonjour

    Je programme avec mikroC et lorsque je démarre un nouveau projt je doit configurer des registres du type "config CP1 = OFF".
    Je souhaiterais savoir où trouver un document qui donne la signification de toute ce config? A quoi sert CP1?
    merci @+

  8. #7
    inviteb6da8a8e

    Re : PWM sur Pic18f452 en C

    bonjour,

    pour répondre à Sunrise_777,

    tout depend de la configuration ( capture,compare, mode PWM) et pour le configurer tu dois changer la valeur de CCPxCON, x correspond au numero du registre.

    j'espere pouvoir repondre a ta question.

  9. #8
    invite7e553d28

    Re : PWM sur Pic18f452 en C

    Citation Envoyé par Sunrise_777 Voir le message
    OpenTimer1(T2_PS_1_16 & TIMER_INT_OFF);//definition du prescale
    OpenPWM1(124);//periode du pwm = (PR2+1)*4*TOSC*prescale
    SetDCPWM1(250);//rapport cyclique --> 0% = 0; 100%= 799; 50% = 400
    Bonjour,

    comment faites vous pour définir le rapport cyclique,

    d'où sort ce 100%=799 ??? je suppose qu'il y a une formule pour le duty cycle mais je ne la trouve pas ou alors cela ne fonctionne pas sur mon compilateur.

  10. #9
    invite7a49d0d5

    Cool Re : PWM sur Pic18f452 en C

    Citation Envoyé par nanard Voir le message
    bonjour

    Je programme avec mikroC et lorsque je démarre un nouveau projt je doit configurer des registres du type "config CP1 = OFF".
    Je souhaiterais savoir où trouver un document qui donne la signification de toute ce config? A quoi sert CP1?
    merci @+
    Bonsoir,

    la signification des bits de configuration d'un PIC se trouve
    dans sa datasheet, souvent dans la section
    "Special Features > Configuration Bits" ...

    vede
    ;O]

Discussions similaires

  1. Calcul PWM Period / PWM Duty Cycle
    Par inviteee104586 dans le forum Électronique
    Réponses: 14
    Dernier message: 02/12/2010, 21h34
  2. pwm sur pic
    Par invite3a1051d7 dans le forum Électronique
    Réponses: 5
    Dernier message: 07/12/2007, 00h31
  3. pwm sur pic
    Par invite820b5138 dans le forum Électronique
    Réponses: 3
    Dernier message: 28/04/2007, 20h07
  4. aide sur le PWM
    Par invitec9170ad2 dans le forum Électronique
    Réponses: 4
    Dernier message: 27/07/2006, 20h33
  5. Gradateur sur PWM
    Par invite3b551566 dans le forum Électronique
    Réponses: 9
    Dernier message: 10/01/2006, 15h13
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...