このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

クラス Timer -- ハードウェアタイマーの制御

ハードウェアタイマーは周期処理や時間イベントを扱います。タイマーは、おそらく MCU や SoC により最も柔軟で様々な種類のあるハードウェアであり、モデルごとに大きな違いがあります。MicroPython の Timer クラスは、指定した周期で(または少し経過後に1回だけ)コールバックを実行するベースライン操作を定義します。ボードによっては標準的でない動作を定義できます(したがって他のボードへの移植性はありません)。

Timer のコールバックに関する 重要な制約 の議論を見てください。

注釈

irq ハンドラ(割り込み)内でメモリを割り当てることはできず、そのためにハンドラ内で発生した例外には多くの情報を持ちません。この制限を回避する方法については micropython.alloc_emergency_exception_buf() を参照してください。

WiPy ボードを使用している場合、このクラスの代わりに machine.TimerWiPy を参照してください。

コンストラクタ

class machine.Timer(id, /, ...)

指定した id の新しいタイマーオブジェクトを構築します。 id が -1 の場合は、(ボードでサポートしていれば)仮想タイマーを構築します。 id をキーワード引数で渡してはなりません。

初期化パラメータについては init を参照してください。

メソッド

Timer.init(*, mode=Timer.PERIODIC, freq=-1, period=-1, callback=None)

タイマーを初期化します。たとえば次のように使います:

def mycallback(t):
    pass

#1kHz で定期的に実行
tim.init(mode=Timer.PERIODIC, freq=1000, callback=mycallback)

# 100ms 周期で定期的に実行
tim.init(period=100, callback=mycallback)

# 1000ms 後に1度だけ実行
tim.init(mode=Timer.ONE_SHOT, period=1000, callback=mycallback)

キーワード引数:

  • mode は次のいずれかになります。

    • Timer.ONE_SHOT - タイマーは、設定したチャネルの周期が経過した後に1回だけ実行します。

    • Timer.PERIODIC - タイマーは、チャネルの設定した周期で定期的に実行します。

  • freq - タイマーの周波数(単位:Hz)。周波数の上限はポートに依存する。 freqperiod の両方の引数を与えた場合、 freq の方を優先し、 period は無視します。

  • period - タイマー期間(ミリ秒単位)。

  • callback - タイマー期間が終了したときに呼び出されるコールバックです。コールバックは1つの引数を取らなければならず、その引数にはタイマーオブジェクトが渡されます。コールバックの引数は指定しなければなりません。さもなければ、タイマー満了時に次の例外が発生します: TypeError: 'NoneType' object isn't callable

Timer.deinit()

タイマーを非初期化します。タイマーを停止し、タイマーのペリフェラルを無効にします。

定数

Timer.ONE_SHOT
Timer.PERIODIC

タイマー操作モード。