首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]AD中断问题

[求助]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);
}

}

和头像眼睛一样大:)
检查一下你开启的是什么中断,相应的中断标志是否清零?
海纳百川  有容乃大

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

和头像眼睛一样大:)
返回列表