6577|16

215

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

求大神指导 G2553 用PWM控制led的程序问题。 [复制链接]

我是想通过P1.3的按键控制P1.0口接的led的光强。实现步进调节的功能。小弟刚接触430几天,英语不好,手册看的头大。。
贴下程序看下哪里有问题。

好像现在是按键可调,但不是步进调节,光强是乱变的。
在这小弟先谢过大神了。


#include  

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  
  P1DIR &=~BIT3;       //P1.3作为按键输入
  P1IE |= BIT3;                         // P1.3 interrupt enabled
  P1IES |= BIT3;                          // P1.3 Hi/lo edge
  P1REN |= BIT3;                          // P1.3 pullup
  
  P1DIR |= BIT0;                            // P1.0 output
  P1OUT |= BIT0;
  
  CCTL2 = CCIE;                             // CCR2 interrupt enabled
  CCR2 = 10;
  CCR0 = 100;
  TACCTL2 |= OUTMOD_4;
  TACTL = TASSEL_2 + MC_3;//+ID0+ID1;                  // SMCLK, Contmode

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

// Timer_A3 Interrupt Vector (TA0IV) handler
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{
  switch( TA0IV )
  {
  case  4:                                  // CCR1
    {
    P1OUT ^= 0x01;                          // Toggle P1.0
    }
           break;
  case  2: break;                           // CCR2 not used
  case 10: break;                           // overflow not used
}
}

#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
  if (P1IFG & BIT3==BIT3)
  {
    P1IFG = 0x00;
    CCR2+=10;
    if (CCR2>100) CCR2=10;
  }
  else P1IFG = 0x00;
}

最新回复

童鞋 能 把 你 做的这用 G2553用PWM控制LED的资料(程序 和 硬件的连接图) 发我给 我 看下嘛  我 也是刚接触这MSP430 想通过实例来学习着  详情 回复 发表于 2013-7-20 11:49

点评

你是想按一下按键递进一级呢? 还是长按按键递进? 两种做法程序思路不一样。 按一下递进需要做按键释放检测。 长按递进需要设定递进时间长度,既按多久才会递进一级。 以上观点仅供参考。  详情 回复 发表于 2013-7-15 12:22
 
点赞 关注

回复
举报

6040

帖子

195

TA的资源

版主

沙发
 
你这不是pwm调光,是乱调,稍微理顺下思路再写程序吧
 
 

回复

6040

帖子

195

TA的资源

版主

板凳
 
应该是ccr2溢出时置led,ccr0溢出时清led,你试试。

点评

刚刚开始看user guide。英语看的我头大。用复用功能可以写得好但是不能调。?先谢谢了。  详情 回复 发表于 2013-7-15 18:49
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

4
 
为何不直接使用IO引脚的复用功能?PWM能够直接通过引脚输出不需要软件中断处理的呀。具体哪个引脚,看G2553的数据手册,设置相应的PxSELy
 
 
 

回复

4008

帖子

0

TA的资源

版主

5
 
Port_1函数不受时间控制啊
 
 
 

回复

755

帖子

0

TA的资源

五彩晶圆(初级)

6
 

回复 楼主a828378 的帖子

你是想按一下按键递进一级呢?

还是长按按键递进?

两种做法程序思路不一样。

按一下递进需要做按键释放检测。

长按递进需要设定递进时间长度,既按多久才会递进一级。

以上观点仅供参考。

点评

我是想按一下一个下降沿,就调一下。430不是边沿触发中断的。?还需要释放检测吗。?  详情 回复 发表于 2013-7-15 18:50
 
 
 

回复

672

帖子

0

TA的资源

版主

7
 
楼主晚上三点多还在调,精神可嘉!
楼上几位解答了,楼主试试看
 
 
 

回复

215

帖子

0

TA的资源

一粒金砂(高级)

8
 

回复 板凳lcofjp 的帖子

刚刚开始看user guide。英语看的我头大。用复用功能可以写得好但是不能调。?先谢谢了。
 
 
 

回复

215

帖子

0

TA的资源

一粒金砂(高级)

9
 

回复 6楼deweyled 的帖子

