なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

MacOSXでFTDIのBit-Bangモードを試す(2)

Posted by arms22 on 2008年05月19日 0  0

今回は FT232R, FT245R, FT2232C デバイスのみ使える Synchronous Bit Bang Mode を試す。

Synchronous Bit Bang Modeは書き込みの前に読み込みが行われるMode。1byte書き込むと、1byte読み込まれる。16byte読み込みたければ、16byteの書き込みを行う。
ポートの初期値が0xffの時、0x55, 0xaaの2byteをWriteすると、ポートの出力は次のように変化する。

0xff 0x55 0xaa
2byteのWriteに続けて2byteのReadを行うと次の値が読み込まれる。
0xff,0x55
0x55のWriteに対して0xffが読み込まれ、0xaaのWriteに対して0x55が読み込まれる。

次の図はSynchronous Bit Bang ModeのR/Wのタイミングと波形。
sync_bit_bang_3.png


ループバックテスト
次のようにD0-D3端子をD4-D7端子に接続し、簡単なループバックテストを行った。
D0端子-->D4端子
D1端子-->D5端子
D2端子-->D6端子
D3端子-->D7端子
D0からD3端子を出力に設定。D4からD7端子を入力に設定。0x0から0xfの16byteの値をWrite。16byteのReadを行った結果は次のとおり。
rx[0] ff
rx[1] 00
rx[2] 11
rx[3] 22
rx[4] 33
rx[5] 44
rx[6] 55
rx[7] 66
rx[8] 77
rx[9] 88
rx[a] 99
rx[b] aa
rx[c] bb
rx[d] cc
rx[e] dd
rx[f] ee

気をつけないといけない点は、
  • Writeの前にReadされる
  • 1byte目のReadの結果は最後にWriteした時の値
  • 16byte目のWriteに対する値が欲しい場合、17byte Writeして16byte目のReadの結果を使う

サンプルコードは続きを読むで。

FT232RBitBangModes.pdf
http://www.ftdichip.com/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf
FTDI Application Notes
http://www.ftdichip.com/Documents/AppNotes.htm

スポンサーサイト



MacOSXでFTDIのBit-Bangモードを試す

Posted by arms22 on 2008年05月18日 2  0

FTDIのUSBシリアル変換IC FT232RL にはデータ端子を8bitの双方向IOポートとして使う Bit-Bang モードがあります。このモードを使えば FT232RL に接続したハードウェアをPCアプリから直接制御することができます。

秋月電子から FT232RL を搭載したUSBシリアル変換モジュールが販売されています。Writer509用にこのモジュールを購入したのですが、汎用IOポートとして使えると分かってかなり得した気分です。早速このモジュールを使って Bit-Bang モードを試したいと思います。

D2XXドライバのインストール
FTDIから Bit-Bang モードを利用する為の D2XX ドライバが提供されています。D2XX ドライバは Windows, Linux, MacOSX と各種プラットフォーム用のドライバが提供されています。
ここからMacOSX用のD2XXドライバをダウンロードしてきて、次のようにターミナルから手動でインストールします(※管理者権限が必要です)。

cp libftd2xx.0.1.0.dylib /usr/local/lib
cd /usr/local/lib
ln -sf libftd2xx.0.1.0.dylib libftd2xx.dylib

VCPドライバのアンロード
D2XXドライバとVCP(仮想COMポート)ドライバは同時に使用できないため、VCPドライバがインストールされている場合は、VCPドライバをアンロードします(※要管理者権限)。
kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext
OSXを再起動すれば、またVCPドライバはロードされます。VCPドライバを再ロードしたい場合は次のようにします(※要管理者権限)。
kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext
VCPドライバをアンインストールしたい場合は、次のファイルを別の場所に移動させます(※要管理者権限)。
/System/Library/Extensions/FTDIUSBSerialDriver.kext


LEDチカチカ
ブレッドボードに簡単なLED制御用の回路を作成。
bit_bang_led_test.jpg

D2XXドライバに付属していたサンプルを元に標準入力から入力された数値を、D0~D7端子に出力するプログラムを作成した。D0にLEDが接続されているので、'1'と入力するとLEDが点灯、'0'と入力するとLEDが消灯する。ソースコードは続きを読むで。

Bit-Bangモードの使い方
FTDI社USB-8ビットパラレル変換器FT245RLをMacOSXで使う
USB パラレル FTDI FT245RL を使ってみる
FT232RL USBシリアル変換モジュール

