5969|11

6040

帖子

205

TA的资源

版主

楼主
 

msp430FR5739最后一贴:PWM控制LED的测试 [复制链接]

我的测试证明,MSP430FR5739中的PxSELC寄存器是个废品,没有意义的存在着。

不知手中有5739板子的同僚们,你们的PxSELC是否起作用了呢?

我的结论并不权威,甚至可能是谬论,不知道坛子里是否有权威人士出来解释一下,是我不会用还是这个片子确实存在这样的问题,强烈要求TI的专家出来给个解释。

举个例子:

按手册的描述,PxSELC是用来同时置位PxSEL0和PxSEL1的

例如可以用P2SELC |= BIT0;来代替下面这两句

P2SEL0 |= BIT0;

P2SEL1 |= BIT0;

但实际情况操作PxSELC却没有任何的反应。(测试环境:IAR for MSP430 5.30)

 

言归正传,我写了个用TB2产生PWM控制LED8的测试程序,让LED8一闪一闪。

FR5739共有5个Timer(TA0,TA1,TB0,TB1,TB2),每个Timer包含3个捕获/比较寄存器,作为比较寄存器的时候,可以用来PWM输出,一般每个定时器有可以有两路PWM输出。夜深了,不多写了,上程序了。

/*******************************************************************************
* Author  : lcofjp
* Date   : 2011-12-11
* Description : test the EXP430FR5739 board
*******************************************************************************/

#include <msp430.h>


void main( void )
{
 // Stop watchdog timer to prevent time out reset
 WDTCTL = WDTPW + WDTHOLD;
 
 CSCTL0_H = 0xA5;
 CSCTL1 |= DCOFSEL0 + DCOFSEL1;             // Set max. DCO setting
 CSCTL2 = SELA_1 + SELS_3 + SELM_3;        // set ACLK = VLO; MCLK = DCO
 CSCTL3 = DIVA_0 + DIVS_3 + DIVM_3;        // set all dividers
 
 //init LED, TB2.2 / LED8
 P3SEL1 &= ~BIT7;
 P3SEL0 |= BIT7;
 P3DIR |= BIT7;
 //init TB2
 TB2CCTL0 = CCIE;                          // TB2CCR0 interrupt enabled
 TB2CCTL2 = OUTMOD_3;       // Set/Reset Mode
 TB2CCR0 = 1000;
 TB2CCR2 = 1;
 TB2CTL = TBSSEL_2 + MC_1;                 // SMCLK, up mode
 __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0 w/ interrupt
}

#pragma vector = TIMER2_B0_VECTOR
__interrupt void TIMER2_B0_ISR(void)
{
 static int cnt = 1, dir = 0;
 //dir: 0, increase; 1, decrease
 if (dir)//decrease
 {
  TB2CCR2 = --cnt;
  if (cnt == 0)
   dir = 0;
 }
 else
 {
  TB2CCR2 = ++cnt;
  if (cnt == 1000)
   dir = 1;
 }
}

最新回复

[attach]158866[/attach] 你看,TI的手册里面说了   详情 回复 发表于 2014-7-14 13:12
 
点赞 关注

回复
举报

424

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
呼吸灯的功能?
 
 

回复

6040

帖子

205

TA的资源

版主

板凳
 

回复 沙发 鸵鸟蝈蝈 的帖子

哦,原来这叫呼吸灯,受教了。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(中级)

4
 
 
 
 

回复

400

帖子

0

TA的资源

五彩晶圆(中级)

5
 
1. 我刚验证了这个功能,是正确的。

2. 我不能确定你验证P2SELC 的方法是否正确,还是你的理解有误,你能把你验证的方法贴出来吗?

3. 另外,你可以加我QQ:
906411450,
 
 
 

回复

6040

帖子

205

TA的资源

版主

6
 

回复 5楼 Triton.zhang 的帖子

//举个最简单的例子,让P2.0输出ACLK时钟(VLO),下面的程序是正确的,但是我想用P2SELC|=BIT0来代替P2SEL0 |= BIT0;和P2SEL1|=BIT0;却没有任何的效果。不知道您操作过PxSELC寄存器吗,该怎么使用?
#include "msp430fr5739.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT  
  
  CSCTL0_H = 0xA5;
  CSCTL1 |= DCOFSEL0 + DCOFSEL1;             // Set max. DCO setting
  CSCTL2 = SELA_1 + SELS_3 + SELM_3;        // set ACLK = MCLK = DCO
  CSCTL3 = DIVA_0 + DIVS_0 + DIVM_0;        // set all dividers
   

  P2OUT = 0;                                // output ACLK
  P2DIR |= BIT0;
//  P2SELC |= BIT0;
  P2SEL1 |= BIT0;
  P2SEL0 |= BIT0;
  
  while(1);
}
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 6楼 lcofjp 的帖子

你在两句中间加一段延时就可以了
 
 
 

回复

6040

帖子

205

TA的资源

版主

8
 

回复 7楼 yuejunwei1989 的帖子

哪两句中间加延时?你试过PXSELC好使吗?
 
 
 

回复

6040

帖子

205

TA的资源

版主

9
 

回复 7楼 yuejunwei1989 的帖子

你能给我来一段好使的程序吗,让我看看效果。
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

10
 
是你的程序出的问题,上面那个输出时钟信号的程序改了一下,P2SELC是两位的,你那样设置当然不行了。你试试看看下面的程序
#include "msp430fr5739.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT  
  
  CSCTL0_H = 0xA5;
  CSCTL1 |= DCOFSEL0 + DCOFSEL1;             // Set max. DCO setting
  CSCTL2 = SELA_1 + SELS_3 + SELM_3;        // set ACLK = MCLK = DCO
  CSCTL3 = DIVA_0 + DIVS_0 + DIVM_0;        // set all dividers
   

  P2OUT = 0;                                // output ACLK
  P2DIR |= BIT0;
  P2SELC |=(BIT0+BIT1);
  //SEL1 |= BIT0;
  //SEL0 |= BIT0;
  
  while(1);
}
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
各位前辈 ,MSP430FR5739有没有数模转换??

点评

[attachimg]158866[/attachimg] 你看,TI的手册里面说了  详情 回复 发表于 2014-7-14 13:12
 
 
 

回复

1412

帖子

15

TA的资源

版主

12
 
593705149 发表于 2014-7-14 10:01
各位前辈 ,MSP430FR5739有没有数模转换??



你看,TI的手册里面说了

 
个人签名https://bbs.eeworld.com.cn/thread-471646-1-1.html
欢迎加入我的团队
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表