お知らせ:10月末まで応募可能な期間限定の無料メンター企画実施中

ITRON入門 デバイスドライバの準備とインターフェース仕様

ITRON入門カリキュラム
この記事は約8分で読めます。

こんにちは、ナナです。

本カリキュラムはITRONを使ったシステム構築が主になります。ハードウェア制御が主ではありませんので、デバイスドライバは事前に準備したものを利用しましょう。

デバイスドライバのファイルをプロジェクトに組み込みます。

スポンサーリンク

モジュール構成図とデバイスドライバ一覧

最初のシステム構成はマイコン入門編にて構築したモジュール構成を基本とします。本カリキュラムで徐々に拡張していきますが、最初はこの構成からスタートします。

モジュール構成図

※TIMERモジュールに関しては不要なため削除してあります。

スポンサーリンク

デバイスドライバのプロジェクト登録

デバイスドライバとして準備するモジュールとプロジェクトへの組み込み手順を示します。

マイコン入門編から本カリキュラムを受講している方

マイコン入門編から本カリキュラムを受講している方は、各自で作成したデバイスドライバのファイルをプロジェクトにコピーしましょう。

対象となるファイルは次のものです。
C:\WorkSpace\BeautoRoverRTOS\BeautoRoverの下にコピーしておきます。

  • led.c/led.h
  • sw.c/sw.h
  • lsen.c/lsen.h
  • sci.c/sci.h
  • spk.c/spk.h
  • motor.c/motor.h

※timer.c/timer.hに関してはITRONが提供する仕組みを利用するため不要です。

マイコン入門編を受講せずに直接本カリキュラムを受講している方

こちらの方は私の用意したデバイスドライバ用のファイルをプロジェクトに登録していただきましょう。ファイルをダウンロードし圧縮ファイルを解凍して次のフォルダにコピーしてください。

コピー先: C:\WorkSpace\BeautoRoverRTOS\BeautoRover

プロジェクトへの登録方法

プロジェクトフォルダにコピーしたファイルをHEWのプロジェクトに登録します。ファイルをドラッグして登録しましょう。

ファイル登録
スポンサーリンク

MAINモジュールの変更

デバイスドライバを利用するための最低限の処理をMAINモジュールに行っておきます。main.cを次のものに全て差し替えてください。

main.c

#include <stdio.h>

#include "kernel.h"
#include "iodefine.h"

#include "led.h"
#include "sw.h"
#include "lsen.h"
#include "sci.h"
#include "spk.h"
#include "motor.h"

//------------------------------------------------
//  内部プロトタイプ宣言
//------------------------------------------------


//------------------------------------------------
//  システムエントリーポイント
//------------------------------------------------
int main(void)
{
    // HOS起動
    sta_hos();

    return 0;
}

//------------------------------------------------
//  概  要:  MAINタスク
//------------------------------------------------
void MAIN(VP_INT exinf)
{
    while(1)
    {
        Led_setLight(D_LED_KIND_ORANGE, D_LED_LIGHT_ON);
        Led_setLight(D_LED_KIND_GREEN, D_LED_LIGHT_OFF);
        dly_tsk(1000);

        Led_setLight(D_LED_KIND_ORANGE, D_LED_LIGHT_OFF);
        Led_setLight(D_LED_KIND_GREEN, D_LED_LIGHT_ON);
        dly_tsk(1000);
    }

    return;
}

//------------------------------------------------
//  概  要:システム初期化
//------------------------------------------------
void Main_init(VP_INT exinf)
{
    //---------------------------------------------------
    //  ウォッチドッグタイマの停止(消さないこと)
    //---------------------------------------------------
    WDT.TCSRWD.BYTE = 0x92;
    WDT.TCSRWD.BYTE = 0x92;


    //---------------------------------------------------
    //  PCRの設定(PCRは書き込み専用レジスタ)
    //---------------------------------------------------
    IO.PCR3         = 0x0F;     //  P30,P31,P32,P33を出力(モーター回転方向制御)
    IO.PCR6         = 0x11;     //  P60,P64を出力
    IO.PCR7         = 0x00;     //  P74を入力


    //---------------------------------------------------
    //  モジュールの初期化(各モジュールの初期化を実施)
    //---------------------------------------------------
    Led_init();
    Sw_init();
    Lsen_init();
    Sci_init();
    Spk_init();
    Motor_init();
}

//------------------------------------------------

この状態でビルドしてビュートローバーを動作させると、オレンジとグリーンのLEDが変更前と同様に1秒間隔で点滅する動きになります。

デバイスドライバを組み込んだため、スイッチ状態を取得したり、スピーカーから音を出したり、モーターを回すなどインターフェース関数を呼べばハードウェアを制御できます。

マイコン入門編を実施していない人は、デバイスドライバのインターフェース関数を呼んで動きを確認してみるとよい!使い方を把握しておこう!

スポンサーリンク

デバイスドライバのインターフェース仕様

各デバイスドライバのインターフェース仕様を改めて紹介しておきます。

LEDモジュール:LED制御モジュール

1.提供ヘッダファイル名

#include “led.h”

2.定数定義

LEDの種別定義

3.インターフェース定義

3.1 初期化

Led_init関数仕様2

3.2 点灯・消灯の設定

Led_setLight2

SWモジュール:スイッチ制御モジュール

1.提供ヘッダファイル名

#include “sw.h”

2.定数定義

スイッチ定数

3.インターフェース定義

3.1 初期化

Sw_init関数仕様

3.2 押下状態の取得

Sw_getPressed関数仕様

LSENモジュール:光センサ制御モジュール

1.提供ヘッダファイル名

#include “lsen.h”

2.定数定義

なし

3.インターフェース定義

3.1 初期化

Lsen_init仕様

3.2 光センサ値の取得

Lsen_getSensor仕様

SCIモジュール:シリアル通信制御モジュール

1.提供ヘッダファイル名

#include “sci.h”

2.定数定義

なし

3.インターフェース定義

3.1 初期化

Sci_init関数仕様

3.2 文字の送信

Sci_putChar関数仕様

3.3 文字列の送信

Sci_putString関数仕様

SPKモジュール:スピーカー制御モジュール

1.提供ヘッダファイル名

#include “spk.h”

2.定数定義

音階定数定義仕様

3.インターフェース定義

3.1 初期化

Spk_init関数仕様

3.2 音の出力開始

Spk_start関数仕様

3.3 音の出力停止

Spk_stop

MOTORモジュール:モーター制御モジュール

1.提供ヘッダファイル名

#include “motor.h”

2.定数定義

走行方向の定数

3.インターフェース定義

3.1 初期化

Motor_init関数仕様

3.2 走行開始

Motor_runStart関数仕様

3.3 走行停止

Motor_runStop関数仕様

3.4 ON-OFF制御走行開始

Motor_runOnOff関数仕様

3.5 P制御走行開始

Motor_runPcon関数仕様