|
下面是两个ad采样初始化程序:为啥我把ATD0CTL3=0x80(转换序列长度为16);改为ATD0CTL3=0x98(转换序列长度为3);之后上位机就没数据了!!难道进入死循环了,改过来之后就有数据了!!!!!
void AD_Init(void)
{
// ATD0CTL0=0x07; //转换频道从AN0到AN7
ATD0CTL1=0x40; //选择AD通道为外部触发,12位精度,采样前不放电
ATD0CTL2=0x40; //标志位自动清零,禁止外部触发, 禁止中断
ATD0CTL3=0x98; //右对齐无符号,每次转换3个序列, No FIFO, Freeze模式下继续转
ATD0CTL4=0x07; //采样时间4个AD时钟周期,PRS=3,ATDClock=64/(7+1)*0.5=2MHz 000 00111
ATD0CTL5=0x36; //特殊通道禁止,连续转换 ,多通道转换,起始通道为6
ATD0DIENL=0x00; //禁止数字输入
}
void AD_Init(void)
{
// ATD0CTL0=0x07; //转换频道从AN0到AN7
ATD0CTL1=0x40; //选择AD通道为外部触发,12位精度,采样前不放电
ATD0CTL2=0x40; //标志位自动清零,禁止外部触发, 禁止中断
ATD0CTL3=0x80; //右对齐无符号,每次转换16个序列, No FIFO, Freeze模式下继续转
ATD0CTL4=0x07; //采样时间4个AD时钟周期,PRS=3,ATDClock=64/(7+1)*0.5=2MHz 000 00111
ATD0CTL5=0x36; //特殊通道禁止,连续转换 ,多通道转换,起始通道为6
ATD0DIENL=0x00; //禁止数字输入
}
void AD_GetValue(void)
{
// ATD0CTL3=0x98;
// ATD0CTL5=0x35;
while(!ATD0STAT2_CCF7);
AD_value[7]=ATD0DR2;
AD_value[5]= ATD0DR0;
AD_value[6]= ATD0DR1;
}
|
|