Board logo

标题: 请教:如何启动一次AD转换 [打印本页]

作者: xiao1983er    时间: 2006-12-17 22:18     标题: 请教:如何启动一次AD转换

看datasheet,没有发现专门的启动信号,好像只说写ATDCTL5可以start a new conversion,不太明白,是只要写一次ATDCTL5就能启动AD转换吗?想用查询方式读出转换结果,可是状态寄存器的值总不变,我觉得AD转换没有被启动。


请懂得人指点一下,谢谢!


作者: strongchen    时间: 2006-12-18 09:24

你用的是什么芯片?
作者: xiao1983er    时间: 2006-12-18 15:26

s12系列的MCS9S12C32
作者: xiao1983er    时间: 2006-12-18 15:32

我的程序如下,每次到if ((ATDSTAT1&0x01)==0x01)就判断不过去了,ATDSTAT1的值总是0x00,是不是说明根本没有开始进行转换呢?
请帮忙分析一下吧

#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12c32"

void ATDInit(void){
ATDCTL2 = 0x02; //Enable ATD sequence completion interrupt
ATDCTL3 = 0x22; //number of conversition per sequence is 4,non-FIFO mode
ATDCTL4 = 0x04; //10-bit resolution,second phase is 2 clock cycle,ATD clock is 800K
ATDDIEN = 0xFF; //disable digital input
}
#define RESULT_SIZE 20
void main(void) {
static unsigned char result[RESULT_SIZE];
unsigned char i = 0;
unsigned char rc;
ATDInit();

/* put your own code here */
EnableInterrupts;

for(;;) {
rc = ATDCTL5;
ATDCTL5 = 0x00;
if ((ATDSTAT1&0x01)==0x01)
{
result = ATDDR0H;
i++;
result = ATDDR0L;
i++;
}
} /* wait forever */
/* please make sure that you never leave this function */
}

[此贴子已经被作者于2006-12-18 15:32:51编辑过]


作者: strongchen    时间: 2006-12-18 15:53

ATDCLT2的ADPU位打开了吗?
作者: xiao1983er    时间: 2006-12-18 15:57

没有,记得前面调试时打开过,但好像程序就运行不起来了,我不太明白ADPU的具体有什么作用
作者: xiao1983er    时间: 2006-12-18 16:03

斑竹有没有QQ?可不可以直接咨询你?
作者: strongchen    时间: 2006-12-18 16:16

还是要仔细看数据手册。ADPU是控制ATD模块是否打开的。它不置1, ATD怎能工作?
作者: xiao1983er    时间: 2006-12-18 16:31

是那个意思呀?手册上写的:
ADPU--This bit provides on/off control over the ATD bolck allowing reduced MCU power consumption.
我一直理解成MCU节电模式下是否允许ATD工作了
呵呵,我再试试,谢谢斑竹!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0