Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

PWM_ Entrée/Sortie



  1. #1
    ABN84

    Arrow PWM_ Entrée/Sortie


    ------

    Bonsoir,
    sur un dsPic, je voudrais implanter la fonction suivrante:
    sur le dsPic en question j'ai 7 I/O et 6 OutputCompares:
    selon l'etait du 7eme I/O:
    - si le 7eme I/O est au niveau bas (0V), je voudrais que les OC soient configurés en in/out logiques, et que les 6 I/O restants soient copiée sur les OC confogiées en IO.
    - si le 7eme I/O reçoit un noveau haut (signal continu), ou un signal crenaux (quel qu'en soit le rapport cyclique), je voudrais que les OC soient configurés en PWM, et qu'ils executent une sequence memorisée dans le dsPic, cette sequence contient deux informations: le rapport la durée de commade de chaque OC et le rapport cyclique pendant chacune de ces durées.
    j'espere que c'est clair!
    pour copier in sur out:
    Code:
    #include 30F6014.h
    
    void main() {
    
      ADPCFG = 0xFFFF;
      LATB = 0;
      TRISB = 1;
      LATC = 0;
      TRISC = 0;
      while(1) {
        if (LATB1)  LATC1=1;
        if (LATB2)  LATC1=1;
        if (LATB3)  LATC1=1;
        if (LATB4)  LATC1=1;
      }
    }
    pour configurer en PWM:
    Code:
    void init_PWM()
    {
        /* ~~~~~~~~~~~~~~~~~~~~~~ PWM1 Configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */    
        /* PWM1 I/O Control Register register */
        IOCON1bits.PENH      = 1;   /* PWM1H is controlled by PWM module */
        IOCON1bits.PENL      = 1;   /* PWM1L is controlled by PWM module */
        IOCON1bits.PMOD      = 0;   /* Select Complementary Output PWM mode */
    
        /* Load PDC1 register with initial Duty Cycle value */
        PDC1 = 640;                 /* Duty Cycle = PDC2*1.05nsec = 672nsec */
    
        /* Load PDTR1 and ALTDTR2 register with preset dead time value */
        DTR1    = 64;               /* Deadtime setting */
                                    /* Deadtime = DTR1*1.05 = 67.2nsec */
        ALTDTR1 = 64;               /* Deadtime setting */
                                    /* Deadtime = ALTDTR1*1.05 = 67.2nsec */
        /* PHASE1 register */
        PHASE1 = 0;                 /* No phase shift */
    
    
     
        /* Configure PTPER register to produce 400kHz PWM frequency */
        PTPER = 2380;               /* PWM Period @30 MIPS, 2.5usec == 400kHz */
                                    /* Period = PTPER*1.05nsec = 2.499usec
    
        /* PWM Time Base Control Register */
        PTCONbits.PTEN       = 1;   /* Enable the PWM Module */
     
    
    
    }
    est ce bon selon vous?
    merci

    ce qui me manque c'est comment configurer les OC en simples in/out?
    et comment envoyé les ordres de commande predefinis vers les OC, une fois confogurés en PWM?

    merci

    -----
    "Engineering is the art of making what you want from what you get"

  2. Publicité
  3. #2
    ABN84

    Re : PWM_ Entrée/Sortie

    bonsoir,
    pas de volontaire?
    "Engineering is the art of making what you want from what you get"

  4. #3
    DavidDB

    Re : PWM_ Entrée/Sortie

    Salut,

    C'est quoi OC ????

    David.

  5. #4
    ABN84

    Re : PWM_ Entrée/Sortie

    OC: OutputCompare
    "Engineering is the art of making what you want from what you get"

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

    Re : PWM_ Entrée/Sortie

    Bien, rien de compliqué dans ce cas, il te suffit d'agir sur le bit PTEN du registre PTCON pour activer le PWM quand ton I/O7 est à l'état haut...

    David.

  8. #6
    ABN84

    Re : PWM_ Entrée/Sortie

    quand ton I/O7 est à l'état haut...
    en faisant ainsi, si le signal sur I/O7 est un crenaux, la configuration va changer d'etant à chaque commutation.
    ce que je veux c'est que quelquesoit le signal (continue ou crenaux de periode 20ms) qu'on peux rammener à un crenaux de 20ms qqsoit sont rapport cyclique, les OC soient configurés en pwm.
    "Engineering is the art of making what you want from what you get"

  9. Publicité
  10. #7
    DavidDB

    Re : PWM_ Entrée/Sortie

    Cela ne change rien au problème...

    Après le passage de l'entrée à l'état haut :
    - Tu lances ton PWM
    - Tu attends 20ms et ensuite si tu as un état bas sur l'entrée tu arrêtes le PWM, sinon tu ne fais rien.

    David.

Discussions similaires

  1. Microcontroleur Pic(entrée sortie)
    Par Mikaeltrigo dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 06/10/2007, 10h56
  2. Entrée sortie Microncontroleur Pic
    Par Mikaeltrigo dans le forum Électronique
    Réponses: 6
    Dernier message: 03/04/2007, 17h08
  3. copier entrée sur sortie
    Par ABN84 dans le forum Électronique
    Réponses: 1
    Dernier message: 25/03/2007, 22h21
  4. cubloc interface entree sortie
    Par jan29 dans le forum Électronique
    Réponses: 0
    Dernier message: 18/02/2007, 14h02
  5. Entree/sortie Dv Grillee?..
    Par DEKOTCHA dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 17/02/2006, 11h12
Découvrez nos comparatifs produits sur l'informatique et les technologies.