Board logo

标题: [求助]AD中断问题 [打印本页]

作者: xiongxiong26    时间: 2008-10-29 15:45     标题: [求助]AD中断问题

请问有谁使用过ADC12B16C,我的程序只能进入中断2次,然后就不会再进入了,而存储AD采集值的寄存器却还再采集,就是不能通过中断读取,请帮忙看看。

AD的初始化程序:

/* AD控制寄存器1: AD精度为8位 */
ATDCTL1 = 0x00;

/* AD控制寄存器2: 启动AD快速转换|AD等待模式下转换|AD中断使能 */
ATDCTL2 = (ATDCTL2_AFFC_MASK|ATDCTL2_ICLKSTP_MASK|ATDCTL2_ASCIE_MASK);

/* AD控制寄存器3: 右对齐|转换序列长度为3 */
ATDCTL3 = (ATDCTL3_DJM|ATDCTL3_S2C_MASK|ATDCTL3_S1C_MASK);

/* AD控制寄存器4:AD时钟周期为4个系统时钟|分频系数为19 */
ATDCTL4 = (ATDCTL4_PRS4_MASK|ATDCTL4_PRS1_MASK|ATDCTL4_PRS0_MASK);

/* AD控制寄存器5:连续采集|多通道采集|从通道AD9开始 */
ATDCTL5 = (ATDCTL5_SCAN_MASK|ATDCTL5_MULT_MASK|ATDCTL5_CD_MASK);

/* AD中断使能寄存器:禁止所有通道数字输入缓冲 */
ATDDIEN = 0x00;

中断程序:

void interrupt Int_AD0(void)
{
LED_TOGGLE(D29);/* 用于指示AD中断函数是否运行 */
AD_wData1 = ATDDR0;/* 采集 */
AD_wData2 = ATDDR1;/* 采集 */
AD_wData3 = ATDDR2;/* 采集 */
AD_wDataH = ATDDR0H;
PORTB = AD_wDataH;/* 从端口B输出采集的值的高8位用于查看 */
if (ATDSTAT0_SCF!=0){
LED_ON(D28);
}

}


作者: strongchen    时间: 2008-10-29 16:18

检查一下你开启的是什么中断,相应的中断标志是否清零?
作者: xiongxiong26    时间: 2008-10-30 09:37

谢谢版主,问题解决了,发现是之前也开启了定时器中断,所以影响了AD中断.






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