Bonjour,

Je suis entrain de coder un PWM sur un processeur MSP430F5528. J’incrémente de 1 le duty cycle dans une boucle passant de 1% à 100%.

Le probleme est que je veux le le PWM s'execute une seul fois et que à la fin le signale ce mette à zero.

Je ferai ensuite une fonction qui lancera un PWM de 0 à 100 et une autre de 100 à 0.

voici mon code actuelle:

Code : 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

#include "msp430F5528.h"

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  
  UCSCTL4 = SELS__DCOCLK ;
  
  
  P1DIR |= BIT2;             // P1.2 to output
  P1SEL |= BIT2;             // P1.2 to TA0.1
  
  TA0CTL = TASSEL_2 + MC_1;  // clock, up mode

  TA0CCR0 = 100;             // PWM Period
  TA0CCTL1 = OUTMOD_7;       // CCR1 reset/set
  TA0CCR1 = 1;
  
  while(TA0CCR0 != 0){
    TA0CCTL1 = OUTMOD_7;     // CCR1 reset/set
    TA0CCR1 = TA0CCR1 + 2;
    
    if(TA0CCR1 == 100){
      TA0CTL = TASSEL_2 + MC_0;
    }
  }
}
j'utilise le logiciel IAR Embedded Workbench IDE

merci de l'aide
NI3