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