IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MPLAB Discussion :

PIC 32 et Signal PWM


Sujet :

MPLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut PIC 32 et Signal PWM
    Bonjour tout le monde,

    Je suis actuellement sur la programmation d'un PIC32MX795F512L.

    Mon projet comporte un écran LCD et j'aimerais pouvoir piloter le contraste de ce dernier à l'aide d'un signal PWM. J'ai donc la broche V0 (broche n°3) de mon écran connecté à la broche 77 de mon PIC (OC3/RD2).

    Tout l'intérêt de cette broche est l'OC3 (Output Compare) qui permet théoriquement de générer un signal PWM.

    Je n'ai jamais utilisé de signal PWM, j'ai donc consulté la DOC de mon PIC, c'est assez bien détaillé et j'ai même trouvé un exemple de code que j'ai modelé à ma façon.

    Le voici :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    void main(){
        Init_Ports();
        INTCONSET = _INTCON_MVEC_MASK;    /* Set the interrupt controller for multi-vector mode */
        __builtin_enable_interrupts();    /* Set the CP0 Status IE bit to turn on interrupts globally */
        Init_Display();
        init_PWM_timer();
        envoyer_chaine("Hello World");
        while(1);
     
    }
     
    void init_PWM_timer(){
        OC3CON = 0x0000; // Turn off the OC1 when performing the setup
        OC3R = 0xFFFF; // Initialize primary Compare register
        OC3RS = 0x0000; // Initialize secondary Compare register
        OC3CON = 0x0008; // Configure for PWM mode without Fault pin enabled
        PR3 = 0xFFFF; // Set period
     
        // Timer 3 Config
     
      IPC3bits.T3IP=7;  //Priority
      IFS0bits.T3IF=0;
      IEC0bits.T3IE=1;  //T1_Enable
      T3CON=(0x8000);
      OC3CON=(0x800E);
     
    }
     
    void __ISR(_TIMER_3_VECTOR, ipl7) T3_IntHandler (void)
    {
    // Insert user code here
        IFS0bits.T3IF=0;
    }

    Les fonctions Init_Display, Init_Ports et envoyer_chaine, sont d'autres fonction de mon programme que je n'ai pas collé ici.
    Elles permettent respectivement l'initialisation de l'afficheur, le remappage des ports de mon PIC et d'envoyer une chaine de caractères à l'afficheur.

    Tout d'abord, première surprise lors de l'exécution du programme, avec une observation à l'oscilloscope sur ma broche, je n'observe pas un signal PWM mais une tension analogique continue que je peux faire varier. Je me suis dis que c'était comme ça qu'opérait la broche .

    J'arrive donc bien à faire varier cette tension analogique en modifiant les valeurs de OC3R et OC3RS mais elle sont comprises entre 4V et 1.15V. Le problème c'est que le contraste reste très clair avec 1.15V et que j'aimerais donc descendre sous cette valeur ...

    Je compte donc sur la célèbre qualité des lecteurs de ce forum et vous remercie d'avance.

    Amicalement,

    Aurel.

  2. #2
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    Salut,


    Regarde DS61111

    Tu as un exemple de code de PWM

    Pour la tension continue n'a tu pas une capa en sortie de t'on pin ? qui te lisserai ta tension pulsé
    Tu regardes avec un scop ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 35
    Points : 50
    Points
    50
    Par défaut
    Salut,
    Je n'ai pas vu d'initialisation du processeur...
    Il y a pas mal de registres à initialiser pour le PIC32MX795F512L fonctionne à performance nominale.
    Le plus simple pour cela c'est sans doute de chercher un exemple de code qui montre comment faire en utilisant les Legacy PLIB.
    http://www.microchip.com/mplab/compilers (sous l'onglet downloads).
    La macro magique est expliquée ici : http://www.microchip.com/forums/m404723-p2.aspx
    Regards

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Pour générer un signal PWM sur PIC, il te faut paramétrer la base de temps de ton oscillateur (quelque MHz), puis choisir la fréquence de travail (je te conseille du ~4kHz c'est plus simple à lissé avec un condensateur, et c'est un standard industrielle), et un port PWM à paramétrer sur la fréquence de travail (regarde dans la doc tout y est).

    Ensuite n'oublie pas le condensateur de lissage (quelque centaines de nF suffise amplement).

    Voila avec cela tu devrait pouvoir choisir la tension de sortie, et donc ton signal PWM

Discussions similaires

  1. [L.V.9] signal PWM
    Par projetelec dans le forum LabVIEW
    Réponses: 4
    Dernier message: 17/06/2011, 16h21
  2. Signal PWM sous simulink
    Par prince013 dans le forum Signal
    Réponses: 0
    Dernier message: 06/12/2009, 15h27
  3. detection de pics dans un signal audio
    Par sliders_alpha dans le forum Traitement du signal
    Réponses: 22
    Dernier message: 04/02/2009, 00h32
  4. Relevé de pics d'un signal
    Par Nicky.Larson dans le forum Signal
    Réponses: 2
    Dernier message: 05/10/2007, 17h24
  5. Simuler un signal PWM
    Par jeannot27 dans le forum C++Builder
    Réponses: 12
    Dernier message: 27/01/2006, 04h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo