[H8-ML(2922)] ITUのインプットキャプチャの割り込みによってエンコダ−パルスのlow幅を測定しようと
From: "kim sungsik" <sskim@xxxxxxxxxxxxxxxxxxxxx>
Date: 2003年03月07日(金)00時47分48秒
こんにちは韓国からの留学生の金と申します
いろいろお世話になっております。
現在H8/3048でjapan servoのFY9PF40N-D3の速度制御を行ってます。
ITUのインプットキャプチャの割り込みによってエンコダ−パルスのlow幅を測定しよ
うと思ってます。
同じ信号をtioca1とtiocab1にいれてb1の立ち下がりでカウンターをクリアーしa1の
立ち上がりでGRA1の
カウンターの値を読む感じです。
そして下のようなCソースを作りましたが一度割り込みが起きてから割り込み関数の
実行が終わると
まもなく(10us)同じ関数だけずっと反復して実行されて元のルーチンは全然実行
出来ないんです。
割り込み周期は5msくらいでhighが0.43msで 残りはLowです。割り込み関数
int_imia1の実行時間は100μs以下です。
誰かご存知でしたらよろしくお願いします。

#include <3048f.h>
#pragma interrupt(int_imia1)

void inputcap(void)
{

  ITU1.TIER.BYTE = 0xfb; /* a1 b1の 割り込み許可 */
  ITU1.TCR.BYTE = 0xc3;          /* b1の インプットで クリアー、内部クロッ
クの1/8でカウント */
  ITU1.TIOR.BYTE = 0xdc;         /* b1の立下りとa1の立ち上がりでインプット
キャプチャ */
  ITU1.GRA =0;
  ITU1.GRB =0;
  ITU.TSTR.BIT.STR1 = 1;         /* 動作の開始 */

}

void int_imia1(void)
{
 ITU1.TIER.BYTE = 0xf8; /*割り込み禁止*/
 ITU1.TSR.BYTE = 0xf8;          /* 割り込みフラグ0 */

 /*ここから 1行くらいの割り込み処理ルーチン*/


 ITU1.TIER.BYTE = 0xfb; /*割り込み許可*/
}

main(){
....
inputcap();
/* GRA1を利用するルーチン */
.....
}

^_^  ^_^  ^_^  ^_^  ^_^  ^_^  ^_^  ^_^  ^_^

金 聖植(キム ソンシク、Kim SungSik)
東京大学大学院 電気工学専攻 修士2年
東京都目黒区駒場4−6−1東大生産技術研究所
email: sskim@xxxxxxxxxxxxxxxxxxxxx
橋本研 Ew201 tel:81-3-5452-6258,hp:090-6163-7524
http://dfs.iis.u-tokyo.ac.jp

スレッド概略
[表示中](起点)
 └[2927(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]