智能车制作
标题:
ATD中断为什么跳不出来?麻烦大家看下。
[打印本页]
作者:
rong
时间:
2009-6-10 17:48
标题:
ATD中断为什么跳不出来?麻烦大家看下。
我用的是OV5116CMOS摄像头 在程序运行时,在主程序中设置断点,发现程序一直在AD中断程序中运行,回不到主程序中去了,不知道为什么,麻烦哪位高手指点下,谢谢了!程序如下:
void ATD0_init(void) //AD转换模块初始化
{ ATD0CTL2=0X82; /*AC模块上电 快速清零自动清除转换完成位 无等待模式 中断允许 禁止外部触发*/
ATD0CTL3=0X00; /*每序列长度为8 无FIFO转换结果放在相应的寄存器中 冷冻状态下继续工作*/
ATD0CTL4=0X83; //八位精度 采样时间:2个时钟时间,8倍分频
ATD0CTL5=0X20; //结果寄存器数据对齐方式:右对齐 无符号 连续队列转换 单通道 通道0
ATD0DIEN=0X00; //当作为模拟量输入时禁止数字输入
}
void main(void) {
EnableInterrupts;
PLL_init();
PWM_init();
ATD0_init();
PORT_init();
TFLG1=0xff;
DisableInterrupts;
for(;;) {
// ATD0CTL5=ATD0CTL5_SCAN_MASK; //以扫描方式开启AD;
PORTB=0XF0;
}
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED /*ATD中断应用程序 每隔8usATD中断发生一次*/
void interrupt 22 ATD0_ISR(void)
{ ATD0CTL2_ASCIF=0;
AD_value[0]=ATD0DR0H;
AD_value[1]=ATD0DR1H;
AD_value[2]=ATD0DR2H;
AD_value[3]=ATD0DR3H;
AD_value[4]=ATD0DR4H;
AD_value[5]=ATD0DR5H;
AD_value[6]=ATD0DR6H;
AD_value[7]=ATD0DR7H;
PORTB=0x0F;
}
作者:
zdhly0401
时间:
2009-6-10 17:48
ATD0CTL2_ASCIF=0;
清零是写1的ATD0CTL2_ASCIF=1
作者:
rong
时间:
2009-6-11 10:04
谢谢啊!不过好像还是不行,我在中断函数中把SCAN位 置0,再在主函数中置1就行了,我现在在调ECT和AD的中断,不过好像只要有AD中断,整个程序就运行不起来,唉!满头疼的。还有 上面的DisableInterrupts;是注解掉的,忘改了,不好意思啊
作者:
whut_wj
时间:
2009-6-11 12:44
出不来检查中断标志位是否清了,另外ATD的初始化从最简单的来做,
作者:
whut_wj
时间:
2009-6-11 12:44
出不来检查中断标志位是否清了,另外ATD的初始化从最简单的来做,
作者:
rong
时间:
2009-6-13 17:22
好的,多谢版主提醒!
作者:
guoshunkai521
时间:
2012-4-16 10:52
看看
欢迎光临 智能车制作 (http://www.znczz.com/)
Powered by Discuz! X3.2