[H8-ML(2243)] [H8-ML(2242)] Re: 16ビットタイマについて教えてください
From: KODERA Masaru <mkodera@xxxxxxxxxxxxxxx>
Date: 2002年09月28日(土)02時35分22秒
こんばんは小寺です。
早速のご回答ありがとうございます。
まだ色々とトライしております。

 |コンペアマッチ割込みを使って更新されてはどうでしょう、
 |つまりタイマ割込により周期の更新が必要な場合PWM割り込みを許可し、
 |PWM割り込みの中でレジスタを更新する。
 |#周期が50usしか無いのでちょっときついかも

はじめは、A/D割込の中で処理していましたがタイマのコンペアマッチ
割込でも結果は、同じでした。オシロで遅延時間を計測したところ
最大で35μsecの遅延で割込みが確認できました。

 |後は、カウンタの値を読み込んでコンペアマッチが生じる可能性
 |が有るようならしばらく待ってから更新するとか。

これもやりましたが一回前のデューティと今のカウンタの値を比較して
差があるときだけ更新しました。結果は、一サイクルあたり10回
程度の更新にとどめないとやはり発生してしまいました。

 |#レジスタにバッフアが無く単純に比較する値を小さくした時に
 |#カウンタの値が通り過ぎる現象なのかも

デューティ50%ぐらいの所での発生が一番多いです。
ハードウエアマニュアルにバッファ動作の説明があり色々と
試しましたがうまくバッファ動作しませんでした。
下記は、タイマの初期化部分です。
かなり長いですがご勘弁ください。
;***	チャンネル 0	***
...
;***	チャンネル 1	***
	MOV.B	#B'00100010,R0L
	MOV.B	R0L,@D_TCR_1_ADR	; タイマ コントロール レジスタ _1 アドレス
		;  76543210
		;  |||||||+----	TPCS0	クロックセレクト
		;  ||||||+----- TPCS1	   内部クロック:φ/4でカウント(20MHz/2=5.0MHz)
		;  |||||+------ TPCS2	
		;  ||||+------- CKEG0	クロックエッジ
		;  |||+-------- CKEG1	 立ち上がりエッジでカウント
		;  ||+--------- CCLR0	カウンタクリア
		;  |+---------- CCLR1	 GRA のコンペアマッチにてTCNTクリア
		;  +----------- CCLR2	
;
	MOV.B	#B'10001000,R0L
	MOV.B	R0L,@D_TIORA_1_ADR	; タイマ I/O コントロール レジスタ AB_1
		;  76543210
		;  |||||||+----	IOA0	I/O コントロール セレクト A
		;  ||||||+----- IOA1	 禁止
		;  |||||+------ IOA2
		;  ||||+------- (1)
		;  |||+-------- IOB0	I/O コントロール セレクト B
		;  ||+--------- IOB1	 禁止
		;  |+---------- IOB2
		;  +----------- (1)
;
	MOV.B	#B'10001000,R0L
	MOV.B	R0L,@D_TIORC_1_ADR	; タイマ I/O コントロール レジスタ CD_1
		;  76543210
		;  |||||||+----	IOC0	I/O コントロール セレクト C
		;  ||||||+----- IOC1	 禁止
		;  |||||+------ IOC2
		;  ||||+------- (1)
		;  |||+-------- IOD0	I/O コントロール セレクト D
		;  ||+--------- IOD1	 禁止
		;  |+---------- IOD2
		;  +----------- (1)
;
	MOV.B	#B'11100001,R0L
	MOV.B	R0L,@D_TIER_1_ADR	; タイマ インタラプト イネーブル レジスタ _1
		;  76543210
		;  |||||||+----	IMIEA	割り込み許可
		;  ||||||+----- IMIEB	 コンペアマッチ A
		;  |||||+------ IMIEC	
		;  ||||+------- IMIED
		;  |||+-------- OVIE	オーバーフロー割り込み禁止
		;  +++--------- (1)
;
	MOV.B	#B'11111000,R0L
	MOV.B	R0L,@D_POCR_1_ADR	; PWMモード アウトプット レベル コントロール レジスタ _1
		;  76543210
		;  |||||||+----	POLB	ローアクティブ
		;  ||||||+----- POLC	ローアクティブ
		;  |||||+------ POLD	ローアクティブ
		;  +++++------- (1)
