[H8-ML(2821)] H8/3067Fを使用してセンサの値をA/D変換する
From: "one two" <km40vey6f@xxxxxxxxxxx>
Date: 2003年02月19日(水)15時50分23秒
お世話になっています。あっちゃんです。
まえのモニターデバッガソフトの件は解決いたしました。


今度は、Htermを使用してセンサの値を表示させるプログラムを作りました。
前の文字と数字を出力するのものを参考につくりましたが、なぜか、right=のところ
しか表示されません。後、数字がいつも違うのです。センサをCPUに取り付けていな
いので常に0じゃないとおかしいと思うのですが・・・。センサは3つと考えていて
左、中、右としています。

マイコン:AKI-H8 3067F
モニター:AKI-H8 3067Fに付属していたものモニターデバッガソフト(モードは5)



コンパイラ:AKI-H8マイコン専用Cコンパイラ(秋月のもの)
通信ソフト:Hterm
OS:Windows 2000
通信:RS232C


Cソースプログラムを下記に示します。

/* センサプログラム */

/* モニターにセンサの値を表示する */

/* AN0〜AN2までスキャンモードでA/D変換する */

/* sensor.c */

#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <stddef.h>
#include <3067f.h>

/* シリアルコミュニケーションのプログラム */

typedef enum { br4800=129,br9600=64,br19200=32,br38400=15}BAUDRATE;
/* 初期化 */  /* ボーレートを設定。9600から19200まで定義 動作クロック
20MHz */

void H8SCI_INIT(char b){
	int i;
	SCI1.SCR.BYTE=SCI1.SMR.BYTE=0;
	SCI1.BRR=b;            /* ボーレート */
	for(i=0;i<1000;i++);   /* 待つ */
	SCI1.SCR.BYTE=0x30;    /* 送受信許可 */
	SCI1.SSR.BYTE;         /* ダミーリード */
	SCI1.SSR.BYTE=0x80;    /* エラーフラグクリア */
}

/* 1文字送信 */
void H8SCI_OUT_DATA(char c){
	while(SCI1.SSR.BIT.TDRE==0); /* TDREが1になるのを待つ */

	SCI1.TDR=c;         /* データを入れる */
	SCI1.SSR.BIT.TDRE=0;/* フラグをクリアにする */
}

/* 文字列送信 */
void H8SCI_OUT_STRING(char *st){
	while(*st) H8SCI_OUT_DATA(*st++);/* 文字列がなくなるまで順次出力 */
}



/* mainスタート */

void main(void){
	int i,AN0,AN1,AN2;
	char buf[150];             /* 文字列バッファを用意 */

        AD.CSR.BYTE = 0x32;      /* AN0〜AN2(ライン用センサ)までをスキャン
モードに設定 */ 
  
        while(AD.CSR.BIT.ADF == 0){}   /* AN0〜AN2まですべてのデータがA/D変
換されて揃うまで待つ */

         AN0= AD.DRA >>6; AN1 = AD.DRB >> 6; AN2 = AD.DRC >> 6  ;
 
	H8SCI_INIT(br19200);       /*  19200に通信速度を設定 */
	sprintf(buf,"sensor \n\r");/* bufに"センサの値を設定" */
	H8SCI_OUT_STRING(buf);     /* 通信ポードに通信 */
	for(i=0;i<1000;i++)          /* 0〜19までの数字を送信 */
	{   
            sprintf(buf, "left=%d\n\r",AN0);
            sprintf(buf, "center=%d\n\r",AN1);
            sprintf(buf, "right=%d\n\r",AN2); 

	    H8SCI_OUT_STRING(buf);     /* 文字列を通信ポートに出力する */
	}
	while(1){}
}




宜しくお願いいたします。
かなり追い込まれています。



_________________________________________________________________
ハイセンスな商品を気軽に購入 MSN ショッピング   http://shopping.msn.co.jp/  

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


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


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