[H8-ML(5731)] Re: H8/3069 タイマーカウンターが作動しません
From: hamayan <hamayan@xxxxxxxxxxxxxxxx>
Date: 2005年11月06日(日)03時09分52秒
NARIOKA> どなたかアドバイスお願いします.

NARIOKA> マイコン:H8/3069(64F3069F25)
NARIOKA> 開発環境::YellowIDE ver6.38
NARIOKA> #include <3069S.H> // intをunsigned shortに置換

3069S.Hは、名前からルネサスの統一ヘッダーだと思われますが、
イエローではルネサスのヘッダーの動作を保証しています?。


動作するとして、

NARIOKA> 症状:タイマーカウンター(TCNT)が作動しない.
NARIOKA> ITU.TSTR.BIT.STR1 = 1;//ITU1 TCNTカウント開始(のはず)

この時点で動いている筈です。
ところで、CPUクロックを25MHzだとして、

NARIOKA> if(ITU1.TCNT > 1000) LCD_DisplayNumber(1); //LCDに1を表示

この条件が成立するには40μs後、それ以降はカウンターが
オーバーフローするまで、延々とLCDに表示する事となりま
すが、LCDは本当にそれで動いています?。
IDEを使っているなら、デバッカーでブレークポイントを張
った方が良いのでは。


NARIOKA> ITU.TISRA.BIT.IMIEA1 = 1; // IMFA1への書き込みを許可

多分このコメントを書いた為に、以降の行で勘違い?を起こし
ている様に思えるのですが、

NARIOKA> if(ITU.TISRA.BIT.IMFA1)ITU.TISRA.BIT.IMFA1 = 0; // 初期化
NARIOKA> ITU1.TCR.BYTE = 0x00;

改めてハードウエアマニュアルで、IMFA1やIMIEA1の成立条件
を確認してみて下さい。


NARIOKA> if(ITU.TISRA.BIT.IMFA1 == 1){
NARIOKA> ITU.TISRA.BIT.IMFA1 = 0;
NARIOKA> LCD_DisplayNumber(1);
NARIOKA> }

上の理由からこの条件は成立しないし、

NARIOKA> void interrupt timer(){
NARIOKA> if(ITU.TISRA.BIT.IMFA1)ITU.TISRA.BIT.IMFA1 = 0; // 初期化
NARIOKA> LCD_DisplayNumber(2);
NARIOKA> }

ここには来ないと思いますが、しかし、IMFA1のクリアが二箇
所有るのは問題では?。


NARIOKA> 「16ビットタイマのチャンネル0は使用できません.」とマニュアルにあったので,

ええ!、それは一体何と言うマニュアルですか?


以上、頑張って下さい。
スレッド概略
[5730(R)](起点)
 └[表示中]


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


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