楽墨堂ソフトウェア研究室:Digi Connect ME:GPIOを使ってみる
 

コモンライブラリを使用してGPIOを使ってみるテストプログラム。
以下のソースコードを/netos63_gnu/src/apps/に展開。
gpio_test.zip

ビルド方法:
NET+Works 6.3 Build Enviromentを起動
$ cd src/apps/ipinfo_test/32b
$ make PLATFORM=connectme clean all

使用する関数の説明:
void          init_gpio(unsigned char gpio_bit, unsigned char bDir);
unsigned char get_gpio(unsigned char gpio_bit);
void          set_gpio(unsigned char gpio_bit, unsigned char bVal);
これはコモンライブラリの関数。
gpio_bitにはgpio.hで定義されている
 GPIO_NUM_1
 GPIO_NUM_2
 GPIO_NUM_3
 GPIO_NUM_4
 GPIO_NUM_5
を指定する。
bDirにはgpio.hで定義されている
 GPIO_DIR_IN
 GPIO_DIR_OUT
のいずれかを指定する。
bVarには 0 もしくは 1 (0以外なら可)を指定する。

init_gpioはgpioの方向(入力・出力)を設定する関数である。
GPIOの3を出力に設定したい場合は
 init_gpio(GPIO_NUM_3, GPIO_DIR_OUT);
のように使用する。

get_gpioは指定したgpioの状態を取得するための関数である。
結果は 1 または 0 となる。
GPIOの2の状態を得るには
 get_gpio(GPIO_NUM_2);
のように使用する。

set_gpioは指定した出力設定されたgpioの出力を設定するための関数である。
GPIOの3の出力を 0 にしたい場合は
 set_gpio(GPIO_NUM_3, 0);
のように使用する。

プログラムの説明。

#include "flashftp.h"
#include "gpio.h"
コモンライブラリのうち利用する関数のヘッダ。

 NAsetSysAccess(NASYSACC_ADD, "user", "pass", NASYSACC_LEVEL_HTTP_R1 | NASYSACC_LEVEL_RW, NULL);
 flashftp_start("gpio_test");
これはログイン名とパスワードの設定後にフラッシュ書込み用ftpサーバを起動している部分。

 init_gpio(GPIO_NUM_1, GPIO_DIR_OUT);
 init_gpio(GPIO_NUM_2, GPIO_DIR_OUT);
 init_gpio(GPIO_NUM_3, GPIO_DIR_IN);
 init_gpio(GPIO_NUM_4, GPIO_DIR_IN);
 init_gpio(GPIO_NUM_5, GPIO_DIR_IN);
gpioの方向の設定部分。1と2を出力、3,4,5を入力に設定している。

 while (1)	{
  if (get_gpio(GPIO_NUM_5))	{
   set_gpio(GPIO_NUM_1, get_gpio(GPIO_NUM_3));
   set_gpio(GPIO_NUM_2, get_gpio(GPIO_NUM_4));
  }
 }
メインループ。
gpio5の入力が1のときは、
 gpio3の入力状態をgpio1の出力とし、
 gpio4の入力状態をgpio2の出力とする。


32b/makefileには
ROM用ファイルを作成しない指定:
 BUILD_ROM_IMAGE= 0
コモンライブラリファイル(flashftp.c, gpio.c)の追加:
 APP_C_FILES=root.c flashftp.c gpio.c
コモンライブラリへのソース検索パスの追加:
 vpath %.c ../../common
コモンライブラリへのインクルード検索パスの追加:
 APP_INCDIRS= -I.. -I../../common
を設定している。コモンライブラリを使う場合には同様の設定がmakefileに必要となるので覚えておくこと。


備考:

実行する前にボードのディップスイッチ(シリアルとGPIO切替用)を写真のように全て赤丸側にしておくこと。
これはGPIOで使用する各ビットがシリアルの信号線と共用しているためにGPIOで使用するようにするもの。
モニター用のシリアルのフローコントロールは使用しない設定にしておくこと。


実行してGPIOの入力用ディップスイッチの5と3をonにしたところ。(赤丸)
3がonなのでLEDの1番が点灯している。
なお、GPIOの3,4,5が入力なのでLEDの3,4,5はそれぞれ対応したGPIOの状態を示している。(ボードの仕様)


 
Copyright© 2006 Laksmi-Do Corp. All rights reserved.
連絡先(@を半角に) develop@laksmido.com