一応ソースを載せます。コンパイラが異なるのでこのソース
そのもので確認したわけではないこと、及び私も構造体を使
わないので、コンパイラチェックも通していません。
一応動くとは思いますが(^^;;
#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