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

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

picburn-0.1.27 リリースしました。

Posted by arms22 on 2008年05月31日 9  0

picburn-0.1.27 リリースしました。
主な変更点は次の通りです。

  • 読み込み/書き込み時間表示追加
  • デバイス定義追加
    PIC10F220 PIC10F222
    PIC12F510
    *PIC12F615 PIC12HV615 PIC16F616 PIC16HV616 PIC12F609 PIC12HV609 PIC16F610 PIC16HV610
    PIC16F631 PIC16F636 PIC16F639 PIC16F677 PIC16F687
    PIC16F685 PIC16F689 PIC16F690
    PIC16F716 PIC16F785 PIC16HV785
    PIC16F882 PIC16F883 PIC16F884 PIC16F886 PIC16F887
*印の点いたPICは動作確認済み。それ以外は未確認。

秋月の商品リストにあるものを重点的に追加しました。足りないデバイスがあれば追加してください。picburn.cfgを見れば大体書き方がわかります。
動作未確認のデバイスの動作確認報告お待ちしております。デバイスを送っていただければこちらで確認します;)

ダウンロードはこちら。
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.1.27.tar.gz

PICのMCLR端子を出力ポートとして使う。

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

EDN JapanにPICマイコンのMCLR端子を出力として使用という記事が掲載されています。MCLR端子の弱プルアップ機能を使ってMCLR端子を出力ポートとして使うってことなんだけど記事では次のように書かれている。

図1の回路は、6本の端子のうち、1本をアナログ入力として用い、ほかの3本を出力に使用する例である。通常の使い方では出力が1本足りないので、MCLR(GP3/MCLR)端子を出力として使用するのだ。なお、この図は簡略化したものなので、MCLR以外のI/O端子への接続は示していない。
pic_mclr_outport.gif
図1 MCLR端子を出力として使用する例

この回路では、MCLR端子を出力として用いるために、マイコンが備えるコンフィギュレーション可能な弱プルアップ機能を使用する。GP3/MCLR端子がMCLR端子としてコンフィギュレーションされていれば、コンフィギュレーションワードにより弱プルアップを有効にすることができる。


コンフィギュレーションワードってプログラムで変更可能だったっけ?OPTIONレジスタのGPPUの間違いじゃないの?。今回の場合、コンフィギュレーションワードでMCLR端子はGP3にして、OPTIONレジスタのGPPUで弱プルアップを有効無効切り替えるのが正解だと思う。

picburnをCygwin環境でコンパイルする。

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

picburnをCygwin環境でコンパイルしてみました。

当初、ftd2xx.libからシンボルを抽出しdlltoolでlibftd2xx.aを作ってリンクさせていたのですが、シンボルが見つからないといエラーに悩まされました。
色々試していくうちにftd2xx.dllをソースと同じディレクトリに置くだけでリンクが通ることを発見しました(理由は良く分かりません)。

コンパイル手順は次の通り。

  • D2XXドライバのインストール(Windows用)
  • ftd2xx.dllをpicburnのソースディレクトリにコピー
  • Makefileの5行目を次のように変更する
    TARGET = picburn
    ↓↓↓
    TARGET = picburn.exe

  • コンパイルしてインストール
    % make dep
    % make
    % cp picburn.exe /usr/local/bin
    % chmod 4755 /usr/local/bin/picburn.exe
    % mkdir /usr/local/share/picburn
    % cp picburn.cfg /usr/local/share/picburn
make installがうまく動かなかったので、cpで実行ファイルとデバイス定義ファイルをコピーしました。

D2XX Direct Drivers
http://www.ftdichip.com/Drivers/D2XX.htm

Installation Guides
http://www.ftdichip.com/Documents/InstallGuides.htm

picburn - PIC Programmer for FTDI devices

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

