5852|14

5276

帖子

5

TA的资源

裸片初长成(中级)

楼主
 

变态测试msp430的定时器及看门狗功耗实验 [复制链接]

因为看到有资料说停止看门狗可以节省功耗,但是功耗多少却没说。因为要用到(另外顺便问问用了看门狗还会怎样会引起死机?),所以想测一下。
记得以前看到有说定时器不费功耗的,所以顺便也测试一下,当然测试定时器功耗有点变态,因为实际使用中有多少不使用定时器的呢?没意义。

编写了一段程序,分为四个状态,由LaunchPad上的那个按键切换,大家看看是否合适,有问题指出来呀
视频就录了一遍,自己也没看。
结果大致是这样:(具体数字没有记,大概,用自制的电流检测放大设备+万用表电压显示)
状态1,约1.11uA:主程序LPM3
状态2,约1.47uA:主程序LPM3,打开使用32768ACLK作为时钟源的定时器,但是不产生中断
状态3,约1.50uA:主程序循环LPM3,打开使用32768ACLK作为时钟源的定时器,但是产生中断,中断中退出LPM3
状态4,约1.58uA:主程序循环LPM3,打开使用32768ACLK作为时钟源的定时器,但是产生中断,中断中打开看门狗退出LPM3,主程序清看门狗

大家有兴趣的有条件的用牛叉仪器能不能测测?
  1. //测试msp430G2231的定时器运行功耗及看门狗功耗
  2. #include "io430.h"

  3. volatile unsigned char buttonTimes;

  4. void main( void )
  5. {
  6.   WDTCTL = WDTPW + WDTHOLD;
  7.   
  8.   P1OUT = BIT3;
  9.   P1DIR = BIT0 + BIT1 + BIT2 + BIT4 + BIT5 + BIT6 + BIT7;
  10.   P1REN = BIT3;
  11.   P1IES = 0;
  12.   P1IFG = 0;
  13.   P1IE=BIT3;
  14.   
  15.   BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0;
  16.   if (CALBC1_1MHZ != 0xFF) {
  17.     DCOCTL = 0x00;
  18.     BCSCTL1 = CALBC1_1MHZ;      /* Set DCO to 1MHz */
  19.     DCOCTL = CALDCO_1MHZ;
  20.   }
  21.   BCSCTL1 |= XT2OFF + DIVA_0;
  22.   BCSCTL3 = XT2S_0 + LFXT1S_0 + XCAP_3;
  23.   do
  24.   {
  25.     IFG1 &= ~OFIFG;
  26.     __delay_cycles(50);
  27.   } while (IFG1 & OFIFG);
  28.   
  29.   buttonTimes=0;
  30.   __bis_SR_register(GIE);
  31.   
  32.   while(1)
  33.   {
  34.     LPM3;
  35.     if(buttonTimes==3)
  36.     {
  37.       WDTCTL = WDT_ARST_1000;
  38.     }
  39.     else{
  40.       WDTCTL = WDTPW + WDTHOLD;
  41.     }
  42.   }
  43. }

  44. #pragma vector=PORT1_VECTOR
  45. __interrupt void PORT1_ISR_HOOK(void)
  46. {
  47.   P1IFG=0;
  48.   buttonTimes++;
  49.   if(buttonTimes==1)
  50.   {
  51.     TACCR0 = 16383;
  52.     TACCTL0=0;
  53.     TACTL = TASSEL_1 + ID_0 + MC_1;
  54.     P1OUT=BIT3+BIT0;
  55.   }
  56.   else if(buttonTimes==2)
  57.   {
  58.     TACCTL0|=CCIE;
  59.     P1OUT=BIT3+BIT1;
  60.   }
  61.   else if(buttonTimes==3)
  62.   {
  63.     WDTCTL = WDT_ARST_1000;;
  64.     P1OUT=BIT3+BIT2;
  65.   }
  66.   else
  67.   {
  68.     buttonTimes=0;
  69.     WDTCTL = WDTPW + WDTHOLD;
  70.     TACTL=0;
  71.     TACCR0=0;
  72.     P1OUT=BIT3;
  73.   }
  74. }

  75. #pragma vector=TIMER0_A0_VECTOR
  76. __interrupt void TIMER0_A0_ISR_HOOK(void)
  77. {
  78.   LPM3_EXIT;
  79. }
复制代码




[ 本帖最后由 wangfuchong 于 2013-2-20 22:18 编辑 ]

