在线情况
楼主
  • 头像
  • 级别
    • 积分6
    • 经验178
    • 文章12
    • 注册2010-11-29
    对定时器连续计数模式的不理解,请老师们指教!
    刚入手430,对定时器诸多不解

    增计数模式好理解 计数到TCCR0,CCIFG置位,之后+1 回到0 TAIFG置位,进入
    #pragma vector=TIMERA0_VECTOR
       __interrupt void Timer_A0 (void)  

    但是在边续模式下,不理解,,,计数从0----FFFF,然后+1 回到0  TAIFG置位,,,也这就是这只要时钟固定了,这个定时时间是不变的,也就是每次进入中断的时间是不变的,

    看示例程序为什么还要设置TCCR0,又有什么意义呢..0 计数到 TCCRO,只是产生一个比较中断,又不能进入定时中断,,,,不明白这个TCCR0是什么意思在这
    //***********************************************************************
    设MCLK=SMCLK=TACLK=DCO=800K,将P1.0每隔50000个DCO周期取反,产生16HZ方波

    #include <msp430x20x3.h>
    void main(void)
    {
      WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
      P1DIR |= 0x01;                            // P1.0 output
      CCTL0 = CCIE;                             // CCR0 interrupt enabled
      CCR0 = 50000;
      TACTL = TASSEL_2 + MC_2;                  // 连续计数模式
      _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
    }

    #pragma vector=TIMERA0_VECTOR
    __interrupt void Timer_A (void)
    {
      P1OUT ^= 0x01;                            // Toggle P1.0
      CCR0 += 50000;                            // Add Offset to CCR0 ////////////
    }


    问题1:怎么产生16HZ方波呢,,,,,这是定时器中断呀,并不是比较中断呀,只有计数到了65536才进入中断,才取反的呀??

    问题2:CCR0 += 50000; 溢出了??? 是否是进入中断后CCR0=0了,。然后再付值

    问题3:计数器是否是从 当前值50000,然后继续计数--FFFF,回到0,,那它怎么产生的相同的时间间隔呢。明明多了个65536-50000的时间呀!!


    最近被它搞的很郁闷,难道它是从0---50000,进入中断,然后因为 CCR0 += 50000,再计数50000个,那这样的话就和增计数模式一样了吗?,,那计到FFFF清0,有什么意思呢???越搞越糊涂
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
      • 积分6
      • 经验178
      • 文章12
      • 注册2010-11-29
      DC老师呀,,,,你的这个意思我理解,我上面也说了,难不成它还有记忆功能,

      但它进入中断的条件是由0到FFFF,要计数满了才进中断的呀,,,按你比方,,,,初值6  加到10 进入中断,然后再+6的呀..第一个即使加到6,它也进不了中断呀.


      那我要是实现 偏移量为4的的呢,不是不行吗,,4 8 都小于10,都进不了中断的呀 

      头大!!
      微控网感谢您的参与
      Powered by LeadBBS 9.2 .
      Page created in 0.0938 seconds with 6 queries.