一応ソースを載せます。コンパイラが異なるのでこのソース そのもので確認したわけではないこと、及び私も構造体を使 わないので、コンパイラチェックも通していません。 一応動くとは思いますが(^^;; #include <3048f.h> #include <machine.h> #pragma interrupt(intimia1) extern unsigned int cnt0; // 信号のHighの時間 //***************** // メインルーチン //***************** void main(void){ // 変数初期化 cnt0 = 20000; // 初期値はダミー // I/O 設定 PA.DDR = 0x00; // PA入力 PB.DDR = 0xff; // PB出力 // ITU1 (加速度センサパルス幅読み取り用) ITU1.TCR.BYTE = 0x03; // φ/8,TCNTのクリア禁止 ITU1.TIOR.BYTE = 0x03; // 両エッジでGRAインフットキャプチャ ITU1.TIER.BYTE = 0x01; // IMFAによる割り込み許可 // ITU0 (加速度データPWM出力/チェック用) ITU.TMDR.BIT.PWM0 = 1; // PWMモード ITU0.TCR.BYTE = 0x23; // φ/8,GRAコンペアマッチでTCNTクリア ITU0.GRA = 40000; // PWM周期 20msec ITU0.GRB = cnt0; // パルス幅 // ITU カウントスタート ITU.TSTR.BIT.STR0 = 1; // ITU0スタート ITU.TSTR.BIT.STR1 = 1; // ITU1スタート // CPU割り込み許可 set_imask_ccr(0); while(1){ PB.DR.BYTE=PA.DR.BYTE; ITU0.GRB = cnt0; // パルス幅更新 } } //***************************************** // 加速度センサパルス幅読み込み(割り込み) //***************************************** 省略します。 尚、特に設定の必要がないレジスタ設定は省略しました。 それと、割り込みルーチンの条件判断は、暗黙の了解で PAが全ビット「ゼロ」でなければなりません。(ハード的に 間違いないですか?) それと、PWM出力に拘る理由はなんですか?単なる動作 チェックではなく、その信号でなにか行うのではないですか? このプログラムは、チェック用には良いとしても、色々と気に なる部分が含まれていることを予め認識しておいて下さい。 > 鈴木さんはどうお考えでしょうか? 事情はわかりました。 ただ、そう言う事情はご本人しか判りようがないので、勇気を もって最初にオープンにされても良いと思います。一番レスが 付かない(と、言うか嫌われる)のは、環境や背景を一切説明 しないでソースだけ載せて、どこがおかしいですか?という丸 投げのケースです。寧ろ、ソースなど載せなくても自分の考え を言葉で箇条書きに整理して投稿される方が内容が掴めるも のです。どうしても載せる場合は、重複しないよう最小限にされ た方が良いでしょう。 本当はソースを載せることは気が引けましたが、今回だけ載 せることにしました。(皆さんすいません) 鈴木(正) --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.564 / Virus Database: 356 - Release Date: 2004/01/19