DSC00150.JPG (300.31 KB, 下载次数: 0)

DSC00150.JPG

最新回复

P2组的IO口也需要设置。  详情 回复 发表于 2013-2-21 11:07
 
点赞 关注
个人签名没工作,没女人老婆,没宽带 ,  没钱

回复
举报

5276

帖子

5

TA的资源

裸片初长成(中级)

沙发
 
晕,好像声音图像又不同步,老毛病,怎么回事呀?怎么解决?摄像头。看来以后只能用手机拍了
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 

回复

474

帖子

2

TA的资源

纯净的硅(初级)

板凳
 
有木有减去LED灯,仿真器等器件的流耗???

点评

你不会是怀疑我测得的电流偏大吧? 是这样的,一者I-V变换中的电阻不准,电路中有放大的,放大倍数不可能准确。 二者,图片中可能看得不是很清楚,被电线挡着了,在电池到LaunchPad间的连线中间我还并了一个电解电  详情 回复 发表于 2013-2-20 10:25
跳线器全拔掉了,电池供电,否则怎么电流那么小呀(当然不准确,取样电阻不那么精密呀,但是量级应该没问题的吧?) 我的实验还比较粗燥(例如I-V转换还没有加大一点的电容进行平滑,再例如状态1应该也使一个IO输  详情 回复 发表于 2013-2-20 09:51
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

4
 
原帖由 zgbkdlm 于 2013-2-20 09:35 发表
有木有减去LED灯,仿真器等器件的流耗???
跳线器全拔掉了,电池供电,否则怎么电流那么小呀(当然不准确,取样电阻不那么精密呀,但是量级应该没问题的吧?)

我的实验还比较粗燥(例如I-V转换还没有加大一点的电容进行平滑,再例如状态1应该也使一个IO输出高电平或者全部不再操作IO输出状态以彻底保持一致性),有问题大家指出来呀
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

5
 
原帖由 zgbkdlm 于 2013-2-20 09:35 发表
有木有减去LED灯,仿真器等器件的流耗???
你不会是怀疑我测得的电流偏大吧?
是这样的,一者I-V变换中的电阻不准,电路中有放大的,放大倍数不可能准确。
二者,图片中可能看得不是很清楚,被电线挡着了,在电池到LaunchPad间的连线中间我还并了一个电解电容,相当于在cpu电源端并接了,但是电解电容是有漏电的,条件有限,我已经挑了一个漏电最小的,本来电容还可以弄大一点容值的。
当然,还是可能存在其它问题,不就是请大家指出来么?

哎,有时候感觉好像论坛一些人不那么直接,所以回复一下,担心您是出于礼貌?

点评

:Sweat: :Sweat: 一个大男人家的怎么能这么敏感啊...完全没有那个意思啊...我只是看了图看见那个LED灯还亮,也没有看视频,,,就回复了一下,顺便帮你顶一下~~  详情 回复 发表于 2013-2-20 16:59
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

474

帖子

2

TA的资源

纯净的硅(初级)

6
 

回复 5楼 wangfuchong 的帖子

一个大男人家的怎么能这么敏感啊...完全没有那个意思啊...我只是看了图看见那个LED灯还亮,也没有看视频,,,就回复了一下,顺便帮你顶一下~~

点评

不好意思, 谢谢您 LED是另外一块LaucnPad,和这个无关,那个是我在测量环境温度,用来校准测量NTC热敏电阻,只是用来给面包板上的电路供电3.3V [ 本帖最后由 wangfuchong 于 2013-2-20 17:10 编辑 ]  详情 回复 发表于 2013-2-20 17:01
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

7
 

回复 6楼 zgbkdlm 的帖子

不好意思,
谢谢您

LED是另外一块LaucnPad,和这个无关,那个是我在测量环境温度,用来校准测量NTC热敏电阻,只是用来给面包板上的电路供电3.3V

[ 本帖最后由 wangfuchong 于 2013-2-20 17:10 编辑 ]

点评

:) :) :) :)  详情 回复 发表于 2013-2-20 17:09
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

474

帖子

2

TA的资源

纯净的硅(初级)

8
 

回复 7楼 wangfuchong 的帖子

 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

9
 
我还是怀疑我那个显示不稳导致人笑话
我不就引出个话题么?答案是什么说出来我发帖说错了有什么,得到答案不就行了么?没人关心过这些?
手册中说过关于看门狗的,具体数据在哪里能不能告知一下?

 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

71

帖子

0

TA的资源

