首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教:如何启动一次AD转换

请教:如何启动一次AD转换

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


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

你用的是什么芯片?
海纳百川  有容乃大
s12系列的MCS9S12C32

我的程序如下,每次到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编辑过]

ATDCLT2的ADPU位打开了吗?
海纳百川  有容乃大
没有,记得前面调试时打开过,但好像程序就运行不起来了,我不太明白ADPU的具体有什么作用
斑竹有没有QQ?可不可以直接咨询你?
还是要仔细看数据手册。ADPU是控制ATD模块是否打开的。它不置1, ATD怎能工作?
海纳百川  有容乃大
是那个意思呀?手册上写的:
ADPU--This bit provides on/off control over the ATD bolck allowing reduced MCU power consumption.
我一直理解成MCU节电模式下是否允许ATD工作了
呵呵,我再试试,谢谢斑竹!
返回列表