[求助] 利用TIMERA产生中断让P1.6每隔1ms闪烁一次问题

WPD   2013-5-2 21:57 楼主
本人想用定时器A每1ms产生产生一个中断,让P1.6电平转换,从而是LED2每隔1ms闪烁一次
#include "msp430g2553.h"
int main( void )
{
  // Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
  P1DIR=0x40;
  P1OUT=0x00;
  DCOCTL=0;
  BCSCTL1=CALBC1_1MHZ;
  DCOCTL=CALDCO_1MHZ;                                //设置DCO为1MHZ
  BCSCTL2 = SELM_1;                                      //主时钟和从时钟都选择DCOCLK
  TACCTL0 = CCIE;                                               //CCR0中断使能
  TACCR0 = 1000;                                              //设置定时器A每1ms中断一次
  TACTL |= TASSEL_2 + ID_0+MC_1;          //设置定时器A的时钟源为MCLK,并设置为不分频(1MHZ),增计数模式
//打开全局中断
    _EINT();
    while(1)
    {
     }

}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void TimerA_ISR(void)
{
    P1OUT^=0x40;                  //电平翻转
TACCTL0&=~CCIFG;         //清除中断标志位   
}

然后下载到板子上测试发现LED2的灯一直亮着,即P1.6一直是高电平
偶尔我把上面的一句代码 BCSCTL2 = SELM_1;                                      //主时钟和从时钟都选择DCOCLK
改成 BCSCTL2 = SELM_1+0x08;                                      //主时钟选择DCOCLK,辅助时钟选择高频晶振
LED2灯闪烁了,这就奇怪了,我没有外接高频晶振的,但辅助时钟选择高频晶振反而使程序对了,难道辅助时钟选择DCOCLK会出问题的?这没有道理的,本人很是疑惑,希望懂的人能详细解答下,十分感谢!

[ 本帖最后由 WPD 于 2013-5-2 21:59 编辑 ]

回复评论 (6)

1ms取反一次
楼主你确定你的眼睛能分辨500Hz的闪烁?
板子上两个led似乎是不同颜色的吧?如果是相同颜色你可以把一个直接接高电平,看两个亮度是否一样.
最好的方法还是用示波器测一下波形,看是否有波形.
没有示波器,请将万用表调至交流档测一下P1.6,看是否有信号.
没有万用表. 我也没办法了..
点赞  2013-5-2 23:18
同意楼上,楼主的1ms真的太快了,你可以试着把时间设长一些。估计效果就出来了。还有,你选择的高频振荡器的频率应该没DCO高,所以能直观地看到LED闪烁。。
点赞  2013-5-2 23:25
QQ截图20130502232204.jpg
你加了0x08 就是将BIT3 置1了,使用了VLOCLK,见下图
QQ截图20130502232334.jpg
vloclk是12khz的,所以你的时钟为83.3us,
翻转时间则变成了83.3*1000=83.3ms, 约为12Hz, 低于25Hz,人眼可以分辨
点赞  2013-5-2 23:27
顺便修整个错误
  1. TACTL |= TASSEL_2 + ID_0+MC_1;          //设置定时器A的时钟源为MCLK,并设置为不分频(1MHZ),增计数模式
TASSEL2是选择定时器时钟为SMCLK, MCLK是不可能给timer做时钟源的
点赞  2013-5-2 23:36

6楼 WPD 

十分感谢上面几楼的回答,确实如此,我把1000改成50000(50ms)之后,确实能看到闪烁了,1ms确实太快了,肉眼分辨不出来,“TASSEL2是选择定时器时钟为SMCLK, MCLK是不可能给timer做时钟源的,vloclk是12khz的,所以你的时钟为83.3us, 翻转时间则变成了83.3*1000=83.3ms, 约为12Hz, 低于25Hz,人眼可以分辨”,解决了我的疑惑!
点赞  2013-5-2 23:57

qww

示波器测试之后  以上回复正确
点赞  2013-6-5 21:29
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复