标题:
9S12 ATD 急救
[打印本页]
作者:
chudf
时间:
2007-7-30 16:53
标题:
9S12 ATD 急救
static long ADValue;
void AD_Init(void) //初始化
{
ATD0CTL2=0xC2; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断允许
ATD0CTL3=0x20; // 每个序列4次转换, No FIFO, Freeze模式下继续转换
ATD0CTL4=0x83; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1] ; PRS=3, divider=8
ATD0CTL5=0xA6; //右对齐无符号,单通道采样,通道6
ATD0DIEN=0x00; // 禁止数字输入
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void AD0_ISR(void)
{
ADValue = ATD0DR0; //Read out the Result Register
}
void main(void) {
AD_Init(); //AD初始化
DDRB = 0xFF;
PORTB = 0x00;
EnableInterrupts;
for(;;)
{
// while(!(ATD0STAT1 & 0x01)); //等待转换结束
//AD_GetValue(); //读取转换结果
PORTB = (char)ADValue; //在B口显示转换值
}
}
这是我在网上找的例程,请问为什么用的是通道6,但转换结果却从ATD0DR0里面取啊
作者:
strongchen
时间:
2007-7-31 10:05
S12的ATD转换结果是根据转换方式的安排,依次放在结果寄存器0到7里面。像这个例子里的设置,那么它是每个序列将通道6转换4次,结果依次放在结果寄存器0到结果寄存器3里;然后在开始下次转换,再从结果寄存器0开始放置。如此循环扫描。
作者:
chudf
时间:
2007-7-31 10:23
"每个序列将通道6转换4次"这句话是什么意思啊?什么叫序列?“转换4次”是指连续采样4次吗?
作者:
chudf
时间:
2007-7-31 10:25
还有,“结果依次放在结果寄存器0到结果寄存器3里”是说不管你使用哪个通道,结果总是先放到结果寄存器0里面去吗?我原先的理解是放到对应的结果寄存器里面。比如使用通道6,那么结果就放在结果寄存器0。请Strongchen指正
作者:
strongchen
时间:
2007-8-1 08:48
S12的AD转换有单次转换方式和连续扫描转换方式。不管是单次转换还是连续扫描转换,都是以一个序列位单位。一个序列的意思就是一轮进行多少次转换。它可以是对一个通道进行多次采样转换,或对多个通道依次进行采样转换。你可以到飞思卡尔网站下载文档AN2428(An Overview of the HCS12 ATD Module)看看。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0