省電力

COTTONを省電力で動作するためのライブラリです。マイコンはクロックをベースに動いています。クロックの周波数が高いとマイコンは早く動きます。しかしクロックの周波数を高くすると電流が大きくなります。例えば電池を使っている場合は早く切れてしまうことになります。電池を長く使用できるようにするには、プログラムの処理によってクロックの周波数を低くしたり、止めるようにします。例えば1分に1回温度を測るとき、温度を測るときだけクロックを動かし、それ以外はクロックを止めればよいことになります。

setPowerManagementMode

概要
省電力モードを設定します。
文法
setPowerManagementMode(mode)
setPowerManagementMode(mode, lower, upper)
パラメータ
mode:
  PM_NORMAL_MODE(通常モード)
  PM_STOP_MODE(delay()関数実行時にSTOPモードに移行)
  PM_SNOOZE_MODE(analogRead()関数実行時にSNOOZEモードに移行
lower: 0~1023(SNOOZEから復帰する下限アナログ値、下位2ビットは無効)
upper: 0~1023(SNOOZEから復帰する上限アナログ値、下位2ビットは無効
戻り値
なし

getPowerManagementMode

概要
現在の省電力モードを取得します。
文法
unsigned char getPowerManagementMode()
パラメータ
なし
戻り値
PM_NORMAL_MODE, PM_STOP_MODE, PM_SNOOZE_MODE

setOperationClockMode

概要
クロックの動作速度を設定します。
文法
setOperationClockMode(unsigned char mode)
パラメータ
mode:
  CLK_HIGH_SPEED_MODE(高速、32MHz)
  CLK_LOW_SPEED_MODE(低速、32.768kHz)
戻り値
なし
補足
省電力モード設定時(STOP/SNOOZE)、低速に設定することはできません。無効になります。

getOperationClockMode

概要
クロックの設定を取得します。
文法
unsigned char getOperationClockMode()
パラメータ
なし
戻り値
CLK_HIGH_SPEED_MODE, CLK_LOW_SPEED_MODE

サンプルプログラム

SNOOZEモードを使用して、analogRead(A0)が500~1023の値を取得したときに復帰して値を出力するプログラムです。


#include <Arduino.h>

void setup()
{
  Serial.begin(9600);
  setPowerManagementMode(PM_SNOOZE_MODE, 500, 1023);
}
 
void loop()
{
  int value = analogRead(A0);
  Serial.println(value);
  delay(100);
}(100);
}