历史上的今天
返回首页

历史上的今天

今天是:2025年01月23日(星期四)

正在发生

2020年01月23日 | MSP430低功耗模式-while循环失效

2020-01-23 来源:eefocus

如下代码实现MSP430G2553单片机两个led交替闪烁


#include  

/**

 * main.c

 */

int main(void)

{

WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer

P1DIR|=BIT0+BIT6;

P1OUT|=BIT0;

while(1)

{

    unsigned int i;

    i=50000;

    while(i--);

              P1OUT^=BIT0+BIT6;

}

}

发现灯光显示异常两灯常亮。


为什么呢?在老师帮助下了解了是因为Msp430这款板子默认的低功耗模式导致了cpu不干预而使这种while(i--)的空循环失效。


MSP430G2553单片机有6种功耗模式如下:

1、活动模式-----AM


正常的工作模式,这时CPU消耗的电能最大.


2、低功耗模式0-----LPM0


CPUOff置位,CPU停止活动,但外围模块继续工作,ACLK和MCLK信号保持活动,MCLK的锁频坏控制正常工作.有关控制位设置为:SCG0=0,SCG1=0,OscOff=0,CPUOff=1。


3、低功耗模式1-----LPM1


CPUOff置位,CPU停止活动,但外围模块继续工作,MCLK的锁频环控制停止工作,ACLK与MCLK保持活动,有关控制位设置为:SCG0=0,SCG1=1,OscOff=0,CPUOff=1。


4、低功耗模式2-----LPM2


CPUOff置位,CPU停止活动,但外围模块继续工作,MCLK的锁频环控制停止,ACLK活动,MCLK停止,有关控制位设置为:SCG0=0,SCG1=1,OscOff=0,CPUOff=1。


5、低功耗模式3-----LPM3


CPUOff置位,CPU停止活动,但外围模块继续工作,MCLK的锁频环控制和MCLK停止工作,DCO的DC发生器关闭,但ACLK信号仍保持活动,有关控制位设置为:SCG0=1,SCG1=1,OscOff=0,CPUOff=1。


6、低功耗模式4-----LPM4


CPUOff置位,CPU停止活动,但外围模块继续工作,MCLK的锁频环控制和MCLK停止工作,晶振停止,有关控制位设置为:SCG0=x,SCG1=x,OscOff=1,CPUOff=1。


处理器进入低功耗模式以后,一般由中断来唤醒。可以是外部中断,也可以是内部的定时器等中断。


而具体到上述问题从TI网站上查到相应的资料:翻译后如下

MSP430提供各种类型的定时器和时钟,可配置为无需CPU干预即可运行。当需要延迟时,可以利用其中一个定时器外设来产生这种延迟,而CPU不会保持活动状态。该方法显着降低了设备的功耗。这些定时器可使MSP430微控制器保持低功耗模式,直到定时器唤醒CPU。


风险,严重程度

在微控制器中,CPU是整体功耗的最大贡献者。当应用程序执行延迟时,如果CPU保持活动模式,则会浪费大量的功率和能量。


为什么会这样

当在项目中的任何代码文件中发现延迟时,将发出此注释。

检查代码中是否包含仅包含以下任一行的循环,而不包含任何其他代码:


 __no_operation();

 _NOP();

任何空循环。例如:


 volatile int i = MAX_VALUE;

 而(i--> 0);

 出现这种情况://上述问题所在

 __delay_cycles(NUMBER_OF_CYCLES);

补救

利用其中一种MSP430低功耗模式,并使用MSP430器件中的一个定时器模块在一段时间后唤醒。

代码示例

 // ********* ******************************

 // MSP430G2xx3演示 -  Timer_A,切换P1.0,CCR0续。模式ISR,DCO SMCLK

 //

 //描述:使用软件和TA_0 ISR切换P1.0。切换每一个

 // 50000个SMCLK周期。 SMCLK为TACLK提供时钟源。

 //在TA_0 ISR期间,切换P1.0并添加50000个时钟周期

 // CCR0每50000个周期触发TA_0 ISR。 CPU通常是关闭的

 //仅在TA_ISR期间使用。

 // ACLK = n / a,MCLK = SMCLK = TACLK =默认DCO

 //

 // MSP430G2xx3

 // ---------------

 // / | | XIN |  - 

 // | | |

 //  -  | RST XOUT |  - 

 // | |

 // | P1.0 |  - > LED

 //

 // D. Dang

 #include

 void main(void)

 {

   WDTCTL = WDTPW + WDTHOLD; //停止WDT

   P1DIR | = 0x01; // P1.0输出

   CCTL0 = CCIE; //启用CCR0中断

   CCR0 = 50000;

   TACTL = TASSEL_2 + MC_2; // SMCLK,contmode

 

   _BIS_SR(LPM0_bits + GIE); //输入LPM0 w / interrupt

 }

 

 //定时器A0中断服务程序

 #pragma vector = TIMER0_A0_VECTOR

 __interrupt void Timer_A(void)

 {

   P1OUT ^ = 0x01; //切换P1.0

   CCR0 + = 50000; //将偏移添加到CCR0

 }


具体代码现在搞不太懂,但是大体上两种解决方法,第一用delay函数实现用时钟定时,第二个就是用中断进入其他的例如AM退出低功耗模式,然后就可以调用cpu来实现循环。

