[H8-ML(4345)] RE: Message for h8 (時期が時期で...)
From: "masanobu suzuki" <signas@xxxxxxxxxxxxxxx>
Date: 2004年01月22日(木)17時40分29秒
一応ソースを載せます。コンパイラが異なるのでこのソース
そのもので確認したわけではないこと、及び私も構造体を使
わないので、コンパイラチェックも通していません。
一応動くとは思いますが(^^;;

#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

スレッド概略
[4293(R)](起点)
 └[4342(U)]
   └[表示中]
     ├[4347(1)]
     ├[4350(2)]
     └[4357(3)]


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


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