打印

MSP430低功耗问题

[复制链接]
923|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cyy11424|  楼主 | 2014-7-23 11:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
遇到一个问题,我想设计一个循环程序,系统先进入低功耗模式,工作时间为5s,再进入中断程序,唤醒CPU,执行ADC,时间为5S;这里低功耗模式的工作时间怎么都没办法设定,这个怎么做啊

相关帖子

沙发
dirtwillfly| | 2014-7-23 11:28 | 只看该作者
可以设定啊,用定时器每5s唤醒一次,执行5s之后,再进入低功耗模式

使用特权

评论回复
板凳
ar_m_cu| | 2014-7-23 14:50 | 只看该作者
定时器很容易实现的

使用特权

评论回复
地板
cyy11424|  楼主 | 2014-7-23 14:55 | 只看该作者
我的理解是给定时器的CCRO设定一个初值,计数一旦到达这个初值(时间是1S),定时器就会进入中断,在中断服务程序里面计时5S,但是CPU不是会被中断唤醒吗,一旦唤醒就不在低功耗模式了,也就是说在一旦定时器CCRO等于了初值,低功耗模式就会结束。我的理解正确吗

使用特权

评论回复
5
cyy11424|  楼主 | 2014-7-23 15:02 | 只看该作者
程序如下:
main()
{
.......
//Timer_A初始化
  TA0CCTL0 = CCIE;                          // CCR0 interrupt enabled
  TA0CCR0 = 32768;
  TA0CTL = TASSEL_1 + MC_1 + TACLR;  // ACLK, contmode, clear TAR
  
    _EINT(); //打开全局中断
   while(1)
  {
   LPM3;
  P4OUT=BIT1;//LED1判断执行了LPM3命令
  }
}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{
static int Time=0;
if(Time==5)
{
  LPM3_EXIT;//退出LPM3中断
   Time=0;

}
else
{
   Time++;
   P4OUT=BIT2; //LED2亮5S
}
}

现象是LED1亮1s左右,然后LED2亮5S,循环如此;这个程序的问题在哪。

使用特权

评论回复
6
dirtwillfly| | 2014-7-23 22:03 | 只看该作者
cyy11424 发表于 2014-7-23 15:02
程序如下:
main()
{

问题很多。
最主要的是思路有问题

使用特权

评论回复
7
cyy11424|  楼主 | 2014-7-24 10:04 | 只看该作者
啊,求解释

使用特权

评论回复
8
dirtwillfly| | 2014-7-24 11:18 | 只看该作者
cyy11424 发表于 2014-7-24 10:04
啊,求解释

msp430的低功耗应用,一般是:
有中断发生时,从低功耗唤醒单片机,处理产生中断后的事情,处理完毕后,在中断服务程序最后,进入低功耗状态。从而形成一个循环,而不是用while(1)循环

使用特权

评论回复
9
cyy11424|  楼主 | 2014-7-24 11:31 | 只看该作者
这样啊,那我试试

使用特权

评论回复
10
shenmu2012| | 2014-7-24 21:21 | 只看该作者
关于其低功耗的使用的,我觉得还是多看看基础性资料的吧。

使用特权

评论回复
11
shenmu2012| | 2014-7-24 21:21 | 只看该作者
这个控制思路是有些问题的啦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

12

帖子

0

粉丝