Machine
machine モジュールは micro:bit ハードウェアに関連する固有の関数を含んでいます。このモジュールのほとんどの機能はシステム上のハードウェアブロック(CPU、タイマー、バスなど)への直接的かつ無制限のアクセスと制御を実現します。誤って使用すると、誤動作、ロックアップ、ボードのクラッシュ、および極端な場合にはハードウェアの損傷を招く可能性があります。
関数
- machine.unique_id()
ボードの一意な識別子を持つバイト列を返します。この値はボードの個体ごとに異なります。
- machine.reset()
外部 RESET ボタンを押すのと同じようにデバイスをリセットします。
- machine.freq()
CPU周波数をヘルツ単位で返します。
- machine.disable_irq()
割り込み要求を無効にします。無効にする前の IRQ 状態を返しますが、これは不明瞭な値とみなす必要があります。この戻り値は
machine.disable_irq()
を呼び出す前の元の状態に割り込みを復元するためにmachine.enable_irq()
関数に渡す必要があります。
- machine.enable_irq(state)
割り込み要求を再度有効にします。 state パラメータは
machine.disable_irq()
関数の最も最近の呼び出しから返された値である必要があります。
- machine.time_pulse_us(pin, pulse_level, timeout_us=1000000)
指定の pin にパルスの持続時間をマイクロ秒単位で返します。 pulse_level 引数には、低パルスの時間計測で 0、高パルスの時間計測で 1 を指定します。
ピンの現在の入力値が pulse_level と異なる場合、関数は最初にピン入力が pulse_level に等しくなるまで待機し(*)、次にそのピンが pulse_level に等しい時間を測ります(**)。ピンが既に pulse_level に等しい場合、計測はすぐに開始されます
タイムアウトが発生した場合、上記の(*)の状態を待っていた場合は -2 を返し、上記の(**)の場合は -1 を返します。タイムアウト時間は両方のケースで同じで、 timeout_us (マイクロ秒単位)で指定します。
メモリの読取り
machine
モジュールでは、物理アドレスを指定してデバイスのメモリから、1バイト(8ビット; mem8
)、2バイト(16ビット; mem16
)、4バイト(32ビット; mem32
)のワードを取得できます。たとえば mem8[0x00]
は、物理アドレス 0x00
の1バイトを読み取ります。これには nRF51 レジスタからデータを読み取るなど、さまざまな用途があります。