[H8-ML(3431)] Date: Mon, 23 Jun 2003 20:30:30 +0900
From: <k-shirakawa0907@xxxxxxxxxxxxxx>
Date: 1970年01月01日(木)09時00分00秒
以前質問させてもらった者ですが、再び質問させていただきます。PWMを出力するプログラムを書いたのですが
#include<3048f.h>
void initial(){
ITU.TMDR.BIT.PWM0=1;
ITU0.TCR.BYTE=0xC3;
ITU0.GRA=0x5000;
ITU0.GRB=0xffff;
ITU.TSTR.BIT.STR0=0;
PA.DDR=0xff;
}
void main(){
initial();
ITU.TSTR.BIT.STR0=1;
}
いざオシロスコープに出そうとしたら、PWM波が出力されません。オシロスコープをマイコンにつなぐのは、GNDであるCN4−2やCN2−1と出力であ
るPAのCN1−8から15につなげばいいのではないんですか?
後、もう一つ質問なんですが、PWM信号は以下のようなプログラムでも出力できるのでしょうか?
#include <3048f.h>

/* 待ち時間発生初期化 ************************************/
void timer_init(void){
	ITU0.TCR.BYTE = 0x23;	/* GRAコンペアマッチ clock 1/8 */
	ITU0.GRA = 0x0002;	/* GRAを2(0.001msec)に設定 */
	ITU.TSTR.BIT.STR0 = 0;	/* カウント停止状態 */
	return;
}

/* 待ち時間発生 引数に、必要なミリ秒を指定する***********/
void wait(int msec){
	int j = 0;
	ITU.TSTR.BIT.STR0 = 1;	/* ITU0 TCNTカウント開始 */
	for(j=0;j<msec*2/5;j++){
		do{		/* TCNT = GRAになるまで待つ(0.001mS) */
		}while(ITU0.TSR.BIT.IMFA == 0);
		ITU0.TSR.BIT.IMFA = 0; /* 検知フラグを戻して再開 */
	}
	ITU.TSTR.BIT.STR0 = 0;	/* ITU0 TCNTカウント終了 */
	return;
}

	

void main(int ch1,int ch2,int ch3,int ch4,int ch5,int ch6,int gnd){
while(1){
int ch1=560;
int ch2=440;
int ch3=330;
int ch4=222;
int ch5=333;
int ch6=444;
int gnd=0;
        P5.DDR = 0xff;   /*ポート5を出力に*/
	P5.PCR.BYTE = 0x00;  /*ポート5プルアップoff*/
	P5.DR.BYTE = 0x00;   /*ポート5全てoff*/
	P5.DR.BYTE = 0x02;
	wait(gnd);
	P5.DR.BYTE = 0x01;
	wait(ch1);

	P5.DR.BYTE = 0x02;
	wait(gnd);
	P5.DR.BYTE = 0x01;
	wait(ch2);

	P5.DR.BYTE = 0x02;
	wait(gnd);
	P5.DR.BYTE = 0x01;
	wait(ch3);

	P5.DR.BYTE = 0x02;
	wait(gnd);
	P5.DR.BYTE = 0x01;
	wait(ch4);

	P5.DR.BYTE = 0x02;
	wait(gnd);
	P5.DR.BYTE = 0x01;
	wait(ch5);

	P5.DR.BYTE = 0x02;
	wait(gnd);
	P5.DR.BYTE = 0x01;
	wait(ch6);
}
}
ある知り合いのプログラムを見ていたら、このようなプログラムでラジコンを操作するgndと5vを交互に出力するPWM信号のようなPPM信号という信号
を出力しているようですが。(値は変えましたが)これもオシロスコープで出力のP5を見たのですがいまいち分からなくて。長くなってすみませんが、ぜひ教
えてください。よろしくお願いします。


スレッド概略
[表示中](起点)
 └[3439(1)]


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


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