一粒金砂(高级)

10
 
声音好糊,带了耳机也还是听不清楚
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

11
 
IV变换器已经经过修改,没有抖动了,但是中断间隔太长还是有抖动,这个是没办法的,o.5秒中断一次不合适,什么时候增大中断频率测试一下
变换器的放大倍数有错误,所以有误差,什么时候修改一下,不过不影响对比
看起来好像看门狗的功耗影响不大
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

424

帖子

0

TA的资源

纯净的硅(高级)

12
 
P2组的IO口也需要设置。

点评

不设置会出现什么状态?  详情 回复 发表于 2013-2-21 16:37
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

13
 
原帖由 鸵鸟蝈蝈 于 2013-2-21 11:07 发表
P2组的IO口也需要设置。
不设置会出现什么状态?
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

14
 
没人反应,怄气重做了一下,这次不用按键切换,分成四个程序四次烧录 电流检测放大倍数已经经过纠正,当然电阻误差无法克服,测得结果如下:(包含电容漏电流及非零误差共计约0.01uA) a, 1.032uA b, 1.356uA c, 5.21uA d, 5.28uA 程序修改如下: 前部分共同:
  1. //测试msp430G2231的定时器运行功耗及看门狗功耗
  2. #include "io430.h"
  3. volatile unsigned char buttonTimes;
  4. void main( void )
  5. {
  6. WDTCTL = WDTPW + WDTHOLD;
  7. P1OUT = BIT3;//+BIT4;
  8. P1DIR = BIT0 + BIT1 + BIT2 + BIT4 + BIT5 + BIT6;
  9. P1REN = BIT3;
  10. P1IES = 0;
  11. P1IFG = 0;
  12. P1IE=BIT3+BIT7;
  13. P2DIR=0xFF;
  14. BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0;
  15. if (CALBC1_1MHZ != 0xFF) {
  16. DCOCTL = 0x00;
  17. BCSCTL1 = CALBC1_1MHZ; /* Set DCO to 1MHz */
  18. DCOCTL = CALDCO_1MHZ;
  19. }
  20. BCSCTL1 |= XT2OFF + DIVA_0;
  21. BCSCTL3 = XT2S_0 + LFXT1S_0 + XCAP_3;
  22. do
  23. {
  24. IFG1 &= ~OFIFG;
  25. __delay_cycles(50);
  26. } while (IFG1 & OFIFG);
复制代码
a:
  1. __bis_SR_register(GIE);
  2. while(1)
  3. {
  4. LPM3;
  5. }
复制代码
b:
  1. TACCR0 = 32767;//63;
  2. TACTL = TASSEL_1 + ID_0 + MC_1;
  3. __bis_SR_register(GIE);
  4. while(1)
  5. {
  6. LPM3;
  7. }
复制代码
c:
  1. TACCR0 = 63;
  2. TACCTL0=CCIE;
  3. TACTL = TASSEL_1 + ID_0 + MC_1;
  4. __bis_SR_register(GIE);
  5. while(1)
  6. {
  7. LPM3;
  8. __delay_cycles(5);
  9. }
  10. #pragma vector=TIMER0_A0_VECTOR
  11. __interrupt void TIMER0_A0_ISR_HOOK(void)
  12. {
  13. LPM3_EXIT;
  14. }
复制代码
d:
  1. TACCR0 = 63;
  2. TACCTL0=CCIE;
  3. TACTL = TASSEL_1 + ID_0 + MC_1;
  4. __bis_SR_register(GIE);
  5. WDTCTL = WDT_ARST_1000;
  6. while(1)
  7. {
  8. LPM3;
  9. WDTCTL = WDT_ARST_1000;
  10. }
  11. #pragma vector=TIMER0_A0_VECTOR
  12. __interrupt void TIMER0_A0_ISR_HOOK(void)
  13. {
  14. LPM3_EXIT;
  15. }
复制代码
结论还是和在楼顶的结论相符好像 到此算作个了结。没什么反响我不再多贴了 [ 本帖最后由 wangfuchong 于 2013-2-21 19:51 编辑 ]
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

15
 
补充一下
由于寄希望于感兴趣的也来实验一下,所以我试验的时候是不仔细的,例如,我这个LPM3电流还是偏大,虽然在数据手册指标范围之内。有时候用示波器检查一下,但是也没仔细看具体例如频率多少。怀疑LFXT1是否正常,但是没有发现出现OFIFG
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

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

随便看看
查找数据手册?

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