2013年10月30日水曜日

mbed LPC1768 で ユニバーサルモジュールを使う

mbedでAD 12bit 2chモジュールを使う場合の説明です。
MCU Gearの各プログラムをダウンロードしてmain.cppに以下のように記述すれば動きます。

サンプルプログラムの回路は以下のような物を想定しています。

LEDの回路などを接続し、スイッチに連動して任意のLEDを光らせます。

main.cは以下のように構成されています。

1、実際に関数の使い方
2、マイコンのピン設定(入出力設定など)
3、マイコンからモジュールに接続する配線情報の関数


#include "mbed.h"
//各種ファイルをインクルード
#include "MCUGearBase.h"
#include "MCUGear.h"
#include "common.h"//このファイルの中にある#define LPC1768_mbedを有効、//#define FS_KL25Zを無効にする

MCUGear Uni2M(p28, p27, N_VDD_VDD_VDD,8);//モジュールの定義をUni2Mという名前にし、I2Cピン番号、基板裏面に設定したアドレス、モジュールで使用したい端子数今回は8。II2Cでデジタルスイッチ群を操作しデジタル配線を再構築しています

//IOの設定を記述
DigitalOut Dout1(p16);
DigitalOut Dout2(p21);
DigitalOut Dout3(p22);
DigitalOut Dout4(p23);
DigitalOut Dout5(p24);
DigitalIn Din1(p9);
DigitalIn Din2(p10);



//使用する関数をあらかじめ宣言
void IOUni2M(MCUGear *mcugear);                 //IO setting for 2 Connector Universal module 


int main() {

    int SW1,SW2;//スイッチ入力の状態を一旦保存する変数
    initBase(); //ベースボードの初期化
    


    IOUni2M(&Uni2M);//ユニバーサルモジュールのIO情報を保存


    while(1) {//以下、ループ

       //2 connector universal module ------------------------------
       //あらかじめ出力端子をHighにしておく
       Dout = 1;
       Dout1 = 1;
       Dout2 = 1;
       Dout3 = 1;
       Dout4 = 1;
       Dout5 = 1;
       
       Uni2M.connectModule();   //connect---//ユニバーサルモジュールに動的に配線します

       //後は普通のデジタル回路として使えます。
       SW1 = Din1.read();//スイッチの状態を読みます。
       SW2 = Din2.read();
       
       if(SW1 == 1){//スイッチの状態に合わせて出力を変化させ、LEDをONOFFします。
            Dout = 1;
            Dout2 = 1;
            Dout3 = 1;
       }else{
            Dout = 0;
            Dout2 = 0;
            Dout3 = 0;
       }
       if(SW2 == 1){
            Dout1 = 1;
            Dout4 = 1;
            Dout5 = 1;
       }else{
            Dout1 = 0;
            Dout4 = 0;
            Dout5 = 0;
       }
       
       Uni2M.disconnectModule();   //disconnect---//ユニバーサルモジュールとの配線を切断します。

    }    
}



//マイコンのどの端子をどのモジュールに当てはめるかを定義し、保存します。
void IOUni2M(MCUGear *mcugear){

    uint8_t fio[12];
    mcugear->detect_module(fio);//モジュールの取り付け位置を把握します

    mcugear->savePinSetting(0, IO_MBED_P9, IO_REG_IN_DIR, fio[0]);  //input
//ここでは「モジュールの0番端子に、mbedのP9番端子をmbedから見て入力方向に設定する」という意味です

//同様に以下のように設定していきます
    mcugear->savePinSetting(1, IO_MBED_P10, IO_REG_IN_DIR, fio[1]); //input
    mcugear->savePinSetting(2, IO_MBED_P15, IO_REG_OUT_DIR, fio[2]);
    mcugear->savePinSetting(3, IO_MBED_P16, IO_REG_OUT_DIR, fio[3]);
    mcugear->savePinSetting(4, IO_MBED_P21, IO_REG_OUT_DIR, fio[4]);
    mcugear->savePinSetting(5, IO_MBED_P22, IO_REG_OUT_DIR, fio[5]);
    mcugear->savePinSetting(6, IO_MBED_P23, IO_REG_OUT_DIR, fio[6]);
    mcugear->savePinSetting(7, IO_MBED_P24, IO_REG_OUT_DIR, fio[7]);

#ifdef BOOST_MODE
    mcugear->makeCircuit();//これは再構築をショートカットするためにベースボードに配線情報を保存する関数です。追々説明していきます。
#endif

}






0 件のコメント:

コメントを投稿