菜鸟求教:想利用TAIFG对PWM实现计数,但中断进不去

古战场的松柏   2009-9-17 20:55 楼主
代码:
#include "msp430x54x.h"
unsigned int count;
void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;                   // Stop WDT
    P2DIR |= BIT2;                                               // P2.2  output
    P2SEL |= BIT2;                                               // P2.2  options select
    TA1CCR0 = 512-1;                                         // PWM Period
    TA1CCTL1 = OUTMOD_7;                               // CCR1 reset/set
    TA1CCR1 = 384;                                             // CCR1 PWM duty cycle
    TA1CTL = TASSEL_1 + MC_1 + TACLR;           // ACLK, up mode, clear TAR
    TA1CTL = TAIE;                             
    __bis_SR_register(LPM3_bits + GIE);             // Enter LPM3
}


#pragma vector = TIMER1_A1_VECTOR
__interrupt void TIMER1_ISR()
{
    switch(TA1IV)
    {
    case 0: break;
    case 2: break;
    case 4: break;
    case 6: break;
    case 8: break;
    case 10: break;
    case 12: break;
    case 14: count++; break;
    }
}
用的是5438,
哪位大侠帮帮我

回复评论 (4)

菜鸟求教:想利用TAIFG对PWM实现计数,但中断进不去

你是硬仿真还是软仿真啊?
点赞  2009-9-17 22:22
硬仿
点赞  2009-9-18 07:57
tacctl1的中断没使能
点赞  2009-9-18 08:51
好像不是TA1CCTL1使能的问题吧?因为我用的是TAIFG,跟CCTL1的CCIE是否使能应该无关的

TA1CTL |= TASSEL_1 + MC_1 + TACLR;
TA1CTL |= TAIE;

这样改下就可以实现计数了 是自己的编程习惯不好......
点赞  2009-9-18 11:56
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复