在线情况
楼主
  • 头像
  • 级别
    • 积分2
    • 经验200
    • 文章1
    • 注册2011-04-03
    【求助】MSP430 定时器A产生波形问题
    我想用TACCR0和TACCR1中断来实现产生一个时间脉冲,编译能通过,但是无法产生相应的波形,单步调试着看发现经过几次正常进入中断后,出现各异常问题,始终无法再进入中断,状态寄存器中的SCG0、SCG1自动置1,不知道什么原因,跪求高手指教。
    代码如下:
    #include "msp430x22x4.h"
    //                MSP430F2274
    //             -----------------
    //         /|\|              XIN|-  
    //          | |                 |
    //          --|RST          XOUT|-
    //            |                 |
    //            |             P1.0|-->波形

    int main( void )
    {
      WDTCTL=WDTPW+WDTHOLD;                   //关看门狗
      BCSCTL1 =CALBC1_12MHZ;                   //设定DCO为12MHZ
      DCOCTL =CALDCO_12MHZ;
      BCSCTL2 |= DIVS_2;                       //SMLK 4分频  频率为3MHz
      P1DIR |=BIT0;                           //LED使能
      TACTL=TASSEL_2+TACLR;                    //定时器A时钟源为SMCLK,并清TAR
      TACCTL0 |=CCIE;                         //TACCR0中断使能
      TACCR0 =60000;                            //计数值为60000个SMCLK周期  即20ms的PPM总信号周期
      TACCR1=1500;                                //间隔信号为0.5ms 的高电平
      TACTL |=MC_1;                            //动定时器A为单增模式
      _BIS_SR(GIE+CPUOFF);
      return 0;  
    }

    #pragma vector = TIMERA0_VECTOR           //TACCR0中断服务
    __interrupt void ta0_isr(void)
    {
      TACCTL1 |=CCIE;                         //TACCR1中断使能
      //TACTL |=TACLR;                             //TAR清零
      //TACCR1=TAR+1500;                              //间隔高电平信号0.5ms
      P1OUT |=BIT0;                           //拉高电平
    }

    #pragma vector = TIMERA1_VECTOR           //TACCR1中断服务
    __interrupt void ta1_isr(void)
    {
      switch( TAIV )
     {
       case  2:
                P1OUT &=~BIT0;                           //拉低电平
                TACCTL1 &=~CCIE;                         //TACCR1中断关闭    
                break;                         
       case  4:                                // CCR2
                break;                         
       case 10:                                  // TAR
                break;
     }
    }

    另外,说明一下,我是想利用msp430实现产生六通道PPM总信号,这只是第一步工作,由于初学msp430,估计这段程序忽视了某些东西,如果有高人写过类似程序,跪求啊!!!
    微控网感谢您的参与
    Powered by LeadBBS 9.2 .
    Page created in 0.0947 seconds with 6 queries.