我是想按一下一个下降沿,就调一下。430不是边沿触发中断的。?还需要释放检测吗。?
 
 
 

回复

215

帖子

0

TA的资源

一粒金砂(高级)

10
 
小弟比较爱熬夜,白天爱睡觉。


#include  

int f=500;
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  
  P1DIR &=~BIT3;       //P1.3作为按键输入
  P1IE |= BIT3;                         // P1.3 interrupt enabled
  P1IES |= BIT3;                          // P1.3 Hi/lo edge
  P1REN |= BIT3;                          // P1.3 pullup
   
  P1DIR |= BIT6;
  P1SEL |= BIT6;
  
  CCR1 = 7900;
  CCR0 = 8000;
  TACCTL1 |= OUTMOD_2;
  TACTL = TASSEL_2 + MC_1;//+ID0+ID1;                  // SMCLK, Contmode

  while (1) {
    _BIS_SR(LPM1_bits + GIE);                 // Enter LPM1 w/ interrupt
  }
}


#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
  if (P1IFG & BIT3==BIT3)
  {
    P1IFG &=~BIT3;
    CCR1 = CCR1+1000;
    if (CCR1>8000) CCR1=500;
    TACTL = TASSEL_2 + MC_1;
  }
  else P1IFG = 0x00;
}

接在P1.3的按键我想让他按一下就能使CCR1递增1000,从而实现步进调光。但为什么按了好像没用。问问各位大神了。
先谢过大家

点评

您好,10楼的程序基本是OK了,问题可能出在 if (P1IFG & BIT3==BIT3) 这句,改成if ((P1IFG & BIT3)==BIT3)或者if (P1IFG & BIT3); == 的优先级 大于 &,导致按键得不到响应,所以如果你仿真的话,应该可以看到。  详情 回复 发表于 2013-7-16 21:47
 
 
 

回复

6040

帖子

195

TA的资源

版主

11
 
如果今晚有时间,我帮你写一个。

点评

谢谢了。能生成pwm波形。可是帮忙看下10L的程序。为什么不能实现步进。?谢谢了先。  详情 回复 发表于 2013-7-16 20:07
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

12
 
建议看一下PWM的例程~  CCS里430Ware自带~
 
 
 

回复

215

帖子

0

TA的资源

一粒金砂(高级)

13
 

回复 11楼lcofjp 的帖子

谢谢了。能生成pwm波形。可是帮忙看下10L的程序。为什么不能实现步进。?谢谢了先。
 
 
 

回复

6040

帖子

195

TA的资源

版主

14
 

回复 10楼a828378 的帖子

您好,10楼的程序基本是OK了,问题可能出在
if (P1IFG & BIT3==BIT3) 这句,改成if ((P1IFG & BIT3)==BIT3)或者if (P1IFG & BIT3);
== 的优先级 大于 &,导致按键得不到响应,所以如果你仿真的话,应该可以看到。
我没太注意你10楼的程序,另外开了个帖子,不好意思。
https://bbs.eeworld.com.cn/thread-376072-1-1.html

点评

果然是这个问题。以前是编程序倒还没注意过这个优先级。另外谢谢你的那个帖子了。受教了正在学习^。^ 万分感谢。  详情 回复 发表于 2013-7-17 00:19
 
 
 

回复

215

帖子

0

TA的资源

一粒金砂(高级)

15
 

回复 14楼lcofjp 的帖子

果然是这个问题。以前是编程序倒还没注意过这个优先级。另外谢谢你的那个帖子了。受教了正在学习^。^
万分感谢。
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

16
 
童鞋 能 把 你 做的这用 G2553用PWM控制LED的资料(程序 和 硬件的连接图) 发我给 我 看下嘛  我 也是刚接触这MSP430 想通过实例来学习着

点评

程序的话你看14L的帖子,硬件我就是用launchpad上面的led的没什么连接的事。  详情 回复 发表于 2013-7-29 09:49
 
 
 

回复

215

帖子

0

TA的资源

一粒金砂(高级)

17
 

回复 16楼leihonglun 的帖子

程序的话你看14L的帖子,硬件我就是用launchpad上面的led的没什么连接的事。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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