Arduinoでの回転数(RPM)検出

 

昨晩はよくわからないまま終了したが、今回は事例が豊富な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) 毎の割り込み設定