//****************************************************************************** // MSP430F20x2 Demo - ADC10, Output Internal Vref on P1.4 & ADCCLK on P1.3 // // Description: Output ADC10 internal Vref on P1.4, toggling between two // avaialble options, 2.5v and 1.5v ADC10OSC also output on P1.3 // // // MSP430F20x2 - // /|\| // || | // |RST XOUT|- // // | XIN|- | Vref ADC10OSC ~ 3.5MHz - 6.5MHz // // L Westlund // Texas Instruments Inc // May 2006 // Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A //****************************************************************************** #include "msp430x20x2.h" void delay(void); void main(void) { // Software delay WDTCTL = WDTPW + WDTHOLD; ADC10CTL1 = CONSEQ_2; // Stop WDT // Repeat single channel ADC10CTL0 = REFOUT + REFON + MSC + ADC10ON; enable_interrupt(); TACCR0 = 30; TACCTL0 |= CCIE; // Enable interrupts // Delay to allow Ref to settle // Compare-mode interrupt TACTL = TASSEL_2 | MC_1; LPM0; // TACLK = SMCLK, Up mode // Wait for delay TACCTL0 &= ~CCIE; // Disable timer Interrupt disable_interrupt(); ADC10AE0 |= 0x10; // P1.4 ADC option select P1DIR |= 0x08; // Set P1.3 output direction P1SEL |= 0x08; // Set P1.3 option select for (;;) { ADC10CTL0 &= ~ENC; ADC10CTL0 ^= REF2_5V; ADC10CTL0 |= ENC + ADC10SC; delay(); } } void delay(void) { // ADC10 disable // Toggle Vref 1.5/2.5V // Sampling and conversion start volatile unsigned long i; for (i = 0x7FFFF; i > 0; i ); } #pragma vector=TIMERA0_VECTOR interrupt void ta0_isr(void) { TACTL = 0; LPM0_EXIT; } // Exit LPM0 on return