prxkuqfr 发表于 2024-11-26 10:38:08

8G1K08-36I 低功耗问题

本帖最后由 DebugLab 于 2024-11-26 10:39 编辑

/*
      内部32K
*/      
      
          MCLKOCR=0x00;// 不分频,不输出到IO口主时钟分频,且输出到IO口      
    P_SW2 = 0x80;       //需要访问特殊寄存器,需要先置1
    IRC32KCR = 0x80;    //启动内部32K IRC
    CLKSEL = 0x03;      //选择内部32K
          CLKDIV = 0x00;            //时钟不分频
    while (!(IRC32KCR & 1));//等待时钟稳定


      while(1)
      {
         P30 = ~P30;
}
请问这个单片机在32K工作的时候,示波器测量P30频率多大呢?这里测试居然需要0.5ms间隔闪LED。
      

DebugLab 发表于 2024-11-26 10:41:09

32K,指令执行时间不能忽略,具体时间要看汇编按照指令机器周期计算

prxkuqfr 发表于 2024-11-26 10:45:02

好吧。我看别家的单片机24M都可以做到1-2mA,这个stc单片机,还是大了点3-4mA。
我今天尝试降低频率再实验看看功耗。

21cnsound 发表于 2024-11-26 11:45:45

8G1K是单时钟周期MCU,while(1)循环只是一条单时钟的跳转指令、位取反也是单时钟指令,P30应该是32/2/2=8kbps的频率才对啊

21cnsound 发表于 2024-11-26 11:46:45

prxkuqfr 发表于 2024-11-26 10:45
好吧。我看别家的单片机24M都可以做到1-2mA,这个stc单片机,还是大了点3-4mA。
我今天尝试降低频率再 ...

降低功耗,除了时钟频率之外,端口模式也需要设置合适。可以找一下本论坛的帖子,有详细介绍

prxkuqfr 发表于 2024-11-26 12:01:54

端口全部都是高阻。还有什么需要注意?

王昱顺 发表于 2024-11-26 12:38:02

prxkuqfr 发表于 2024-11-26 12:01
端口全部都是高阻。还有什么需要注意?

低功耗不是时钟低就好。
而是尽可能快的处理完任务后,进入掉电模式,等待再次唤醒。
低频率下的内核功耗不容忽视。
在掉电模式的时间越长,整机也就越省电,因为此时cpu是不工作的,电流可以低至ua级别

xuzeabc 发表于 2024-11-26 12:47:01

个人认为楼主的方向反了,应该使用高频时钟,快速执行完任务,进入睡眠模式,功耗可以到了uA的级别。只是降低主频降低功耗的方法感觉有点本末倒置。

bkeuqoaq 发表于 2024-11-26 13:08:06

21cnsound 发表于 2024-11-26 11:45
8G1K是单时钟周期MCU,while(1)循环只是一条单时钟的跳转指令、位取反也是单时钟指令,P30应该是32/2/2=8kb ...

跳转指令肯定不是单周期,跳转流水线要清零,至少3个周期

21cnsound 发表于 2024-11-26 13:30:26

bkeuqoaq 发表于 2024-11-26 13:08
跳转指令肯定不是单周期,跳转流水线要清零,至少3个周期

看了下指令周期表,确实是3个周期
页: [1] 2
查看完整版本: 8G1K08-36I 低功耗问题