金牌会员
 
- 积分
- 1967
- 威望
- 1020
- 贡献
- 445
- 兑换币
- 223
- 注册时间
- 2012-3-6
- 在线时间
- 251 小时
- 毕业学校
- 华侨大学
|
我买来一块红树伟业的xs128最小系统板(80管脚的),把VRH接到芯片上的+5V了,VRL接到地,然后我给AD0一个稳定的3.26伏电压
我打算用10位的分辨率,并将读取AD0后的数据给PWM0,看他的占空比,目的是检测AD的设置是否正确
第一个问题是
while(!ATD0STAT2_CCF0);
AD_value[0]=ATD0DR0; 读取AD0中的数据后,是不要除以1024才是真正的输入3.26?
第二个问题是AD0采集到的数据和预想的不一样啊 还望各位指教一下~~~~~~~~~~~~~~~~~
程序如下:
/************************************************************************
* AD初始化
*************************************************************************/
void initAD(void){
ATD0DIEN=0x00; //禁止数字输入
ATD0CTL2=0x40; //AD模块不上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
ATD0CTL3=0xa0; //转换序列长度为4 右对齐
ATD0CTL4=0x03; //采样周期 1MHz
ATD0CTL5=0x30; //多通道连续采集从通道0开始 0~3
}
/************************************************************************
*系统初始化函数
*************************************************************************/
void sys_init()
{
initPWM(); //PWM初始化
init_systemclock();
initAD();
}
void GetADValue(){
while(!ATD0STAT2_CCF0);
AD_value[0]=ATD0DR0;
while(!ATD0STAT2_CCF1);
AD_value[1]=ATD0DR1;
while(!ATD0STAT2_CCF2);
AD_value[2]=ATD0DR2;
while(!ATD0STAT2_CCF3);
AD_value[3]=ATD0DR3;
}
void main(void){
sys_init(); //系统初始化
while(1){
GetADValue();
//b=99;
a=(int)AD_value[3]*15;
PWMDTY0=a; }
|
|