智能车制作

标题: ad超奇怪的问题??高价求解啊!! [打印本页]

作者: wen123    时间: 2013-4-29 17:38
标题: ad超奇怪的问题??高价求解啊!!
下面是两个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;
}

作者: qurter    时间: 2013-4-29 17:44
我想请问一下LZ,你CTL3初始化是用的上面的INIT函数,还是用的下面INIT函数然后在void AD_GetValue(void)里面重新初始化?
作者: wen123    时间: 2013-4-29 17:46
下面的啊!你觉得问题出在哪?,好奇怪啊
作者: wen123    时间: 2013-4-29 17:47
qurter 发表于 2013-4-29 17:44
我想请问一下LZ,你CTL3初始化是用的上面的INIT函数,还是用的下面INIT函数然后在void AD_GetValue(void)里 ...

就进行了一次初始化啊!!!
作者: qurter    时间: 2013-4-29 17:55
本帖最后由 qurter 于 2013-4-29 17:58 编辑
wen123 发表于 2013-4-29 17:47
就进行了一次初始化啊!!!

不好意思,我还是不太明白LZ是怎么初始化的,读取之前没有对AD的控制寄存器更改过么?

作者: wen123    时间: 2013-4-29 18:03
在main,while(1)循环之前,初始化的啊

作者: qurter    时间: 2013-4-29 18:14
小弟也不知道为什么,不过LZ你把CTL3改为C0试试

PS:感觉LZ的问题跟http://www.eefocus.com/bbs/article_265_487159.html有点相似
作者: qurter    时间: 2013-4-29 18:16
小弟也不知到为什么,不知道LZ把CTL3改为C0能不能正常工作……
作者: wen123    时间: 2013-4-29 18:28
qurter 发表于 2013-4-29 18:16
小弟也不知到为什么,不知道LZ把CTL3改为C0能不能正常工作……

c0也是尝试过啊,也不行、、貌似飞80不可
作者: qurter    时间: 2013-4-29 18:50
那小生真的不知道怎么回事了……
作者: pln760    时间: 2013-4-29 18:50
控制寄存器5为什么起始通道是6,不应该是0吗?
作者: wen123    时间: 2013-4-29 18:51
qurter 发表于 2013-4-29 18:16
小弟也不知到为什么,不知道LZ把CTL3改为C0能不能正常工作……

好像可以了,好像大于八的都可以,这是啥原因
作者: wen123    时间: 2013-4-29 18:52
pln760 发表于 2013-4-29 18:50
控制寄存器5为什么起始通道是6,不应该是0吗?

我设置为六啊,从通道六开始采集!
作者: qurter    时间: 2013-4-29 19:08
小生在7L的链接中有人提到了类似的问题,感觉只要队列长度大于使用的最后一个通道就行
作者: 穆旦阿斗    时间: 2013-4-29 21:42
应该是反转通道设置的问题
作者: 十八将军了一    时间: 2013-4-30 08:49

作者: wen123    时间: 2013-4-30 10:42
穆旦阿斗 发表于 2013-4-29 21:42
应该是反转通道设置的问题

这个我尝试过不是这问题,不过还是感谢你的回答
作者: 荷马111    时间: 2013-5-1 12:57
............




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2