Re: [PIC16F690] 問省電

作者 jason680 於 2016年10月20日 13:09:28
4M/31K = 約129倍
相同的工作指令,在頻率4M及31K上,兩者相差129倍的時間.

你的週期時間(工作+休眠)是固定的嗎?
||||_______||||_______
|||| ==> 表示工作時間
||||_______ ==> 工作+休眠 = 週期時間

例: 週期時間固定為1000ms(1秒)
||||______||||_______|||||______ ...

註: MCU工作時間,簡化為 取決於 頻率快慢
假設: 頻率4M 工作時間為 1ms
週期時間(固定1000ms) = 工作(1ms) + 休眠(999ms)
則 休眠/週期時間 = 999/1000 = 99.9%
相同的工作(指令)換成 頻率31K 工作時間為 約為129ms (= 1ms*129)
週期時間(固定1000ms) = 工作(129ms) + 休眠(871ms)
則 休眠/週期時間 = 871/1000 = 87.1%

假設: 4M 工作時間為 2ms
週期時間(固定1000ms) = 工作(2ms) + 休眠(998ms)
則 休眠/週期時間 = 998/1000 = 99.8%
換成 31K 工作時間為 約為258ms (= 2ms*129)
週期時間(固定1000ms) = 工作(258ms) + 休眠(742ms)
則 休眠/週期時間 = 742/1000 = 74.2%

假設: 4M 工作時間為 4ms
週期時間(固定1000ms) = 工作(4ms) + 休眠(996ms)
則 休眠/週期時間 = 996/1000 = 99.6%
換成 31K 工作時間為 約為516ms (= 4ms*129)
週期時間(固定1000ms) = 工作(512ms) + 休眠(488ms)
則 休眠/週期時間 = 488/1000 = 48.8%


休眠的學問大,休的好,省電又達到即時回應效果...
休不好,不是沒省電,就是得不到效果(反應過慢)...

休的好
例: 固定週期時間...
||||____________||||__________ 1ms(工作) + 999ms(休眠)
反應周期(最長)為1秒
若 1秒的反應時間太長(反應太慢),則可縮短為0.1秒(100ms,快10倍)
或0.2秒(200ms,快5倍),...
反應變快 休眠比率改變(耗電增加)
1000ms , 休眠比 = 999/1000 = 99.9%
100ms , 休眠比 = 99/100 = 99%
200ms , 休眠比 = 199/200 = 99.5%
都有99%以上

休不好
例: 固定週期時間...
||||____________||||__________ 129ms(工作) + 871ms(休眠)
反應周期(最長)為1秒
若 1秒的反應時間太長(反應太慢),則可縮短為0.1秒(100ms,快10倍)
或0.2秒(200ms,快5倍),...
反應變快 休眠比率改變(耗電增加)
1000ms , 休眠比 = 871/1000 = 87.1%
100ms , 休眠比 = 工作時間(129ms)比週期時間(100ms)還長(沒休眠)
200ms , 休眠比 = 71/200 = 35.5%
反應是加快了,但沒有省電效果...

註: 沒討論的事項...
1. 相同時間工作時間,不同頻率的功耗不同,
2. 不是固定週期時間(ex:外部事件觸發...)

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=1&topic_id=19775&post_id=73323