|
//===================
void init_ad(void)
{
//ADC12CTL0 = ADC12ON+MSC+SHT0_8; // 开启ADC12, 设置采样时间
//ADC12CTL1 = SHP+CONSEQ_3; // 多次采样
ADC12CTL0 = ADC12ON+SHT1_6+SHT0_6+MSC+REFON; // 开启ADC12, 设置采样时间
ADC12CTL0|= REF2_5V ;
ADC12CTL1 = SHP+CONSEQ_3; // 多次采样
//ADC12MCTL3 = INCH_3; // ref+=AVcc, channel = A2
//ADC12MCTL4 = INCH_4+EOS; // ref+=AVcc, channel = A3, end seq.
//ADC12MCTL0 = INCH_0; // ref+=AVcc, channel = A2
ADC12MCTL0 = INCH_0; // ref+=AVcc, channel = A2
ADC12MCTL1 = INCH_1+EOS+SREF_5; // ref+=AVcc, channel = A3, end seq.
}
//=======================下面需要改
void close_ad(void)
{
ADC12CTL0 &= ~ENC;
// ADC12CTL0 &= ~ADC12ON;
}
void data_convert(void)
{
ADC12CTL0 |=ENC +ADC12SC;
P6SEL |= 0x03; // P6.0 ADC option select
while( 1 == (ADC12IFG&ADC12BUSY))
{
ad_data0 = ADC12MEM0;
ad_data1 = ADC12MEM1;
}
close_ad();
端口0实际电压为:0.725 0.725/2.5*4096=1187,msp430给出数据880;
端口1实际电压为:1.9 1.9/2.5*4096 =3112,msp430给出数据3967;
参考源为 :2.5吧 (我设定成 2.0数据也没有变化,不知道什么原因?)
上面数据 差距很大啊,是不适哪里设定有问题?
为何设定 SREF_5 与否 采集到的数据都是一样的? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|