micro:bit 入力パルス幅の測定

micro:bit に入力したパルスのパルス幅を測る / GPIO の IN レジスタの変化をポーリング方式で直接読み取る

#include "MicroBit.h" MicroBit uBit; int main(void){ // IN レジスタからは、各 GPIO ラインへの入力信号が H (1) なのか L (0) なのかが読み出せる。 // PIN_CNF[N] レジスタは、特定の GPIO ラインの状態が設定できる。 volatile unsigned int *IN = (u…

micro:bit のイベントを使う 2 / 入力したパルスのパルス幅を測る

ポーリング方式ではなくイベントを利用してパルス幅を測ってみる。 #include "MicroBit.h" MicroBit uBit; // イベントハンドラーを定義する。 void getPulseWidth(MicroBitEvent e){ printf("%d\n\r", (int)e.timestamp); // コールされたらそのときのタイ…

micro:bit に入力したパルスのパルス幅を測る / H も L も測る / ポーリング方式

今度は H、L の両方を同時に測ってみる。 #include "MicroBit.h" MicroBit uBit; int pulseIn(int OneZero){ uint32_t start; uint32_t end; uint32_t elapsedTime; while(uBit.io.P0.getDigitalValue() == OneZero){} // H (L) の途中だったら一旦 L (H) に…

micro:bit に入力したパルスのパルス幅を測る / ポーリング方式

SG から micro:bit の P0 端子にパルスを入力してそのパルス幅を測ってみる。10 マイクロ秒くらいまで測れる。 #include "MicroBit.h" MicroBit uBit; int main(void){ uBit.init(); uint32_t start; uint32_t end; uint32_t epalsedTime; while(1){ while(u…