OSXでPICプログラミング(2)

Posted by arms22 on 2008年05月06日 0  0

OSXでPICプログラミングの続きです。ブレッドボードに組み立てていたWriter509をユニバーサル基板に実装しました。
writer509_univ.jpg

左からUSB-to-Serial変換モジュール、制御用PIC12F675、NJM2360、ICソケット(写真では16F84Aがささっています)。VPP電源にNJM2360を使う事にしました。安いし、マイクロインダクタを使えばサイズもまぁまぁ抑えれます。最終回路は次のようになりました。
writer509_sch.jpg

オリジナル回路からの変更箇所は、

  • VPP電源ONOFF用トランジスタのベースにダイオードを追加
  • VPP電源にNJM2360を使用
NJM2360の過電流検出用の抵抗は省略しています。なくても大丈夫、、と思う。USB-to-Serial変換モジュールは省略しています。

OSXでPICプログラミング

Posted by arms22 on 2008年05月03日 1  0

writer509_brb01.jpg writer509_brb02.jpg

普段、PICのソースコードはOSX、書き込みはRCDライタとWindowsノートPC、と2台のPCを使い分けています。HEXファイルの移動やその他もろもろの作業が面倒になってきたので、OSX用のライタを製作しました。

今回作ったライタはオレンジ電子工作さんのWriter509です。
Writer509はシリアルポートを使う事を前提に設計されていますが、Macにはシリアルポートなどのレガシーなインターフェースはありませんので、ライタとの通信はUSB-to-Serial変換ICを使って行います。
FENG3さんがFT232RLを使ったWriter509を製作されています。回路図も公開されているので、こちらを参考に製作しました。USB-to-Serial変換は秋月のFT232RLモジュールを使用しました。
制御プログラムはpicw509というLinux用のプログラムをOSX用に少し修正して使っています。

[Vpp電源(12V)]
書き込み用のVpp電源をどうするか色々悩んでいます。幾つかの方法がありますが、現状PICでVBusから12Vを生成しています。以下、幾つかの方法。

  • 006P電池×2からレギュレータで降圧
    簡単、部品少なめ。電池がもったいない?
  • MAX662Aを使ってVBusから12Vへ昇圧
    簡単、部品少なめ。秋月で¥400。
  • NJM2360Aを使ってVBusから12Vへ昇圧
    オリジナルの昇圧部と同じ。部品多め。デジットで¥130。
  • PIC(12F683)でVBusから12Vへ昇圧
    部品多め。制御用PICも12F683にして、デュアル683ライタとか?

[ボーレート]
デフォルトの38400bpsだとフレミングエラーが発生し、制御用PICとうまく通信できませんでした。38400bpsから19200bpsに変更したらうまく通信できました。これは多分ブレッドボードで仮組した状態だった為でしょう。半田付けしたらうまくいくかも。

[制御プログラム]
オリジナルからの変更箇所。
  • ボーレートの設定追加
  • デバイス定義追加(v2.53のDeviceSpec.pasベース)
    -hで対応デバイス一覧が見れます。
  • 細かなバグ修正

make & install
% make
% sudo make install

picw509とpicw509.cfgが以下のフォルダにコピーされる。
/usr/local/bin
/usr/local/share/picw509

使い方はこんな感じ。
# ライタの確認、デバイスの確認
picw509 -d /dev/cu.usbserial-A5002xZv -c PIC12F683 -k -s 19200
# 読み出し
picw509 -d /dev/cu.usbserial-A5002xZv -c PIC12F683 -r -o out.hex -s 19200
# 書き込み
picw509 -d /dev/cu.usbserial-A5002xZv -c PIC12F683 -pv -i in.hex -s 19200
  • -d
    ポート指定。/dev/cu.xxxx
  • -c
    デバイス指定。PIC16F84Aなど。
  • -s
    通信速度。オプションなしの場合38400bps。
  • -r -o out.hex
    読み出しと出力ファイル名。
  • -pv -i in.hex
    ライト&ベリファイ。入力ファイル名。

今後の予定。
  • ユニバーサル基板に実装
  • 12F508/509などUserIDAddress が2000、ConfigAddress1が2007以外のPICの対応

ボーレートを19200bpsに変更した制御用PICファームウェアとOSX用に修正したpicw509をこちらに置いておきます。
http://xfind.hp.infoseek.co.jp/electric/writer509/20080503/12F675Ia.zip
http://xfind.hp.infoseek.co.jp/electric/writer509/20080503/12F683Ia.zip
http://xfind.hp.infoseek.co.jp/electric/writer509/20080503/picw509_v0.2a.zip

