現在H8/3694Fのマイコンを使っていてKXM52-1050という加
現在H8/3694Fのマイコンを使っていてKXM52-1050という加速度センサから
加速度の電圧値を読み取ろうとしているんですがどうしてもX、Y、Z軸の値が
正常に出ません誰か助けてください。製作環境Gccで製作しています。
ソースはメインプログラムだけですが載せておきます。
void main(void) // メインルーチン
{
int sw; // swの状態を格納するための変数定義
long k; // A/D変換の変数定義
long ad,sei,syou; // A/D変換の値(整数部,小数部)を格納する変数の定義
long ad1,sei1,syou1;
long ad2,sei2,syou2;
unsigned long ad_data[3]; // A/D変換結果を格納する配列変数を定義
sw = 0; // swの初期化
set_adc(); // H8 A/Dコンバータを設定する
init_lcd(); // LCDをイニシャライズする
AD.ADCSR.BIT.ADST = 1; // A/D変換開始
//タクトスイッチが押されるまで、待機
while(1){
while(!AD.ADCSR.BIT.ADF); // 変換終了待ち
ad_data[0] = (unsigned long)AD.ADDRA >> 6; // AN0 A/D変換結果を変数(ad_data[0])に格納
ad_data[1] = (unsigned long)AD.ADDRB >> 6; // AN1 A/D変換結果を変数(ad_data[1])に格納
ad_data[2] = (unsigned long)AD.ADDRC >> 6; // AN2 A/D変換結果を変数(ad_data[2])に格納
AD.ADCSR.BIT.ADF = 0; // 変換終了フラグをクリア
for( k=0; k<=1; k++){
sw = IO.PDRB.BIT.B7; // swにsw14の状態を格納する
ad = (unsigned long) ad_data[0]; // 0~5[V]=0~1023でA/D変換値を取得
sei = ad * 5 / 1023; // 電圧値の整数部1桁
syou = (ad * 5 - sei * 1023) * 100L / 1023; // 電圧値の小数部2桁
for( k=1; k<=2; k++){
ad1 = (unsigned long) ad_data[1]; // 0~5[V]=0~1023でA/D変換値を取得
sei1 = ad1 * 5 / 1023; // 電圧値の整数部1桁
syou1 = (ad1 * 5 - sei1 * 1023) * 100L / 1023; // 電圧値の小数部2桁
for( k=2; k<=3; k++){
ad2 = (unsigned long) ad_data[2]; // 0~5[V]=0~1023でA/D変換値を取得
sei2 = ad2 * 5
お礼
わかりました。ありがとうございます!