楽墨堂ソフトウェア研究室: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 |