#include "io430.h" #include "intrinsics.h" //****************************************************************************** // PWM sur les ports P1.0 à P1.2 géré par le vecteur d'interruption TAIV //****************************************************************************** void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x0F; // P1.x output P1OUT == 0x08; // P1.3 (D1) allumé 100% pour contrôle CCR0 = 512-1; // Periode du PWM, fréquence du Timer ~= 1MHz/CCR0 ~= 2Kz CCR1 = 40; // CCR1 PWM duty cycle CCTL1 = CCIE; // CCR1 interrupt enabled TACTL = TASSEL_2 + MC_1 + TAIE; // SMCLK, up mode __enable_interrupt(); while (1); } // Timer_A Interrupt Vector (TAIV) handler #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) { switch(TAIV) { case 0x02: // CCR1 P1OUT = 0x08; break; case 0x0A: // overflow P1OUT = 0x0F; break; } }