EZ-USBとLED

工作

C言語で作成したプログラムからEZ-USBのポートに接続したLEDを制御してみます。

計算機からEZ-USBへのアクセスは、カメレオンUSBライブラリというCypressドライバのインターフェイスライブラリを使用しました。
また、プログラム自体は、オプティマイズで提供されているサンプルプログラム(DOS用)をGUIに改造したものです。
なお、今回は低電流用のLEDを使用しています。

環境

  • WindowsXP Professional SP3
  • MINI EZ-USB(AN2131SC)ver.2.0
    • http://strawberry-linux.com
    • http://optimize.ath.cx/index.html
  • Visual C++ ver.6.0 SP2
  • Visual C++ 2008 SP1
  • トランジスタ 2SC1815
  • Keil uVision
    • EZ-USB_devtools_version_261700.zip
    • http://www.cypress.com/

VC++ ver6からVC++ 2008への移行メモ

Win32で作っているので移行は簡単です。

  1. VC++ 2008で新規にWin32プロジェクト、空のプロジェクトで作成する。
  2. 作成したプロジェクトのディレクトリにHファイル、CPPファイル、RCファイルをコピーする。
  3. ソースファイルに「ezusb-led.cpp」、「cusb.cpp」を追加する。
  4. リソースファイルに「Script1.rc」、「resource.h」を追加する。
  5. 「プロジェクト」→「プロパティ」→「構成プロパティ」→「全般」→「文字セット」で「設定なし」、又は「マルチバイト文字セットを使用する」を選択する。
  6. ビルドする。

また、以下の宣言を「ezusb-led.cpp」のヘッダファイル宣言の下あたりに記述しておくと、セキュア関数の警告を抑制できます。

// セキュア関数「_s」を使用しない。Warining対策。
#pragma warning(disable : 4996)

配線図

立ち下がりでON。

メモ

  • コンパイルの際には拡張子を「c」から「cpp」に変更する必要がある。「cusb.c」→「cusb.cpp」
  • cusb_init関数の呼び出し時に第4引数、第5引数を(s8 *)でキャストする必要がある。
cusb_init( 0, &dev_handle, fw_bin, (s8 *)"RGIO", (s8 *)FW_VERSION )

参考文献

「ホストアプリ」と「FWの開発」の項を参照。
http://optimize.ath.cx/mini_ezusb/index.html

ソース

Port Bを出力、Port Cを入力に設定してLEDを点滅させる。
signed int型でカウントアップした値をunsigned charに変換して代入する。
0~255までを繰り返して、そのときbitが立っているPortBのLEDが点滅する。
簡単にするためにWindowsのタイマーを使用しています。

Comments