4326|18

24

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

下面的代码我觉得没有错啊,可是就是没有方波产生? [复制链接]

include  <msp430g2231.h>

unsigned int flag = 0;
void main()
{
    WDTCTL = WDTPW +WDTHOLD;   //STOP WDT
   // FLL_CTL0 |= XCAP14PF;   //匹配14PF的负载电容
    P1SEL &= ~BIT5;      
    P1DIR |= BIT5; 
    TACTL = TASSEL1 + TACLR ; 
    TACCTL0 = CCIE;
    TACCR0 = 1748;
    TACTL |= MC0;
    _EINT();
    while (1) {    LPM0;    }
}

# pragma vector = TIMERA0_VECTOR
__interrupt void TimerA0_ISR(void)
{
    P1OUT ^= BIT5;
    flag++;
}

我用flag作为标志,发现并没有进入中断,为什么啊?哪里错了?

最新回复

G2553和G2231的资源是不一样的,G2553功能更多一些,楼主可以参考2012年MSP430的最新选型指南  详情 回复 发表于 2012-8-7 12:34

点评

目测你没有设置TA的计数模式~#include <msp430g2553.h>void main(void){  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT  P1DIR |= BIT0; &nbs  详情 回复 发表于 2012-7-10 10:48
 
点赞 关注

回复
举报

437

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
原帖由 benni 于 2012-7-10 10:32 发表 include  unsigned int flag = 0;void main(){    WDTCTL = WDTPW +WDTHOLD;   //STOP WDT   // FLL_CTL0 |= XCAP14PF;   //匹配14PF的负载电容    P1 ...

目测你没有设置TA的计数模式~

#include <msp430g2553.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |= BIT0;                            // P1.0 output
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 50000;
  TACTL = TASSEL1 + TACLR + MC_2;
  //TACTL = TASSEL_2 + MC_2;                  // SMCLK, contmode

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

// Timer A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
  P1OUT ^= BIT0;                            // Toggle P1.0
  CCR0 += 50000;                            // Add Offset to CCR0
}

点评

为什么调试时,好像没有进入中断似的,那个flag一直都是保持0值~~求救啊~~~  详情 回复 发表于 2012-7-10 11:03
TACTL |= MC0; 这个不是增计数模式吗?  详情 回复 发表于 2012-7-10 10:57
 
个人签名
 

回复

437

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
TACTL |= MC0;
是停止计数……

点评

TACTL |= MC0; 这不是增计数模式吗?  详情 回复 发表于 2012-7-10 10:57
 
个人签名
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 沙发 juring 的帖子

TACTL |= MC0;
这个不是增计数模式吗?

点评

同学~  详情 回复 发表于 2012-7-10 11:06
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 板凳 juring 的帖子

TACTL |= MC0;
这不是增计数模式吗?
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 沙发 juring 的帖子

为什么调试时,好像没有进入中断似的,那个flag一直都是保持0值~~求救啊~~~
 
 
 

回复

437

帖子

0

TA的资源

五彩晶圆(初级)

7
 
原帖由 benni 于 2012-7-10 10:57 发表 TACTL |= MC0; 这个不是增计数模式吗?

同学~

点评

我改着 TACTL = TASSEL1 + TACLR + MC_1; 还是不行哦,这怎么回事啊~  详情 回复 发表于 2012-7-10 13:04
 
个人签名
 
 

回复

437

帖子

0

TA的资源

五彩晶圆(初级)

8
 
你计数器不工作怎么进中断呢?
 
个人签名
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 7楼 juring 的帖子

我改着    TACTL = TASSEL1 + TACLR + MC_1;
还是不行哦,这怎么回事啊~
 
 
 

回复

437

帖子

0

TA的资源

五彩晶圆(初级)

10
 
我改着 TACTL = TASSEL1 + TACLR + MC_1;

我确定没问题

点评

对啊 ,我也觉得没什么问题啊,可是我用示波器连在p1.5口看不到方波,是杂乱的波,,调试时好像没有进入中断,是不是哪里没有设置好啊~我用的是msp430g2231的  详情 回复 发表于 2012-7-10 13:14
 
个人签名
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

11
 

回复 10楼 juring 的帖子

对啊 ,我也觉得没什么问题啊,可是我用示波器连在p1.5口看不到方波,是杂乱的波,,调试时好像没有进入中断,是不是哪里没有设置好啊~我用的是msp430g2231的

点评

不好意思 我原来用的是2553 2231我试过了,程序没问题啊 #include “msp430g2231.h” void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1SEL &= ~BIT5; P1DIR |  详情 回复 发表于 2012-7-10 19:21
 
 
 

回复

437

帖子

0

TA的资源

五彩晶圆(初级)

12
 
我的程序没问题,你看看你中断向量是不是写错了~

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1SEL &= ~BIT5;
  P1DIR |= BIT5;                            // P1.0 output
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 50000;
  TACTL = TASSEL1 + TACLR + MC_1;
  //TACTL = TASSEL_2 + MC_2;                  // SMCLK, contmode
  TACCTL0 = CCIE;
  _EINT();
  while(1){

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

  }
}

// Timer A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
  P1OUT ^= BIT5;                            // Toggle P1.0
//  CCR0 += 50000;                            // Add Offset to CCR0
}

点评

我也试着这样改了,可是我发现头文件里就是我那样写的中断矢量,没有错啊,改着你那就出错了~  详情 回复 发表于 2012-7-10 13:42
 
个人签名
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

13
 

回复 12楼 juring 的帖子

我也试着这样改了,可是我发现头文件里就是我那样写的中断矢量,没有错啊,改着你那就出错了~
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

14
 
我还没仔细看,关于MC0和MC_0是不一样的
MC0  ----〉01
MC1  ----〉10

MC_0 —>00
MC_1 —>01
MC_2 —>10
MC_3 —>11
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

15
 
你先把断点设在中断里,看看到不到断点看过吧?
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

16
 
project  option不会没有设置过吧?
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

437

帖子

0

TA的资源

五彩晶圆(初级)

17
 

回复 11楼 benni 的帖子

不好意思 我原来用的是2553

2231我试过了,程序没问题啊

#include  “msp430g2231.h”

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1SEL &= ~BIT5;
  P1DIR |= BIT5;                            // P1.5 output
  TACTL = TASSEL1 + TACLR;                  // SMCLK, contmode
  TACCTL0 = CCIE;                             // CCR0 interrupt enabled
  TACCR0 = 1748;
  TACTL |= MC0;

  _EINT();
  while (1)
  {
          LPM0;
  }                // Enter LPM0 w/ interrupt
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P1OUT ^= BIT5;                            // Toggle P1.0
}

可以进中断

[ 本帖最后由 juring 于 2012-7-10 19:22 编辑 ]
 
个人签名
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

18
 
看看2231的Device Erratasheet里面有没有相关的,好像有提到过定时器的
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

312

帖子

0

TA的资源

纯净的硅(高级)

19
 
G2553和G2231的资源是不一样的,G2553功能更多一些,楼主可以参考2012年MSP430的最新选型指南
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表