KAGE 发表于 2013-1-28 12:31:09

430比较器中断:每次切换边沿触发方式都会自动产中断?

#include <msp430g2353.h>
#include "type.h"
#include "CPU.h"

/*******************************/
void SystemClkInitital()
{
    DCOCTL=CALDCO_8MHZ;
    BCSCTL1 = CALBC1_8MHZ;//设定为8m主频
        WDTCTL = WDTPW + WDTHOLD;               // Stop WDT//关闭看门狗
        _BIS_SR(GIE);
}
/*******************************/
void ComparatorInitital()
{
    CACTL1=CAON+CAREF0+CARSEL+CAIES+CAIE;//开启比较器 内部0.25VCC基准 下降沿中断使能
    CACTL2=P2CA0;
    CAPD=CAPD0;
}
/*******************************/
void main(void)
{
    UINT16 i;
    SystemClkInitital();
        ComparatorInitital();
        P2DIR|=BIT0;
    while(1)
    {
                  i++;
                if(i==50)
                {
                  i=0;
                  CACTL1^=CAIES;//比较器中断模式切换(上升沿 或 下降沿),为什么每次切换都进一次中断???
                }
    }
}
/**************************************/
/*************************************************/
#pragma vector=COMPARATORA_VECTOR
__interrupt void Compare(void)      //比较器中断
{
    P2OUT^= 0x01;//
}

KAGE 发表于 2013-1-28 12:33:36

比较器外部输入一直是0V,但每次切换边沿触发方式都会进入比较器中断。调试了两天了,一直没找到原因,请给位帮忙分析一下子,谢谢!!

KAGE 发表于 2013-1-28 12:44:59

示波器测量图示

本帖最后由 KAGE 于 2013-1-28 12:46 编辑

测量结果

KAGE 发表于 2013-1-28 14:37:24

大家都没有遇到过?

rifjft 发表于 2013-1-28 17:25:56

430不懂,
不过这类问题通常是考虑外部硬件、或模式的设置,或者看看能不能先关闭中断,再切换模式,然后再开中断

ckvlhf 发表于 2013-1-28 19:02:31

看数据手册吧,貌似是这样的,在切换之前关了中断不就行了。

KAGE 发表于 2013-1-28 19:57:48

ckvlhf 发表于 2013-1-28 19:02 static/image/common/back.gif
看数据手册吧,貌似是这样的,在切换之前关了中断不就行了。

关了也不行,已经试了

ckvlhf 发表于 2013-1-28 20:40:09

KAGE 发表于 2013-1-28 19:57 static/image/common/back.gif
关了也不行,已经试了

这种情况不会出现吧,中断都关了怎么还能进去?

KAGE 发表于 2013-1-29 11:22:12

ckvlhf 发表于 2013-1-28 20:40 static/image/common/back.gif
这种情况不会出现吧,中断都关了怎么还能进去?

关了以后,设定触发方式,打开终端,马上进入中断。
页: [1]
查看完整版本: 430比较器中断:每次切换边沿触发方式都会自动产中断?