久しぶりのマイコン




SH2/7144FでAX-12を久しぶりに動かしてみました!
うーん、懐かしい。。。

ところで前から疑問だったことを思い出しました。
マイコンで割り込み処理とかに影響されずに、時間を図ったり・処理したりすることって可能なんでしょうか?
パソコンへの表示をキー入力の割り込み処理でさせてるんですけど、その時サーボの動きが遅くなるんですよね。。。
サーボが動いてる時に割り込み処理を禁止すれば済むとは思うんですが、動いてる時の値をキャプチャしたいので割り込み処理は禁止にしたくない。
とすると、キー入力を割り込み処理じゃなくするか、サーボの動作指示処理を割り込み処理とか他の処理に影響されない絶対時間の中で処理されるようにするかどちらかだと思うのですが、、、

あっ!!

ひょっとしてこれを実現するのがリングバッファ???
キー入力の処理をリングバッファ処理させるというのが答え???
余り欲張らないほうが良い気もしてきた。。。

コメント

割込み処理には、時間のかかる処理はいれません。

リアルタイムOSを利用する場合は、割込み処理ではリングバッファ等にデータを保存し、実際に時間のかかる処理に向けて処理開始要求のイベントをポストして、割込み処理を終えます。
OSを使わない場合は…、はて?どうするかな?(w

正確な時間の方ですが、フリーランニングでカウントアップするカウンタ値を読むとか、タイマー割込みでカウントアップだけする変数を用意しといて、その値を読むとかして、時間を測ります。

ではでは~

なるほどー

KAZZさん投げロボ惜しかったですけど凄かったです!
2回の成功おめでとうございます!!


> 割込み処理には時間のかかる処理いれない

おおっ!
当たり前のことを見落としていました!
となるとやっぱリングバッファ機構いりますねー。。。
画面表示させる文字数が半角で100桁位(100byte?)あるので、シリアル通信では時間かかり過ぎですよね。

正確な時間は、CMTを使用すればカウントアップするカウンタ値を読んだり、タイマー割込みさせれそうなので試しにやってみまーす。
「C言語によるSH-2マイコン」を読みながらやってみます!

アドバイスありがとうございましたー!!
非公開コメント