刚入手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,有什么意思呢???越搞越糊涂 |