共2条
1/1 1 跳转至页
xiaoliang,liaoduck,3qxjF149,AD,5V xiaoliang,liaoduck,3qxjF149的AD转换口怎么会输出高电平(2。5V
问
我用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设置了么?
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 跳转至页
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |
我要赚赏金
