昨晩はよくわからないまま終了したが、今回は事例が豊富なArduino」で回転数計測を探ってみた。
結局
・タイマー2割り込みで1秒ごとの回転数を取得する
・Pin2で割り込まれるとカウンタを++する
という仕組み
注意すべきは組み込み系で必須なコンパイル指令である、
「volatile」という変数定義時の最適化回避命令を使用するところ。
初めてこういう機能が必要と知った。ソフトやさんにはわからん世界です。
【メモ】
micro:bitではちょっと無縁な世界だが、今後M5シリーズでは必要になるので。
------------
volatile unsigned int cnt=0,cnt_t;
volatile unsigned char tmr2_f=0;
void int_cnt(void){ cnt++; } // で割り込み処理ルーチンでカウントを++する
void int_tmr2(void){ cnt_t = cnt ; cnt = 0 ; tmr2_f = 1 ; } // タイマ2割り込み 、1秒毎に呼び出される
attachInterrupt( 0 , int_cnt , RISING ); // INT0 割り込み設定 (RISING 信号立ち上がりで割り込み発生)
MsTimer2::set( 1000, int_tmr2 ); // 1秒割り込み
MsTimer2::start(); // タイマ2、1秒 (1000mS) 毎の割り込み設定