Board logo

标题: 不知为什么ATD0中无法实现双路转换 [打印本页]

作者: hljgcxylp    时间: 2008-4-2 13:59     标题: 不知为什么ATD0中无法实现双路转换

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

void delay_1ms(void){
unsigned int i;
for(i=0;i<1280;i++); //1280是调节关键
}

//**********初始化AD模块**********************//

void AD_Init(void) //初始化
{
ATD0CTL2=0xC2; // AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
delay_1ms();
ATD0CTL3=0x10; // 转换序列长度为2, FIFO=0, Freeze模式下继续转换
ATD0CTL4=0x83; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1] ; PRS=3,
//divider=8
ATD0CTL5=0xB4; // 右对齐无符号,多通道采样,通道4为输入通道
ATD0DIEN=0x00; // 禁止数字输入
}

//**********AD中断模块**********************//
#pragma CODE_SEG NON_BANKED
#pragma TRAP_PROC

void AD_inturrept(void){ //AD中断程序
if(ATD0STAT1_CCF4==0) PORTB =~(char)ATD0DR4;//在B口显示转换值

if(ATD0STAT1_CCF5==0) PORTA =~(char)ATD0DR5;//在A口显示转换值
}


//**********主程序**********************//
void main(void) {
DisableInterrupts;
DDRB=0xFF;
DDRA=0XFF;
PORTB=0xFF;
PORTA=0X00;

AD_Init(); //AD初始化
EnableInterrupts;
for(;;){}

}
当FIFO=0时,ATD0中通道4、5的转化结果不是应该存储在ATD0DR4和ATD0DR5中吗 但我在这两个结果寄存器中却读不到数据 在ATD0DR0中能够读到 不知这是为什么 请各位高人为我指点迷津 先谢了!
作者: strongchen    时间: 2008-4-2 14:29

请参考这个帖子:
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=125170&ID=125170
作者: hljgcxylp    时间: 2008-4-4 12:00

非常感谢版主!!




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