Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

MSP430f5310比较器B问题,一直在中断循环。

$
0
0

工程师:

            你好,MSP430比较器B,程序运行一直在中断中循环不跳出来,我选择的上升沿中断,电压设置的是1.5v,程序采用的是ti官方程序,只是把比较的管脚改了一下。其他的没有变动。现象:外部比较器的引脚为低电平时,就一直循环在中断中;如果外部比较器引脚是高电平,就可以退出中断?这个现象不对啊?为什么低电平会一直循环在中断中。程序见下图。

#include <msp430.h>
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop WDT
P4DIR |= BIT7; // P1.0/LED output direction

// Setup ComparatorB
CBCTL0 |= CBIPEN | CBIPSEL_3; // Enable V+, input channel CB0
CBCTL1 |= CBPWRMD_1; // normal power mode
CBCTL2 |= CBRSEL; // VREF is applied to -terminal
CBCTL2 |= CBRS_3|CBREFL_1; // R-ladder off; bandgap ref voltage (1.2V)
// supplied ref amplifier to get Vcref=1.5V (CBREFL_2)
CBCTL3 |= BIT3; // Input Buffer Disable @P6.0/CB0

__delay_cycles(75); // delay for the reference to settle

CBINT &= ~(CBIFG | CBIIFG); // Clear any errant interrupts
CBINT |= CBIE; // Enable CompB Interrupt on rising edge of CBIFG (CBIES=0)
CBCTL1 |= CBON; // Turn On ComparatorB
__bis_SR_register(GIE); // Enter LPM4 with inetrrupts enabled
while(1); // For debug
}


#pragma vector=COMP_B_VECTOR
__interrupt void Comp_B_ISR (void)

{
// CBCTL1 ^= CBIES; // Toggles interrupt edge
CBINT &= ~CBIFG; // Clear Interrupt flag
P4OUT ^= 0x80; // Toggle P1.0

}


Viewing all articles
Browse latest Browse all 3634

Trending Articles