[H8-ML(4857)] H8/3069 8bitタイマカスケード時の動作
From: Ko Tanikawa <dev@xxxxxxxxxxxxxxx>
Date: 2004年06月14日(月)00時34分12秒
こんにちは,谷川と申します。 H8/3069 の 8bit タイマを
カスケードさせて使おうと思っているのですが,どうにも行
き詰まってしまいました。

やりたいことは, 50Hz ぐらいの波形の周期を 16bit 精度
で計測したいんですが, 16bit タイマを使えば簡単なんで
すが余っていないため, 8bit × 2 で挑戦しています。

ヘッダは H8/OS のを使用させて頂いていますが,以下のよ
うに 8bit タイマ 0,1 のセットをします。

// 8bit Timer 0,1 は 16bit タイマモード 
TMR01.TCR0.BIT.CKS = 0x04;

// TCORB 0,1 は 16bit インプットキャプチャレジスタ 
TMR01.TCSR1.BIT.ICE = 1;

//立ち下がりでキャプチャ
//(16bit モードでは, TCSR1 の OS は無視される)
TMR01.TCSR0.BIT.OS = 0x00;

// インプットキャプチャ B で 16bit カウンタクリア
//(16bit モードでは, TCR1 の CCLR は無効)
TMR01.TCR0.BIT.CCLR = 0x02;

// 8ITU1 は 1/8 φでカウント これでタイマスタート 
TMR01.TCR1.BIT.CKS = 0x01;

これで,任意のタイミングで TMR01.TCORB を読み出せば,
インプットキャプチャ端子から入力した波形の1周期分のカ
ウント値が入っていると思うのですが,実際には以下のよう
に,正しい値,その半分 , 0付近,の3種類のデータがラ
ンダムに登場してしまいます。

46635 …正解
46649
23559 … 1/2
0
1
23075
46661
46649

同じ信号を 16 ビットタイマで計測すると,このような現象
にはならないため,波形には問題ないと思います。

もし,何かお気づきの点ございましたら,是非ご教示下さい。
なお開発環境,ボードスペック等は以下の通りです。

Cygwin + GCC 3.3.2
TOPPERS/JSP1.4 + H8 用簡易モニタ
秋月 H8/3069F ボード( 20MHz )

-- 
dev@xxxxxxxxxxxxxxx 谷川
スレッド概略
[表示中](起点)
 └[4865(1)]


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


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