#include "io430.h" #include "intrinsics.h" int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; ADC10CTL0 = ADC10SHT_2 + ADC10ON + REF2_5V + REFON; ADC10CTL1 = INCH_1; ADC10DTC1 = 0x001; // 1 conversion P1DIR |= 0x01; // P1.2 = output P1SEL |= 0x02; // ou équivalent ADC10AE0 |= 0x02; // P1.1 ADC option select P1OUT = 0X01; TACTL = TASSEL_2 + MC_1 + TAIE; // SMCLK, up mode CCR0 = 512-1; // PWM Period CCR1 = 13; // CCR1 PWM duty cycle CCTL1 = CCIE; // CCR1 interrupt enabled __enable_interrupt(); while(1) { ADC10CTL0 |= ENC + ADC10SC; // Start sampling CCR1 = ADC10MEM >> 1; } } // Timer_A Interrupt Vector (TAIV) handler #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) { unsigned int tar = TAR; if (TAIV) { if (tar <= CCR1) P1OUT |= 0x01; else P1OUT = 0x00; } }