月別アーカイブ: 2007年6月

不老山

20070617_furouzan.jpg不老山は丹沢の外れにある低山だ。名前が「不老」とあって、中高年に人気があるようだ。6月上旬はサンショウバラが多く見られることも知られている。遅咲きのサンショウバラを期待して久しぶりのハイキングに出かけた。

FTDI社製FT232Rの汎用I/Oポートの操作

先月試した SiliconLabs製のCP2103は汎用I/Oが4ビット付いている。電圧仕様は3.3Vなので気を使った。似たようなものにFTDI社製のFT232RLがある。こちらはI/O電圧が3.3Vと5Vより選択できる。なかなかよさそうなのでFT232Rを試してみる。まずはFT232RLの汎用I/O(CBUS)を操作する簡単なソフトを作成した。
1.環境

WindowsXP
VisualC++Express
MicrosoftPlatformSDK

2.必要なもの:FTDI社より下記ファイル

CDM 2.00.00.zip (ドライバ、DLL、Lib、ヘッダファイル)
MProg3.0_Setup.exe (EEPROM書き換えツール)

3.ソースリスト

#include < windows.h >
#include < stdio.h >
#include "FTD2XX.H"
int main(int argc, char *argv[])
{
char    cmd;
LPSTR   pos;
BYTE    data;
HANDLE  hc;
int     res;
char    Buf[64];
Buf[0] = 0;
if( argc < 2 || (toupper(*argv[1])=='W' && argc < 3 )) {
printf_s("FT232RCBUS r\nFT232RCBUS w 1100\n");
return( 0 );
}
cmd = *argv[1];
res = FT_ListDevices( 0,
Buf,
FT_LIST_BY_INDEX | FT_OPEN_BY_DESCRIPTION );
hc = FT_W32_CreateFile( Buf,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED
| FT_OPEN_BY_DESCRIPTION,
NULL );
if( hc == INVALID_HANDLE_VALUE ) {
printf_s( "Open Error:%s\n", Buf);
res = 11;
} else {
switch( toupper( cmd )) {
case 'R':
res = FT_GetBitMode( hc, &data );
if( res == FT_OK ) {
printf_s( "%x\n", data );
} else {
printf_s( "R command Error %d\n", res );
}
break;
case 'W':
pos = argv[2];
data = 0;
if( pos[0] == '1' ) data |= 0x08;
if( pos[1] == '1' ) data |= 0x04;
if( pos[2] == '1' ) data |= 0x02;
if( pos[3] == '1' ) data |= 0x01;
res = FT_SetBitMode( hc, 0xf0 | data, 0x20 );
if( res != FT_OK ) {
printf_s("W command Error %x\ndata %x\n", res, data );
}
break;
default:
printf_s( "FT232RCBUS r\nFT232RCBUS w 1100\n" );
break;
}
FT_W32_CloseHandle( hc );
}
return( res );
}

4.使い方。(PCに1つだけFT232RLを接続した場合を想定)
まずMProgツールでCBUSのビットをI/Oに設定してEEPROMを書き換えておく。
CBUS の出力状態を読む。

FT232RCBUS.exe r

CBUSの出力を変更する。(例:bit3とbit2を1に、bit1とbit0を0にする)

FT232RCBUS.exe w 1100

これをバッチファイルなどで利用する。

京都

20070602_kiyomizu.jpg6月2日から1泊で京都へ。町内組合の恒例行事の旅行に参加した。修学旅行シーズンなのでどこも学生が多く、混雑していた。南禅寺、清水寺、三十三間堂、金閣寺、大原三千院、嵐山、を見物。清水寺は世界遺産のためか特に人が多かった。三十三間堂ではたくさんの観音様がいるので一仏づつ お顔を見ていると時間が足りない。表情が違っておもしろいのだが。京都御所が宿から近かったので歩いてみた。広くて驚く。軽飛行機なら離着陸できそうだ。