搜索
bottom↓
回复: 12

请教一个关于430定时器的问题,高手进来看看

[复制链接]

出0入0汤圆

发表于 2011-4-14 22:17:42 | 显示全部楼层 |阅读模式
源程序如下:
#include  "msp430x42x.h"
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                       // 停止看门狗
  FLL_CTL0 |= XCAP18PF;                         // 配置晶振负载电容
  P1DIR |= BIT3;                       
  TACTL |= TASSEL_1 + MC_2+TAIE;  //选择ACLK,连续模式
  TAR=65536-3277;                  
  _EINT();
  LPM3;
}

#pragma vector=TIMERA1_VECTOR
__interrupt void TACCR1_ISR(void)              // 计至TACCR0中断
{
  TAR=65536-3277;       
  
  P1OUT ^= BIT3;  //灯闪烁
  }

想利用定时器A的溢出中断定时闪烁的,但是程序下进去灯一直亮,不知道怎么回事,加上TACCTL0|=CCIE;灯就可以闪了。按理说主计数器可以溢出中断的,跟捕获比较没关系的。期待高手解答

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-4-15 00:23:58 | 显示全部楼层
中断程序内要清掉中断标志位,否则中断退出后又马上进入。

TACTL &= ~TAIFG;

TAIFG 不会自动清零。

出0入0汤圆

 楼主| 发表于 2011-4-15 07:53:19 | 显示全部楼层
响应中断后可以自动清除的

出0入0汤圆

发表于 2011-4-15 09:18:21 | 显示全部楼层
回复【2楼】cike
-----------------------------------------------------------------------

MSP430只有CCR0的中断(它的优先级最高)可以自动清除,TAR计数溢出的中断需要手动或者访问TAIV时可以被清除。
你用下面程序试试,F2013的(手头没有F42x),定时100us左右。

#include <msp430x20x3.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |= 0x01;                            // P1.0 output
  TACTL = TASSEL_2 + MC_2 + TAIE;           // SMCLK, contmode, interrupt
  TAR=65536-100;

  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}

// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
  TAR=65536-100;
  switch( TAIV )
  {
    case  2: break;        // CCR1 not used
    case  4: break;        // CCR2 not used
    case 10: P1OUT ^= 0x01;// overflow
            break;
  }
}

出0入0汤圆

发表于 2011-4-15 10:15:45 | 显示全部楼层
【3楼】 wanpujame 说得对,只要在中断内访问一次TAIV,或用软件清掉TAIFG,都能达到目的。你看到灯一直亮,是因为不断的执行中断服务程序,灯闪的频率太高。

出0入0汤圆

 楼主| 发表于 2011-4-15 14:06:13 | 显示全部楼层
恩,调试通了,终于弄懂了,谢谢各位大牛了。。。。

出0入0汤圆

发表于 2011-7-13 09:23:27 | 显示全部楼层
mark;

出0入0汤圆

发表于 2011-7-13 11:57:38 | 显示全部楼层
这么复杂啊 比51复杂多了

出0入0汤圆

发表于 2011-7-16 00:51:51 | 显示全部楼层
mark,学习中

出0入0汤圆

发表于 2011-8-21 10:36:10 | 显示全部楼层
多源中断,必须清标志

出0入0汤圆

发表于 2011-9-9 21:38:35 | 显示全部楼层
对, 我原来 以为加个 CCIE.... 原来是中断标志位的问题...

出0入0汤圆

发表于 2012-5-3 19:41:49 | 显示全部楼层
明白了 赶紧试试 正发愁这个东西呢!我说用示波器看波形怎么总是不对!
头像被屏蔽

出0入0汤圆

发表于 2012-5-4 08:30:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-28 12:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表