FT232R(FT245R, and FT2232C)のSynchronous Bit Bangを使ったPICプログラマ'picburn'を作成しました。プログラマにPICを使わないUSB接続型PICプログラマです(ややこしや~)。
秋月のFT232Rモジュールを使えば、トランジスタ3個と数本の抵抗だけで作ることができます(別途12V電源は必要です)。1Kワードの読み込みに1秒、1Kワードの書き込みに10秒程度とそこそこ早いPICプログラマです。

次の図はpicburnの回路図です。
picburnsch080527.png
FT232R周辺の回路は秋月のモジュールと殆ど同じです。トランジスタ周りの回路はオレンジ電子さんのWriter509を参考にしました。12V電源にはNJM2360を使っています。

制御ソフト
picw509をベースに picburn というソフトを作成しました。picw509と同様にコマンドラインベースでプラットフォームに依存しないコードで書かれています。linux、Windowsでも動作するはずです。開発はMacOSX(10.3.9)+gccで行っています。

D2XXドライバインストール
FTDIデバイスとの通信にD2XXドライバを使用します。次の記事を参考にD2XXドライバをインストールしてください。
http://arms22.blog91.fc2.com/blog-entry-148.html

picburnインストール
次のURLからソースコードをダウンロードしてください。
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.1.0.tar.gz
ダウンロードしたら展開してターミナルから次のコマンドを入力します。

% make dep
% make
% sudo make install
コンパイルが終わると実行ファイルとデバイス定義ファイルが次のディレクトリにコピーされます。
/usr/local/bin
/usr/local/share/picburn

使い方
# PIC16F84Aからの読み込み
% picburn -c PIC16F84A -r -o something.hex

# PIC16F84Aへの書き込み
% picburn -c PIC16F84A -pv -i something.hex

対応デバイス
  • PIC10F206 PIC10F204 PIC10F202 PIC10F200
  • *PIC12F683 *PIC12F675 PIC12F635 PIC12F629 *PIC12F509 PIC12F508
  • PIC16F917 PIC16F916 PIC16F914 PIC16F913 PIC16F877A PIC16F876A PIC16F874A PIC16F873A PIC16F877 PIC16F876 PIC16F874 PIC16F873 PIC16F88 PIC16F87 *PIC16F84A PIC16F84 PIC16F83 *PIC16F819 PIC16F818 PIC16F77 PIC16F76 PIC16F74 PIC16F73 PIC16F688 PIC16F684 PIC16F648A *PIC16F628A PIC16F627A PIC16F628 PIC16F627 PIC16F676 PIC16F630 PIC16F57
*印付きのPICのみ動作確認済み。それ以外のPICはソフトは対応したけど未確認。PIC18Fは未対応。

既知の問題
  • コードプロテクト(CP)をかけたプログラムのベリファイは必ず失敗する

良くある問題
  • ベリファイに失敗する
    CPがかかっている
    →無視する
    PGM端子がちゃんと処理されていない
    →GNDに接続する
  • Eraseできない
    VDD電圧が低い(VBUSからたくさん電流を取り出すとVBUS電圧が下がる)
    →VDD電源を別途設ける
  • 0x0000しか読み出せない
    CPがかかっている
    →EraseしてCPを解除する
    Program/Verify Mode に入れていない
    →VDD電圧、VPP電圧、PGM端子を確認する


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

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

またまた付録基板が付いてきます。

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

Interface2008年9月号(7月25日発売)にまたまた付録基板が付いてきます。今度はEthernet。Interface7月号の予告から搭載されるであろうマイコンを調べてみました。
パッケージのピン数と端子名で検索するとFreescale SemiconductorのMCF52235 ColdFire Microcontrollerが見つかりました。MCF52235のスペックは次の通り。

  • 最高57 Dhrystone 2.1 MIPS at 60MHz
  • eMACモジュールおよびハードウェア除算ユニット
  • 32KバイトのSRAM
  • 128/256KバイトのFlash
  • 10/100 Ethernet MAC(PHY付き)
  • 乱数ジェネレータ付き暗号化アクセラレーション・ユニット
  • CAN 2.0Bコントローラ(FlexCAN)
  • UART×3
  • QSPI
  • I2Cバス・インタフェース
  • 12ビットADC×8

