TI中文支持网
TI专业的中文技术问题搜集分享网站

关于MSP430的AD转换

我用的是5529,AD转换设置如下:

ADC12CTL0 = ADC12SHT02 + ADC12ON + ADC12REFON; // Sampling time, ADC12 on
ADC12CTL1 = ADC12SHP; // Use sampling timer
ADC12MCTL0 = ADC12INCH_0; // Use A0 (power voltage) as input
ADC12CTL0 |= ADC12ENC; // Enable conversions
ADC_PORT_SEL |= ADC_INPUT_A0; // P6.0 ADC option select (A0)

adc_completed = 0;
ADC12IE = 0x01; // Enable interrupt
ADC12CTL0 |= ADC12SC; // Start sampling/conversion
for(;;){if(adc_completed == 1)break;}   /*在中断取AD结果*/
ADC12IE = 0x00; // Disable interrupt

问题是:我变化A0上的输入电压,从1.0到1.5的变化,为什么AD结果不变?

谢谢!

gaoyang9992006:

为什么不发到MSP430板块呢?

给你发个参考。

#include<msp430f5529.h>void sysInit(){ ADC12CTL0 = ADC12SHT02+ADC12REFON + ADC12ON; // Sampling time, ADC12 on ADC12CTL1 = ADC12SHP; // Use sampling timer ADC12IE = 0X001; ADC12MCTL0=ADC12SREF_1+ADC12INCH_7;// Enable interrupt __delay_cycles(75); ADC12CTL0 |= ADC12ENC+ADC12EOS; P6SEL |= BIT7; // P6.0 ADC option select P8DIR |= BIT1; P8OUT &=~BIT1;

}void main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDT REFCTL0 &= ~REFMSTR; sysInit(); while(1) { ADC12CTL0 |= ADC12SC; __bis_SR_register(LPM0_bits + GIE); //__no_operation(); }}#pragma vector = ADC12_VECTOR__interrupt void ADC12_ISR(void){ switch(__even_in_range(ADC12IV,34)) { case 0:break; case 2:break; case 4:break; case 6: if(ADC12MEM0 >= 0x7FF) P8OUT |= BIT1; else P8OUT &=~BIT1; __bic_SR_register_on_exit(LPM0_bits); break; //case 8:break; default:break; }

}

赞(0)
未经允许不得转载:TI中文支持网 » 关于MSP430的AD转换
分享到: 更多 (0)