ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:itimerset

文書の過去の版を表示しています。


ItimerSet()

ItimerSet()は周期とコールバック関数、または使用するハードウェアタイマを設定します。

ItimerSet コマンドの動作フロー

bool ItimerSet(unsigned long intervalMs, void (*callback)())
bool ItimerSet(uint8_t timerNumber, unsigned long intervalMs, void (*callback)())

コマンド

コマンド 引数 戻り値 動作
ItimerSet(intervalMs, callback) unsigned long intervalMs — コールバック実行周期。単位はms。0は使用不可
void (*callback)() — 周期ごとに実行するvoid 関数名()形式の関数
bool 周期とコールバック関数、または使用するハードウェアタイマを設定します。

使用例

volatile bool tick = false;
 
void onTimer() {
  tick = true;
}
 
void setup() {
  pinMode(13, OUTPUT);
  ItimerSet(1000, onTimer);  // 周期とコールバック関数、または使用するハードウェアタイマを設定します。
  ItimerStart();  // 設定したコールバックタイマを開始します。
}
 
void loop() {
  if (tick) {
    tick = false;
    digitalWrite(13, !digitalRead(13));
  }
}

注意事項

  • タイマ割り込みコールバックはISR内で実行されます。コールバックではフラグだけを変更し、実際の制御処理をloop()で行うのが安全です。
  • コールバック内でdelay()Serial、I2C、SPIなど時間がかかる処理や割り込みに依存するコードを使用しません。
  • Modbus RTUは通常loop()ImodbusRTU()を繰り返し呼び出します。長いdelay()やデバッグ出力でloop()が遅くなる場合だけ、十分な周期のタイマ割り込みからImodbusRTU()を呼び出します。
  • Timer2を使うtone()、またはTimer2 PWMピンのanalogWrite()と、既定のItimerSet()は同時使用しません。
  • Timer1、Timer3、Timer4、Timer5を明示的に使用すると、同じタイマを使うPWM、アナログ出力、高速カウンタ機能と競合する場合があります。
  • 1つのハードウェアタイマにはItimerコールバックを1つだけ設定します。
  • スケッチで同じタイマのISRを直接定義すると、Itimerの動作と競合する場合があります。
  • ItimerStopAll()はハードウェア割り込みタイマだけを停止します。ItonItofItmrなどのPLCスタイルタイマの状態は初期化しません。

← 内蔵コマンド一覧

ja-jp_commands/reference/itimerset.1788791738.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki