这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » xiaoliang,liaoduck,3qxjF149,AD,5V xiaoli

共2条 1/1 1 跳转至

xiaoliang,liaoduck,3qxjF149,AD,5V xiaoliang,liaoduck,3qxjF149的AD转换口怎么会输出高电平(2。5V

院士
2006-09-17 18:14:16     打赏
xiaoliang,liaoduck,3qxjF149,AD,5V xiaoliang,liaoduck,3qxjF149的AD转换口怎么会输出高电平(2。5V)?



关键词: xiaoliang     liaoduck     3qxjF1    

院士
2006-12-22 22:43:00     打赏
2楼
问 我用F149做振动信号采集,为什么在进行AD转换时其AD口(比如A0)怎么会输出高电平(2。5V)?我的信号就没有用了。???/ 1: 你的初始化对吗,这几天我也在做A0的AD,没出现你这样的问题,把你的初始化程序贴出来看看。
bis.b #BIT0,&P6SEL ;
SetupADC12 mov #SHT0_8+MSC+REFON+ADC12ON,&ADC12CTL0
mov #SHP+CONSEQ_2,&ADC12CTL1

mov.b #SREF_1,&ADC12MCTL0
mov #BIT0,&ADC12IE

bis #ENC,&ADC12CTL0
bis #ADC12SC,&ADC12CTL0
这是我的初始化 2: ADC12CTL0&=~ENC;
ADC12CTL0=ADC12ON+SHT0_6+MSC;
//ADC12CTL1=CONSEQ_0+SHS_0+ADC12SSEL_2;
ADC12CTL1=CONSEQ_2+SHP;
ADC12MCTL0=INCH_1+SREF_6;
ADC12IE=BIT0;
ADC12CTL0|=ENC;
}
//--------------A/D转换中断服务程序------------------------------------
interrupt [ADC_VECTOR] void ADC(void)
{
uint ADvalue;
switch(ADC12IV)
{
case 0x02: break;
case 0x04: break;
case 0x06:
//------------采样10次求平均值------------------------------------------
ADvalue=ADC12MEM0; //---读取AD值---------
AD_Sum+=ADvalue;
if(AD_Change_Times==18)
{ AD_Min=ADvalue; AD_Max=ADvalue;
}
else
{ if(ADvalue>AD_Max) AD_Max=ADvalue;
else
{if(ADvalue<AD_Min) AD_Min=ADvalue;}
}

AD_Change_Times--;
if(!AD_Change_Times)
{
AD_Sum=AD_Sum-AD_Max-AD_Min;//---去除最大最小值------
AD_Result=AD_Sum>>4;

AD_Change_Times=18;
AD_Min=0; AD_Max=0; AD_Sum=0;
}
ADC12CTL0|=ADC12SC; //-------立即启动下一次转换.---
_NOP();
//----------------------------------------------------------------------
default: break;
}
} 3: P6SEL设置了么?

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]