[H8-ML(5129)] AD変換
From: 加藤 至喜 <katou-yosiki@xxxxxxxxxxxxxxx>
Date: 2004年11月22日(月)11時40分59秒

初めまして 加藤 至喜 と申します。
H8をつかって、AD変換をしたいと思い以下のプログラムを作ったのですが(AD変換部分だけ抜粋)、コンパイルは通るものの、while文の行がずっ 
と終わらない(=AD変換が終わらない?)ようなのですが、原因は分かりますでしょうか?



int ADconv(void)
{
     int ADdata;

     AD.CSR.BIT.ADST = 1;          // A/D変換開始
     while(!AD.CSR.BIT.ADF) ;      // 変換終了待ち
     ADdata = AD.DRA >> 6;         // 変換されたデータをADdataに格納
     AD.CSR.BIT.ADF = 0;           // 変換終了フラグをクリア

     return(ADdata);               // 変換した値を持って返る
}



printf("××××"); の文を各行に入れて、プログラムがどこで止まっているか確認した結果、while文の前までは、×××× は表示され 
ましたが、while文の後に入れたら、表示されなくなりました。たぶん、  
AD変換が終了していない ことが、原因かなと思い、10分くらい待ってみたのですが、結果は同じでした・・・。


***********プログラムの全体です↓↓↓↓↓↓↓****************************

#ifdef __cplusplus
extern "C" {
#endif

#include "iodefine.h"

void main(void);
void initADC(void);
int  ADconv(void);

#ifdef __cplusplus
}
#endif

void main(void)
{
     PB.DDR     = 0xff;            // Port-Bを出力に設定
     PB.DR.BYTE = 0x00;

     initADC();                    // A/Dコンバータ初期化

     while(1){
    	
     	PB.DR.BYTE = (ADconv() >> 2);
     }    	
	
}
/ 
***********************************************************************/
void initADC(void)
{
     AD.DRA = 0;                   // データレジスタをクリア
     AD.CSR.BIT.ADF  = 0;          // A/D変換終了フラグをクリア
     AD.CSR.BIT.ADIE = 0;          // A/D変換終了割り込みを禁止
     AD.CSR.BIT.ADST = 0;          // A/D変換スタートフラグをクリア
     AD.CSR.BIT.SCAN = 0;          // A/D変換は単一モード
     AD.CSR.BIT.CKS  = 1;          // 変換時間は134ステート(高速)
     AD.CSR.BIT.CH   = 0;          // A/D変換はAN0ポートを使用
     AD.CR.BYTE = 0;
}
/ 
***********************************************************************/
int ADconv(void)
{
     int ADdata;

     AD.CSR.BIT.ADST = 1;          // A/D変換開始
     while(!AD.CSR.BIT.ADF) ;      // 変換終了待ち
     ADdata = AD.DRA >> 6;         // 変換されたデータをADdataに格納
     AD.CSR.BIT.ADF = 0;           // 変換終了フラグをクリア

     return(ADdata);               // 変換した値を持って返る
}

スレッド概略
[表示中](起点)
 ├[5130(1)]
 ├[5131(2)]
 ├[5132(3)]
 └[5136(4)]


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


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