ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:itimerstop

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


ItimerStop()

ItimerStop()は既定または指定したコールバックタイマを停止します。

ItimerStop コマンドの動作フロー

void ItimerStop()
void ItimerStop(uint8_t timerNumber)

コマンド

コマンド 引数 戻り値 動作
ItimerStop() なし void 既定または指定したコールバックタイマを停止します。

使用例

const uint8_t CALLBACK_TIMER = 3;
volatile bool sampleDue = false;
 
void sampleTask() {
  sampleDue = true;
}
 
void setup() {
  Serial.begin(115200);
  if (!ItimerSet(CALLBACK_TIMER, 100, sampleTask)) {  // 周期とコールバック関数、または使用するハードウェアタイマを設定します。
    Serial.println(F("timer setup failed"));
    return;
  }
  ItimerStart(CALLBACK_TIMER);  // 設定したコールバックタイマを開始します。
}
 
void loop() {
  if (sampleDue) {
    noInterrupts();
    sampleDue = false;
    interrupts();
    Serial.println(analogRead(A0));  // 指定チャンネルの生のアナログ値を読み取ります。
  }
 
  const bool pause = IdigitalRead(0, 5);  // 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。
  if (pause && ItimerState(CALLBACK_TIMER)) ItimerStop(CALLBACK_TIMER);  // 既定または指定コールバックタイマの実行状態を返します。 / 既定または指定コールバックタイマを停止します。
  if (!pause && !ItimerState(CALLBACK_TIMER)) ItimerStart(CALLBACK_TIMER);  // 設定したコールバックタイマを開始します。 / 既定または指定コールバックタイマの実行状態を返します。
  if (IdigitalRead(1, 5)) ItimerStopAll();  // 実行中のコールバックタイマをすべて停止します。 / 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。
}

注意事項

  • タイマ割り込みコールバックは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/itimerstop.1788796403.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki