#include <3694.h> // H8 Tinyの内部I/O定義 // 送受信用バッファ char txb[20], rxb[20]; /*----------------------------------------------------------------------------*/ /* */ /* */ /* その他関数 */ /* */ /* */ /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------*/ /* 引数x20msウェイト */ /* (CPUクロック20MHz、1/128クロックで1カウントモード、156倍で19968クロック=約1mS) */ /*----------------------------------------------------------------------------------------*/ void wait (unsigned char speed) { long spd; spd = speed * 20; //引数を20倍 while (spd){ /*1mSウェイト*/ TV.TCRV0.BYTE = 0x03; //下の行と合わせて1/128クロックで1カウントモード TV.TCRV1.BYTE = 0X01; while(TV.TCNTV < 156); TV.TCNTV = 0; //カウンタクリア spd--; } } /*----------------------------------------------------------------------------*/ /* */ /* */ /* 2軸加速度センサー */ /* P12をX出力へ */ /* P11をY出力へ接続 */ /*----------------------------------------------------------------------------*/ /*------------------------------------------------------*/ /* X軸計測関数(P12からパルス入力) */ /*------------------------------------------------------*/ unsigned int Acc_X_OUT(void) { unsigned int tilt = 0; while (IO.PDR1.BIT.B2); //パルスの立下りまで待つ(P12) while (!IO.PDR1.BIT.B2); //パルスの立上がりまで待つ TA.TMA.BYTE = 0x13; //タイマーA、クロックの1/512カウントモード while (IO.PDR1.BIT.B2); //パルスの立下りまで待つ(計測終了) tilt = TA.TCA; //タイマーの値を変数へ格納 TA.TMA.BYTE = 0x1F; //タイマーAリセット return tilt; //結果を返す } /*------------------------------------------------------*/ /* Y軸計測関数(P11からパルス入力) */ /*------------------------------------------------------*/ unsigned int Acc_Y_OUT(void) { unsigned int tilt = 0; while (IO.PDR1.BIT.B1); //パルスの立下りまで待つ(P11) while (!(IO.PDR1.BIT.B1)); //パルスの立上りまで待つ TA.TMA.BYTE = 0x13; //タイマーA、クロックの1/512カウントモード while (IO.PDR1.BIT.B1); //パルスの立下りまで待つ(計測終了) tilt = TA.TCA; //タイマーの値を変数へ格納 TA.TMA.BYTE = 0x1F; //タイマーAリセット return tilt; //結果を返す } /*----------------------------------------------------------------------------*/ /* */ /* */ /* メインルーチン */ /* */ /* */ /*----------------------------------------------------------------------------*/ /*-----------------------------------------------*/ /* メイン */ /*-----------------------------------------------*/ void main(void) { /* 通信ポートを初期化 ボーレートは9600[bps]*/ SCI3_INIT (br9600, txb, sizeof(txb), rxb, sizeof(rxb)); EI; // 初期化後は割り込みを許可状態に /* 2軸加速度センサー入力ピンの設定*/ IO.PCR1 = 0x00; //P11とP12を入力ポートへ設定 while(1){ SCI3_PRINTF("TiltX=%d\n",Acc_X_OUT()); //X軸の角度 SCI3_PRINTF("TiltY=%d\n\n",Acc_Y_OUT()); //Y軸の角度 wait(50); } }