programme pwm avec rapport cyclique variable
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

programme pwm avec rapport cyclique variable



  1. #1
    invitedcb4caf0

    programme pwm avec rapport cyclique variable


    ------

    Bonjour tout le monde, je dois faire un programme qui génère un pwm avec rapport cyclique variable. j'ai fait ce programme qui s'execute mais j'ai rien comma signal sur CCCP2 de pic 18F4550 pouvez vous vous me dire pourquoi ne fonctionne pas.
    //INCLUDES
    #include "p18f4550.h"
    #include "stdio.h"
    //Configuration Bits
    #pragma const config FCMENB = OFF //Fail Safe Clock Monitor Disabled
    #pragma const config IESOB = OFF //Internal External Osc. Switch Disabled
    #pragma config PWRT = OFF //Power Up Timer Disabled
    #pragma const config BOR = BOHW //Brown Out Reset Enabled in HW, SBOREN disabled
    #pragma const config BORV = 20 //Brown Out Voltage : 2.0V
    #pragma config WDT = OFF //WATCHDOG HW Disabled - SW Controlled
    #pragma config DEBUG = OFF //DEBUG Disabled
    #pragma config LVP = OFF //Low Voltage Programming Disabled // Debug off
    #define _POT1 RA2
    unsigned int Result;
    //MAIN
    void main(void){
    unsigned int duty;
    unsigned long U;
    void init();
    while(1){
    //********************ACQUISITIO N potar*************************
    ADCON0bits.CHS0=1;ADCON0bits.C HS1=0; ADCON0bits.CHS2=0;ADCON0bits.C HS3=0; // AN1
    ADCON0bits.GO_DONE=1;
    while(ADCON0bits.GO_DONE==1) // Attente de la fin de conversion
    {
    }
    Result=ADRESL+(ADRESH) ;
    U=(long)(Result)*5;
    U=U/1023;
    duty=Result;
    if(duty>243)
    {
    duty=243;
    }
    if(duty<13)
    {
    duty=13;
    }
    duty=CCPR1L;
    }
    }

    void init(void)
    {
    PORTA = 255;
    TRISA = 0b00001111; //PORTA en tant que sortie, AN0 à AN3 en entrée
    PORTB = 0b00000000; // Initialisation du PORTB
    PORTC = 0b00000000; // Initialisation du PORTC
    TRISC = 0b00000000; //PORTC en tant que sortie
    PORTE = 0b00000000;
    PORTD = 0b00000000;
    //TMR2
    T2CONbits.TMR2ON=1;
    //prescaler 1
    T2CONbits.T2CKPS1=0;
    T2CONbits.T2CKPS0=0;
    //postscaler 1/16
    T2CONbits.TOUTPS0=1;
    T2CONbits.TOUTPS1=1;
    T2CONbits.TOUTPS2=1;
    T2CONbits.TOUTPS3=1;
    PR2=0xFF;
    //PWM
    CCP1CON=0b10010111;
    //Aquisition analogique
    ADCON2bits.ADFM=1;
    ADCON1bits.VCFG=0;
    ADCON2bits.ADCS2=0;ADCON2bits. ADCS1=1;ADCON2bits.ADCS2=0;
    ADCON0bits.ADON=1;
    }

    -----

  2. #2
    monsieur_rouge

    Re : programme pwm avec rapport cyclique variable

    Bonjour,
    deja, il ne me semble pas voir apparaitre les bits de configuration de l'oscillateur (quartz interne, externe ? quelle frequence ? pll activer ou non ?)
    Ensuite, même si je n'ai vérifier aucun registres, et que j'ai lu le code trés rapidement, à aucun moment tu renseigne CCPR1L. Tu copie la valeur de CCPR1L dans duty, alors que je pense que c'est l'inverse que tu dois faire.
    donc remplace ça :
    duty=CCPR1L;
    par ça
    CCPR1L=duty;
    Ensuite debug au fur et à mesure.
    Envoi d'abord une valeur fixe directement sur ta pwm pour éviter de cumuler les problèmes que tu pourrais avoir avec ton convertisseur analogique digital. si ta sortie correspond bien à la valeur fixé (exemple rapport cyclique de 50% pour CCPR1L=127) c'est que ton code qui gère la pwm fonctionne. Ensuite debug l'ADC.

    Bon courage!

  3. #3
    invitedcb4caf0

    Re : programme pwm avec rapport cyclique variable

    j'ai ajouté #pragma config FOSC = HSPLL_HS et fixer CCPR1L=127 mais j'ai tjrs rien à la sortie de pic

  4. #4
    jojo150393

    Re : programme pwm avec rapport cyclique variable

    salut!
    tu brûles les étapes. Commence par effectuer en premier la pwm. Puis une fois que tu à réussi, utilise ton convertisseur pour afficher un nombre sur des led. Et ensuite tu rassembles les deux.

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

    Re : programme pwm avec rapport cyclique variable

    Salut,
    Ouaip je penses aussi que c'est ce qu'il faut faire.

    Et surtout, lis la datasheet! parce qu'en la survolant , CCP1CON=0b10010111; ne correspond pas du tout à une sortie PWM mais plutôt à une capture tout les 16 fronts montants ! ça ne risque pas de marcher.

    Bonne lecture!

  7. #6
    invite03481543

    Re : programme pwm avec rapport cyclique variable

    Bonjour,

    ça sert à quoi que HULK se décarcasse?:

    http://forums.futura-sciences.com/pr...a-pic-led.html

Discussions similaires

  1. rapport cyclique pwm 18F2550
    Par imed4ever dans le forum Électronique
    Réponses: 0
    Dernier message: 02/04/2012, 22h25
  2. L6203 Vitesse/Rapport Cyclique PWM
    Par sani300 dans le forum Électronique
    Réponses: 10
    Dernier message: 11/08/2011, 21h33
  3. augmenter rapport cyclique PWM avec un Monostable
    Par invite8e55263e dans le forum Électronique
    Réponses: 6
    Dernier message: 21/01/2010, 14h38
  4. astable à rapport cyclique variable
    Par invite3aa442df dans le forum Électronique
    Réponses: 11
    Dernier message: 01/07/2008, 10h55
  5. Oscillateur NE 555 rapport cyclique variable.
    Par invitea250c65c dans le forum Électronique
    Réponses: 12
    Dernier message: 12/07/2006, 16h32
Découvrez nos comparatifs produits sur l'informatique et les technologies.