;
	MOV.W	#250,R0			; 250=20KHz
	MOV.W	R0,@D_GRA_1_ADR		; タイマ ジェネラル レジスタ A_1
	MOV.W	#125,R0			; 125=Duty50%
	MOV.W	R0,@D_GRC_1_ADR		; タイマ ジェネラル レジスタ C_1
;
;***	共通	***
	MOV.B	#B'10001110,R0L
	MOV.B	R0L,@D_TMDR_ADR		; タイマ モード レジスタ
		;  76543210
		;  |||||||+----	SYNC	タイマ 1&2 独立動作
		;  ||||+++----- (1)
		;  |||+-------- BFC0	GRA_0とGRC_0は、通常動作
		;  ||+--------- BFD0	GRB_0とGRD_0は、通常動作
		;  |+---------- BFC1	GRA_1とGRC_1は、通常動作
		;  +----------- BFD1	GRB_1とGRD_1は、バッファ動作←使用不可
;
	MOV.B	#B'10111000,R0L
	MOV.B	R0L,@D_TPMR_ADR		; タイマ PWM モード レジスタ
		;  76543210
		;  |||||||+----	PWMB0	FTIOB0は、通常動作
		;  ||||||+----- PWMC0	FTIOC0は、通常動作
		;  |||||+------ PWMD0	FTIOD0は、通常動作
		;  ||||+------- (1)
		;  |||+-------- PWMB1	FTIOB1は、PWMモード←通常動作にしても
		;  ||+--------- PWMC1	FTIOC1は、PWMモード 使用不可
		;  |+---------- PWMD1	FTIOD1は、通常動作
		;  +----------- (1)	
;
	MOV.B	#B'10000000,R0L
	MOV.B	R0L,@D_TFCR_ADR		; タイマ ファンクション コントロール レジスタ
		;  76543210
		;  |||||||+----	CMD0	コンビネーションモード
		;  ||||||+----- CMD1	   チャンネル 0&1 通常動作
		;  |||||+------ OLS0	出力レベルセレクト
		;  ||||+------- OLS1	出力レベルセレクト
		;  |||+-------- ADTRG	A/D外部トリガ無効
		;  ||+--------- ADEG	A/Dトリガエッジ山
		;  |+---------- STCLK	外部クロック入力無効
		;  +----------- (1)	
;
	MOV.B	#B'10011111,R0L
	MOV.B	R0L,@D_TOER_ADR		; タイマ アウトップト マスタ イネーブル レジスタ
		;  76543210
		;  |||||||+----	EA0	FTIOA0端子出力禁止
		;  ||||||+----- EB0	FTIOB0端子出力禁止
		;  |||||+------ EC0	FTIOC0端子出力禁止
		;  ||||+------- ED0	FTIOD0端子出力禁止
		;  |||+-------- EA1	FTIOA1端子出力禁止
		;  ||+--------- EB1	FTIOB1端子出力許可
		;  |+---------- EC1	FTIOC1端子出力許可
		;  +----------- ED1	FTIOD1端子出力禁止
;
	MOV.B	#B'00000000,R0L
	MOV.B	R0L,@D_TOCR_ADR		; タイマ アウトップト コントロール レジスタ
		;  76543210
		;  |||||||+----	TOA0	FTIOA0端子0出力
		;  ||||||+----- TOB0	FTIOB0端子0出力
		;  |||||+------ TOC0	FTIOC0端子0出力
		;  ||||+------- TOD0	FTIOD0端子0出力
		;  |||+-------- TOA1	FTIOA1端子0出力
		;  ||+--------- TOB1	FTIOB1端子0出力
		;  |+---------- TOC1	FTIOC1端子0出力
		;  +----------- TOD1	FTIOD1端子0出力
;
	MOV.B	#B'11111111,R0L
	MOV.B	R0L,@D_TSTR_ADR		; タイマ スタート レジスタ
		;  76543210
		;  |||||||+----	STR0	チャンネル 0 カウンタスタート
		;  ||||||+----- STR1	チャンネル 1 カウンタスタート
		;  ++++++------ (1)

____________________
ダイトパワートロン株式会社
501-6331 岐阜県羽島市堀津町横手2-109
開発設計課 小寺 勝
TEL:058-398-5122  FAX:058-398-2043
URL:http://www.powertron.co.jp/
E-mail:mkodera@xxxxxxxxxxxxxxx
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
スレッド概略
[2241(R)](起点)
 └[2242(U)]
   └[表示中]
     └[2246(1)]


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


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