智能车制作

标题: 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://111.231.132.190/) Powered by Discuz! X3.2