SRAMとFlashのサイズも十分ですし、周辺回路もいいもの(DMA,PWM,UART,ADC,etc)積んでいます。Freescaleのマイコンは一度も使ったことがないので少し楽しみです。

MCF5223x: ColdFire V2コア搭載Ethernetマイクロコントローラ
http://www.freescale.co.jp/products/32bit/ColdFire/V2c/mcf5223x.html

さらにトランジスタ技術2008年8月号(7月10日発売)にも付録基板が付いてきます。
USBマイコン(NECエレクトロニクス製の78K)搭載。基板にUSBコネクタのパターンがあり、パソコンに直接させてすぐ動かせるようです。

さらにさらにトランジスタ技術2008年9月号(8月9日発売)にはプリント基板(部品未実装)が付いてきて、8月号のUSBマイコンと組み合わせて、グラフィック液晶付きマルチ・テスタの製作が行えるようです。

μPD78F073xマイクロコントローラ
http://www.necel.com/nesdis/image/U19014JJ1V0UD00.pdf

マルツ - NEC78K0 USBマイコン基板協賛キャンペーン
http://www.marutsu.co.jp/user/0805toragiusb_1.php

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シリアル変換モジュール

レモングミ空き箱吸煙機

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

Make Blogで紹介されていたキャンディー缶消臭機を作成しました。キャンディーの缶は手に入りませんでしたが、IKEAで買った謎のレモングミの空き箱を使って作成しました。
lemon_gumi_fume_ext_omote.jpg lemon_gumi_fume_ext_ura.jpg

用意した材料は、

  • ファン
    使わなくなったグラフィックボードから取り外した、
    横吐き出し型の30mm小型ファン。定格5V、0.14A。
  • ケース
    IKEAで買った謎のレモングミの空き箱。
  • HT7750(こちらの記事が詳しいです)
  • 活性炭フィルタ
    市販の吸煙機の交換用フィルタが手に入らなかったので、熱帯魚などの水槽用活性炭ろ過フィルターを使用(¥298)。
  • 単三電池2本
    電池は外付けです。HT7750を使って5Vに昇圧します。

lemon_gumi_fume_ext_inside.jpg lemon_gumi_fume_ext_haien.jpg

HT7750をデータシートの回路図通りに基板に実装し、ファン、フィルタ、基板を箱に詰め込んで出来上がりです。空き箱は紙なのでカッターナイフで簡単に加工できます。
使ってみて、すぐに吸い込みが弱い事に気がつきました。そもそもファンが小さ過ぎました。さらにフィルタで吸い込みが弱くなっていました。
半田コテとの距離を3cmぐらいまで近づけてやれば、そこそこ吸い込みました。次はもう少し大きなファンを使って作成したいと思います。

MAKE: Japan - HOW TO - キャンディー缶消臭機の作り方
http://jp.makezine.com/blog/2008/04/diy_fume_extractor_1.html

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変換モジュールは省略しています。

千石電商日本橋店行ってきました。

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

昨日の事ですが、千石電商日本橋店に行ってきました。場所はデジット、マルツがあるあたりです。ファーストインプレッションはマルツとシリコンハウスを足したような感じです。パソコン用のパーツとか評価キットなど沢山あります。
sengoku01.jpg

ON Semi、フェアチャイルド、STMなどのFETが沢山ありました。
sengoku03.jpg sengoku04.jpg

op-ampも沢山。
sengoku02

まだまだ準備中なのか、空の引き出しがいくつもありました。
デジットやマルツで見かけない部品もちらほらありました。これからの品揃えに期待です。

OSXでPICプログラミング

Posted by arms22 on 2008年05月03日 2  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

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