Pulsein関数の周波数の測定結果を100ms毎と1000msごとの二パターンをシリアルで出力したいと思っています。
このような場合、以下のように記述しようと思いますが、なにか誤りや改善点はありますか?
コンパイルはできましたがすぐに机上試験できず質問させていただきました。
volatile unsigned long low_time = 0; volatile unsigned long high_time = 0; volatile unsigned long total_time = 0; void setup() { MsTimer2::set(1000, log1); MsTimer2::set(100, log2); MsTimer2::start(); pinMode (10, INPUT); Serial.begin(9600); } void log1() { high_time = pulseIn(10, HIGH,); low_time = pulseIn(10, LOW, ); total_time = high_time + low_time ; Hz = (1000000.000000 / total_time); Serial.print ("1秒ごと,"); Serial.print (Hz,0); } void log2() { high_time = pulseIn(10, HIGH,); low_time = pulseIn(10, LOW, ); total_time = high_time + low_time ; Hz = (1000000.000000 / total_time); Serial.print ("100msごと,"); Serial.print (Hz,0); } void loop(){ }
1:void loop になにも記述しないが問題ないか?
2:plseIn関数を割り込み内で呼び出して利用しても問題ないか?
3:割り込み(log2)が100秒周期だと10回目の割り込みで1000msごとの割り込み(log1)とバッティングするが問題ないのか?どちらが優先されるのか?
ご回答とご指摘よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/12 08:10
2019/11/12 08:26
2019/11/12 08:33
2019/11/12 09:40
2019/11/12 11:42
2019/11/12 11:53
2019/11/12 13:10
2019/11/12 13:40
2019/11/13 03:37