应该是这样,现在第一次学真的搞不来这些代码,只能这样了。

推荐阅读

史海拾趣

EDAL公司的发展小趣事

为了进一步巩固市场地位和提升技术实力,EDAL公司开始通过收购和合作的方式拓展业务。公司成功收购了几家在EDA领域具有领先地位的公司,获得了更多的技术专利和市场份额。此外,EDAL公司还与其他科技公司建立了战略合作关系,共同研发新技术、新产品,推动整个EDA行业的发展。

Daniel Woodhead公司的发展小趣事

为了进一步提升技术水平和市场竞争力,Daniel Woodhead公司开始寻求与国际知名企业的合作。公司与多家国际知名半导体制造商和电子产品生产商建立了战略合作关系,共同研发新技术、新产品。这些合作不仅为公司带来了先进的技术和理念,还拓宽了公司的国际视野和市场渠道。

Deltron / DEM Manufacturing公司的发展小趣事

DEM Manufacturing深知品牌对于企业发展的重要性。因此,公司注重品牌塑造和宣传,通过广告、公关等多种手段提升品牌知名度和美誉度。同时,公司还积极参与公益事业和社会活动,履行社会责任,树立了良好的企业形象。

CIF公司的发展小趣事

B公司原本是一家地区性的电子产品供应商,为了拓展国际市场,决定采用CIF交易模式。通过与国外客户的深入沟通和合作,B公司成功打开了多个海外市场。同时,B公司还积极参与国际电子产品展会,提升品牌知名度,进一步巩固了其在全球市场的地位。

Galaxy Microelectronics公司的发展小趣事

飞翼科技(FEIYI)在多个领域的发展均体现了其创新驱动的发展战略。无论是无人机技术的智能化应用,还是绿色矿山技术的创新突破,亦或是电容式触摸感应芯片的市场领先,都离不开公司对技术创新的不断追求。飞翼科技积极与高校、研究机构及行业专家开展合作,集聚顶尖科技人才,共同推动技术进步和产业升级。同时,公司还注重知识产权保护,拥有国家专利技术300余项,为企业的持续发展提供了有力保障。通过这些努力,飞翼科技在电子行业中不断崛起,成为行业内的佼佼者。

ABI Electronics公司的发展小趣事

为了进一步拓展业务,ABI Electronics公司开始积极寻求全球市场的布局。通过与各地的电子分销商、代理商建立合作关系,ABI的产品逐渐进入了全球各地的市场。同时,ABI还积极参加各类国际电子展会,展示其最新技术和产品,与全球同行建立了广泛的联系和合作。

问答坊 | AI 解惑

走上华为公司舞台的“80后” 青年

本帖最后由 paulhyde 于 2014-9-15 09:24 编辑 截至2007年6月30日,国内市场部出生于80年代的新员工已占总人数的三分之一。这些“80后”新员工,他们在中国社会改革的延续中出生,在与国际化的接轨中成长。他们个性鲜明、多元化,既延续了70年代的 ...…

查看全部问答>

verilog设计经验总结

本贴转自网络,不知原创于何处,粘贴于此:http://hi.baidu.com/icc%5Ffuzhou/blog/item/8c73b731e8ac821feac4afd5.html 其中有很多都是我在实际的fpga设计中用到的,比起书本来的实在,现在分享给大家: 先记下来: 1、不使用初始化语句; 2、 ...…

查看全部问答>

LPC2103学习版关于串口和并口问题的请教?

买了Z-TEK牌的串口和并口转USB线,串口的有驱动盘,并口的没有,结果是两根线连上开发板后,H-JTAG都检测不到芯片,这是为什么呀?急!…

查看全部问答>

WinCE键盘钩子问题

.wince上面的,,,虚拟键盘是否模拟成..键盘? 因为我用键盘钩子////钩不到任何信息. 不知是怎么回事?? …

查看全部问答>

sim300与mirco2440串口如何连接??

我有一个sim300模块与mirco2440串口连接后测试没反应,请问sim300与mirco 2440串口能直接相连吗??做过的高手请指点下!!!!…

查看全部问答>

找硬件高手合作项目

有一个项目需要找一个硬件人员一起做,要求:熟悉2440,做过GPS产品,能够独立完成原理设计,layout,调试。报酬丰厚。有意的请速联系yashi88@hotmail.com…

查看全部问答>

各位大侠帮帮忙

我的电脑没有串口应该怎么接到DP51单片机仿真实验仪??…

查看全部问答>

TI白光 LED 驱动器 TPS61500

TPS61500 (ACTIVE) 具有集成 3A、40V 电源开关的高亮度 LED 驱动器 查看所有技术文档High output regulator for high brightness LED    [ 本帖最后由 qwqwqw2088 于 2012-6-27 10:50 编辑 ]…

查看全部问答>

【视频】飞思卡尔机电一体化机器人FSLBOT介绍

飞思卡尔机电一体化机器人FSLBOT是一个拥有4个自由度的两足行走机器人,是在机器人机械结构的基础上,配合3轴加速度传感器、PWM控制的RC伺服电机,触摸板等,由带有MCF52258 32位Coldfire处理器的塔式机电一体化板控制机器人的动作。 它其实是一个 ...…

查看全部问答>