こんにちは韓国からの留学生の金と申します いろいろお世話になっております。 現在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