関連URL
オレンジ電子工作 PIC Writerを作る
http://www.geocities.jp/orange_denshi/writer509.html

USB接続(可能な)PICライタの探求(4)
http://feng3.cool.ne.jp/usbpgm/index4.html

PIC Writer 509 for Linux
http://senta.s112.xrea.com/senta/product/picw509/picw509.html

Xfind 0.8.7 リリースしました。

Posted by arms22 on 2007年07月23日 6  0

Xfind 0.8.7 リリースしました。
今回のリリースはいくつかのバグフィクスとほそぼそとした機能の追加がメインです。
※appcast経由でアップデートを行うと失敗してしまうので、
今回は手動アップデートをお願いいたします。。

XfindはMacOSX用の2画面ファイル管理ソフトです。
右と左に2つのファイル表示画面をもっていて、右画面から左画面、 左画面から右画面へのファイル操作を想定して作られています。
基本操作はすべてキーボードのみで行えます。
マウスが嫌いな方、キーボードだけでMacを操作する人にぴったりです。

ダウンロードはこちらから
http://xfind.hp.infoseek.co.jp/downloadcenter.shtml

Xfind希望、要望、バグ報告はこちら
http://arms22.blog91.fc2.com/blog-entry-92.html

主な変更点
・シンボリックリンク作成機能追加(lキー)
・ウィンドウ移動機能追加(cmd+~ cmd+`)
・日付フォーマット変更(時分表示)
・Windowsで圧縮したZIP書庫を解凍できない不具合を修正
・ドライブ間の移動がコピー動作になる不具合を修正

Xfind 0.8.6 リリースしました。

Posted by arms22 on 2007年05月05日 1  0

Xfind 0.8.6 リリースしました。
今回のリリースはいくつかのバグフィクスと使い勝手の向上を狙った機能の追加がメインです。

XfindはMacOSX用の2画面ファイル管理ソフトです。
右と左に2つのファイル表示画面をもっていて、右画面から左画面、 左画面から右画面へのファイル操作を想定して作られています。
基本操作はすべてキーボードのみで行えます。
マウスが嫌いな方、キーボードだけでMacを操作する人にぴったりです。

ダウンロードはこちらから
http://xfind.hp.infoseek.co.jp/downloadcenter.shtml

Xfind希望、要望、バグ報告はこちら
http://arms22.blog91.fc2.com/blog-entry-67.html

主な変更点
・イジェクト機能追加(cmd+Eキー)
・フォルダ表示で時々強制終了する不具合を修正
・ZIP書庫をパーミション付きで展開するように修正
・初期設定パネルを追加
・Finderで開く機能を追加(shift+Enterキー)
・エディタで編集する機能を追加(eキー)
・ターミナルで開く機能を追加(F2キー)
・ファイルを比較する機能を追加(=キー)

Xfind開発近況

Posted by arms22 on 2007年02月18日 0  0

20070218005343.png

MacOSX用2画面ファイル管理ソフト、Xfindの開発近況報告です。
相変わらず見た目はほとんど変わっていません。
前回2006年03月26日のバージョン0.8.4をリリースしてからほぼ一年。そろそろ次のバージョン、0.8.5をリリースしようかと考え中です。
去年末からXfindのプログラムを大幅に書き換え、大規模な機能アップをはかっておりました。
0.8.5からはプラグインを使用して機能を拡張できるようにしています。主要な機能のほとんどをプラグインで実現しています。プラグイン作成用のフレームワークも用意しているので、ユーザーが自由に機能を追加することができます。
※フレームワークのリリースは1.0以降にする予定です。
20070218004314.png

これは現在のXfindの設計モデルです。
真ん中にあるXfindBufferというクラスが基本クラスで、XfindBufferを継承したXfindDirBuf、XfindBufferList、XfindUnZip、XfindFavorites、XfindFindFileがそれぞれディレクトリ機能、バッファリスト(旧履歴)、Zipファイル書庫、お気に入り機能、ファイル検索機能になっています。これらはすべてプラグインとして実装されているので、自由に入れ替え可能です。
まだ開発に着手していませんが、今後はGMailFSやFTP,HTTPなどネットワーク機能の強化、tarやLZhなどZip以外のアーカイブにも対応したいと思っています。
次バージョン0.8.5はもうしばらくお待ちください。

MacOSXでEZ-USB FX2LP

Posted by arms22 on 2007年01月26日 0  0

オプティマイズ MINI FX2

オプティマイズのMINI FX2を入手した。MINI FX2はEZ-USB FX2LP(Cypress CY7C68013A)を搭載したUSB2.0ハイスピード(480Mbps)に対応したボードだ。EZ-USB(Cypress AN2131SC)を搭載したボードの何倍も早いぜ!

MacOS XでCypress EZ-USBを参考に開発環境を構築。以下、そのメモ。

用意したもの。
・MINI FX2 (オプティマイズ)
・SDCC (Smalle Device C Compiler) 2.6.0
・libusb 0.1.1.12
EZ-USB FX2LP Development Kit
・Ezload (Xcodeのサンプル・コード)


・SDCCのインストール
CypressのDevelopment KitにはKeil(評価版)が付属するが、MacOSXでは使えないのでSDCCをインストールした。MacOSX用のバイナリは↓からダウンロードできる。
http://sourceforge.net/project/showfiles.php?group_id=599

圧縮ファイルを解凍し/Developer/SDCCへコピーする。
shallの実行時パスに/Developer/SDCC/binを追加する。
~/.bash_profileに次の行を追加する。
export PATH=$PATH:/Developer/SDCC/bin


・libusbのインストール
libusbはLinux,FreeBSD,MacOSXに対応した汎用USBライブラリで、ユーザレベルのアプリケーションからUSBデバイスを制御できる。
ソースコードを↓からダウンロード。
http://libusb.sourceforge.net/

% ./configure
% make
% sudo make install


・EZloadのビルド
EzloadはEZ-USB(Cypress AN2131SC)にしか対応していないので、EZ-USB FX2LP(Cypress CY7C68013A)に対応させる。
必要なのはCPUコントロールレジスタのアドレス変更だけで、次の行を置き換えるだけだ。

105: #define k8051_USBCS 0x7F92

105: #define k8051_USBCS 0xE600

あとここで配布されているパッチをあてておく。
このパッチでEzloadの引数(VenderIDとProductID)に16進数を使えるようになる。
できた実行ファイルは/Developer/SDCC/binにコピーしておくと後で便利。


・EZ-USB FX2LP Development Kitの移植
CypressのページからEZ-USB FX2LP Development Kit(SETUP_FX2LP_DVK_1004.exe)をダウンロードする。
Development Kitはexeで配布されているのでインストールにはwindowsが必要だ。
Development KitにはUSBに必要な処理がほとんど記述されたフレームワークとライブラリが含まれている。
しかしこれらのコードはKeil用でSDCC用に移植する必要がある。
fenrir's Blogのこの記事を参考に移植を行った。
大量のシンタックス書き換えとアセンブラの書き換えで移植は完了。移植したコード

・ファームウェアのダウンロード
テスト用のファームウェアはDevelopment KitのExamples/bulkloopをSDCCでコンパイルできる様に修正したもの使います。bulkloopはバルク転送のテスト用ファームウェアでEP02OUTからのデータをEP06INに、EP04OUTからのデータをEP08INに書き出す簡単なプログラムです。

ファームウェアの動作確認をする為にlibusbを使ったテストツールも作成しました。
ターミナルからの入力をEP2OUTに書き込み、EP6INから読み出す単純なプログラムです。
ソースコードとバイナリを置いておきます。

↑で作成したファームウェアをMINI FX2にダウンロードします。
fw.hexというファイルがあるので、それを04B48613.hexにリネームし次のコマンドでファームウェアのダウンロードを行います。

% Ezload 0x04B4 0x8613

ファームウェアのダウンロードはすぐに完了します。
このMacについて→詳しい情報→ハードウェア→USB装置ツリーを表示して、EZ-USBの名前があるか確認。
次にテストツールを起動してコマンドラインに適当な文字を入力。
64バイト毎にデバイスにデータが転送され、入力したデータがエコーバックされます。


参考URL
MacOS XでCypress EZ-USB
http://homepage.mac.com/raktajino/EZ-USB/EZUSBintro.html

オプティマイズ EZ-USB FX2
http://optimize.ath.cx/FX2_USB/index.html

nandのページ
http://homepage.mac.com/nand/Menu6.html

fenrir BLog
http://fenrir.naruoka.org/

CYPRESS
http://www.cypress.com/

SDCC
http://sdcc.sourceforge.net/

libusb
http://libusb.sourceforge.net/

該当の記事は見つかりませんでした。