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

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

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

Posted by arms22 on 2009年02月27日 3  0

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

  • Windows用picburnを実行するとcygwin1.dllが見つからないという問題に対応

去年の10月くらいに報告されていた問題なんだけど、ず~とほったらかしでした。ずみまぜん。。。


対応デバイス一覧
http://arms22.blog91.fc2.com/blog-entry-157.html

Windows用バイナリ
http://dl.dropbox.com/u/14188987/isweb/picburn/picburn-0.5.2-i386-mingw.zip
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.5.2-i386-mingw.zip

ソースコード
http://dl.dropbox.com/u/14188987/isweb/picburn/picburn-0.5.2.tar.gz
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.5.2.tar.gz


自作USBデバイスを開発したい人にオススメの本

Posted by arms22 on 2009年01月09日 0  0

自作USBデバイスを作るにあたって、参考にした本を紹介します。
※今週はあまり作業がすすまなかったので、積読本の消化にあてました。



各種USBコントローラの使い方・解説、USBデバイスドライバの開発、USBデバイスの設計&製作例が沢山載っています。回路図も沢山あるので、使ってみたいUSBコントローラの回路図がすぐに役に立つと思います。USBN9602/03/04、EZ-USB SX2、EZ-USB FX2、USBホストSL811FC、FT8U232/245など。




↑の本と似通った内容なのでどちらか1冊あれば十分かな。中身をみて参考にしたいコントローラの解説があるほうを選べばよい。FT232/245/2232の解説が欲しい人はこっちかな。。けどFT232はBMのほうだったり、、BMのほうはシンクロナスビットバンモードが使えません。


PICで楽しむ USB機器自作のすすめ
後閑 哲也
技術評論社
売り上げランキング: 59279
価格: ¥ 2,814


PICで作ることが決まっているならこれ!本書ではUSBフレームワーク、USB関連レジスタの説明・使い方が丁寧に解説されています。本書で解説されているUSBフレームワークのバージョンは1.1です。最新のUSBフレームワークのバージョンは2.0。バージョン2.0ではファイル構成が大きく変わっていますが、コード自体それほど変わっていなさそうなので、本書の解説は役に立ちます。



なんでも作っちゃう、かもストア: USB関連書籍
http://astore.amazon.co.jp/nandemotukuty-22?_encoding=UTF8&node=29

なんでも作っちゃう、かも。: 自作USBデバイス
http://arms22.blog91.fc2.com/blog-category-24.html

PIC18F2550でUSB入力デバイスを作る(6)。

Posted by arms22 on 2008年10月12日 0  0

ロータリーエンコーダキーボード表
ロータリーエンコーダキーボード用アルミフレームに部品を取り付けてみました。なかなかの見栄えです。取り敢えずロータリーエンコーダを四つ取り付けています。1つはプッシュスイッチ付き。

ロータリーエンコーダキーボード裏
裏側です。右側の黒いケースはテイシン電機のTB-55B(W80xD50xH20mm)。アルミフレームと同じ幅(80mm)なのでぴったりです。基板用ケースとしての役割以外にロータリーエンコーダを取り付ける為の隙間を作るゲタの役割も果たしています。この写真を撮った時点ではケースの中身は空です。

ロータリーエンコーダキーボード基板
ケースの中身です。メインのマイコンPIC18F2550がのっています。LEDとスイッチはブートローダー用。

ロータリーエンコーダキーボード用アルミフレームはまだ9枚残っています~。欲しい方、作ってみたい方はコメント(メールアドレスは非公開)、もしくは arms22 at gmail.com までご連絡ください。
アルミフレームのサイズはW80xD130xH3、ロータリーエンコーダやボリュームが取り付けられる7φの穴が計35個あります。1枚1600円です。
※図面はあとでアップします。

PIC18F2550でUSB入力デバイスを作る(4)。

Posted by arms22 on 2008年09月08日 0  0

P1430010.jpg

6つのロータリエンコーダを使ったキーボードをブレッドボード(パンじゃないですよ!)に実装しました。とりあえずSafariに特化して次のようにキーを割り当てた。左のロータリエンコーダから右回り、左回りの順で記載。

  • TAB、シフトTAB
  • コマンド+]、コマンド+[ ※Safariでは「次に進む」「前へ戻る」
  • カーソル→、カーソル←
  • カーソル↓、カーソル↑
  • ページダウン、ページアップ
  • Volアップ、Volダウン
ロータリーエンコーダのデコード方法はELM-ChaNさんのページが参考になります。ロータリーエンコーダの出力(A相、B相)を2bitのバイナリコードとして扱い、前回値と今回値をテーブルのインデックスとし、変換テーブルを使って回転方向を判定します。

ロータリーエンコーダの使い方
http://elm-chan.org/docs/tec/te04.html

usbencoders.png

回路図です。ロータリーエンコーダの出力をPICのポート1つ1つに割り当てています。6ロータリーエンコーダ×2出力で12ポート使用しています。このままだとLEDやスイッチを追加していくにはポートが足りなくなりそうです。そこで、次のようにマトリクス上にロータリーエンコーダを配線する方法を思いつきました。こうすれば12ポートを7ポートまで減らせるかもしれない。

matrix.png

SEG1-SEG2は常時入力ポートにしておき、読み取りを行う直前にSEG1-SEG2いずれかを出力Lにする。SEG1-SEG2を順番に出力Lにして、REnc1-A/REnc1-B、REnc2-A/REnc2-Bを読み込めば、6ロータリーエンコーダすべての値が読みとれる。SEG1-SEG2は3-to-8-ラインデコーダが使える、、あ、ラインデコーダじゃ非アクティブポートをHi-Zにできないわ。

PICのファームウェアは前回作成したHIDKeybordをベースに作成しました。USB経由でファームウェアを更新できるようUBWに対応しました。UBWについてはこちらのWikiが参考になります。

memo/UBW - 千秋ゼミ
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?memo%2FUBW

UBWに対応する為にやるべきことは次の四つ。
  • ブートモードに入るためのスイッチを追加する
    SW1をMCLR、SW2をRC2
  • ブートローダが使用するLEDを追加する
    LED1をRC0、LED2をRC1に接続。
  • PICライタでブートローダを書き込む
    ブートローダを1度書き込めば以降、ブートモードで立ち上げて、USB経由でファームウェアをダウンロードできる。
  • ファームウェアをブートローダに対応する
    リンカスクリプトをブートローダ対応版に差し替える。

PIC18F2550でUSB入力デバイスを作る(3)。

Posted by arms22 on 2008年08月24日 2  0

P1000003.jpg
6連ロータリエンコーダ!デデントデテント付き!カタンカタンってなるやつ!
こいつでGoogle Earthを操作すると面白いかも。
※携帯電話のカメラで撮ったので汚くてすみません。。

P1000004.jpg
裏側。アンティークコンピュータ図鑑みたいな本をみて以来、大量のコードの束に惹かれるようになった。1つ1つの部品から伸びてくるコードがだんだん束になっていく様がいい。これはまだまだ序の口だけど。
フレームは段ボールを加工して作りました。数字なんか入れてやると少し見栄えするようになります。

ロータリエンコーダは共立電子シリコンハウス3Fレジカウンタ横に置いてあります。デデントデテントなしのものもあります。1個¥150。秋月より安い。

追記 2008/8/25
ロータリエンコーダはALPS電気製EC16Bだと思います。たぶん。。(お店で型番を見てなかった)

PIC18F2550でUSB入力デバイスを作る(2)。

Posted by arms22 on 2008年08月23日 5  0

こちらの記事を参考にMicrochip社のUSBフレームワークに付属するHIDクラスのデモソースをPIC18F2550で動くように変更しました。
マウスのデモ(カーソルがぐるぐる回る)とキーボードのデモ(スイッチを押すたびに'a','b','c'と入力される)2つを動作させてみました。

USBフレームワークはv2.2になって大幅にファイル構成が変わっていましたが、
スイッチやLEDを接続するポート、コンフィグレーションワード、あとディレクトリ構成にあわせてインクルードパスを追加するだけで動作させることができました。

変更が必要なファイルは HardwareProfile.h (共通)と mouce.c (マウス)または Keyboard.c (キーボード)です。
※私の好みでUSBフレームワークのソースコードも今回作成したプロジェクトのディレクトリに置いていますが、変更が必要なファイルは上記2つ(HardwareProfile.hとmouce.cまたはKeybord.c)のみです。

HardwareProfile.h
48行目で自作ハードウェアであることを宣言します。

#define DEMO_BOARD USER_DEFINED_BOARD
#define USER_DEFINED_BOARD
ファイルの最後の方に自作ハードウェア用の設定を記述します。
#if defined(USER_DEFINED_BOARD)
...
#define mInitAllLEDs() LATC &= 0xF0; TRISC &= 0xF0;
#define mLED_1 LATCbits.LATC0
#define mLED_2 LATCbits.LATC1
...
#define mInitAllSwitches() TRISBbits.TRISB4=1;
...
今回のハードウェアではRC0にLED1、RC1にLED2、RB4にsw2を接続しています。

mouce.cまたはKeybord.c
ファイルの先頭の方で次のようにコンフィグレーションワードを設定します。
#elif defined(USER_DEFINED_BOARD)
#pragma config FOSC = HSPLL_HS
#pragma config WDT = OFF
#pragma config PLLDIV = 5
#pragma config CPUDIV = OSC1_PLL2
#pragma config USBDIV = 2
#pragma config PWRT = ON
#pragma config BOR = ON
#pragma config BORV = 3
#pragma config LVP = OFF
#pragma config VREGEN = ON
#pragma config MCLRE = ON
#pragma config PBADEN = OFF

usb_descriptors.c
次のようにstring descriptorを変更しておけば自作デバイスっぽさがアップします。
//Manufacturer string descriptor
ROM struct{BYTE bLength;BYTE bDscType;WORD string[21];}sd001={
sizeof(sd001),USB_DESCRIPTOR_STRING,
{'n','a','n','d','e','m','o','t','u','k','u','t','t','y','a','u','k','a','m','o','.',
}};

//Product string descriptor
ROM struct{BYTE bLength;BYTE bDscType;WORD string[17];}sd002={
sizeof(sd002),USB_DESCRIPTOR_STRING,
{'M','y',' ','H','I','D',' ','M','o','u','s','e',' ','D','e','m','o',
}};

ハードウェアは、
  • MCLRを10Kでプルアップ
  • 20MHzセラロックを接続
  • RC0にLED1を接続(Hiアクティブ)
  • RC1にLED2を接続(Hiアクティブ)
  • Vusbに0.1uFを接続
  • D+,D-を接続
  • RB4にsw2を接続(10Kでプルアップ)
  • RB5にsw3を接続(10Kでプルアップ)

今回作成したプロジェクトファイルを置いておきます。
※このプロジェクトファイルにはUSBフレームワークが同梱されています。別途USBフレームワークをダウンロードする必要はありません。

HID Mouse
http://xfind.hp.infoseek.co.jp/electric/hid/HIDMouse.zip
HID Keybord
http://xfind.hp.infoseek.co.jp/electric/hid/HIDKeybord.zip

PIC18F2550でUSB入力デバイスを作る。

Posted by arms22 on 2008年08月23日 5  0

まずは情報収集。

辻見裕史のホームページ - PIC
http://phys.sci.hokudai.ac.jp/LABS/yts/pic/pic.html
USBデバイスとPCとの関係が書かれている。分かりやすい。Microchip社のUSBフォーラムの有益な情報へのリンク多数あり。

趣味のブログ - MCHPFSUSBの、HIDクラスを使ってみました
http://sfukuda.at.webry.info/200804/article_18.html
Microchip社が提供するHIDクラスのサンプルコードをPIC18F2550で動くように変更している。参考になる。

新適当マイコン電子工作研究所 - USBプロジェクト - HIDデバイス(1)
http://noritan-micon.blog.so-net.ne.jp/2008-04-07
Tsuneoさんのコメントが大変参考になります。

USB - Device Class Definition for Human Interface Devices (HID)
http://www.usb.org/developers/devclass_docs/HID1_11.pdf
わからなくなったらここを見るしかない。

USB - HID Usage Tables
http://www.usb.org/developers/devclass_docs/Hut1_12.pdf

daily dayflower - MVPen (Pegasus Mobile NoteTaker) の解析 (3)
http://d.hatena.ne.jp/dayflower/20080807/
Report Descriptorについての解説。MacOSX環境でDeveloperツールをインストールされている方は /Developer/Applications/Utilities/USB Prober.app を起動してマウスやキーボードのReport Descriptorをみるとイメージをつかみ易いかも。

スキャンコード - Wikipedia
http://ja.wikipedia.org/wiki/スキャンコード

開発環境。

USB Application Design Center
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2651¶m=en534494
ここからPIC18/PIC24F用USBフレームワークがダウンロードできる。最新のUSBフレームワークはv2.2。v2.2に関する情報は少なくほとんどのサイトがv1.3を使って開発している。せっかくなので今回はv2.2を使って開発しよう。

MPLAB C Compiler for PIC18 MCUs
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&redirects=c18
USBフレームワークはC18 C CompilerもしくはHI-TECH社のコンパイラ用に作られている。SDCCでの開発は、、フレームワークを移植すればできそうだけど、よけいな問題は抱え込みたくないのでまずはC18 C Compilerを使うことにする。開発はWindows環境で。

関連書籍。
PICで楽しむ USB機器自作のすすめ
PIC18を使ったUSBデバイスの開発について書かれています。PIC18FのUSBモジュールの解説などもあり参考になる。

USBターゲット機器開発のすべて―各種USBコントローラの使い方と基本ソフトウェアの作成法 (TECHI―Bus Interface)
PIC18を使ったUSBデバイス開発の解説があります。

オリジナルUSB機器の設計と製作―USBインターフェースの基礎から応用までを豊富な設計・製作例を通して学ぶ (ハードウェア・セレクション)
ハードウェアより。PIC18も一応ある。EZ-USBとか他デバイス多数。

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

Posted by arms22 on 2008年08月23日 11  2

picburn-0.5.1 リリースしました。0.5.0で行ったコード整理で不具合を混入してしまいました。0.5.0をお使いの方は0.5.1へのアップデートをおすすめします。
主な変更点は次の通りです。

  • PIC18Fファミリでプログラムメモリのベリフィに失敗する不具合修正
  • PIC18Fファミリでコンフィグレーションメモリの書き込みができない不具合修正

リリーステストが甘すぎました。もっと効率的に確実にリリーステストを行える方法を確立しないと。

対応デバイス一覧
http://arms22.blog91.fc2.com/blog-entry-157.html

Windows用バイナリ
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.5.1-i386-mingw.zip

ソースコード
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.5.1.tar.gz

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

Posted by arms22 on 2008年08月18日 0  0

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

  • dsPIC30Fファミリ対応(dsPIC30F2012のみ動作確認)
  • PIC10/PIC12/PIC16ファミリのUserIDが正しく書けない不具合修正(KATSUさんthx!)
  • コード整理、読み書き速度アップ
今回新しく対応したデバイスはdsPICの30Fシリーズのみです。dsPIC33FやPIC24F系は高電圧が必要ない上、VDDが3.3Vとなっているので、ハードウェアの改造が必要になります。でもまぁ、dsPIC33FやPIC24Fなんてしばらく(?)は使う予定はないので、対応はずっと先になるかと。。わかんないけどねw

対応デバイス一覧
http://arms22.blog91.fc2.com/blog-entry-157.html

Windows用バイナリ
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.5.0-i386-mingw.zip

ソースコード
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.5.0.tar.gz

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

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

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

  • PIC18ファミリ対応(PIC18F2550のみ動作確認)
  • PIC12F519/PIC16F526でキャリブレーションワードを上書きしてしまう不具合を修正
とりあえずPIC18ファミリに対応。機能やサイズの違いだけで種類が沢山あるので対応機種は少ないです。。あと低電圧モデル(PIC18JシリーズやPIC18Kシリーズ)には未対応。ハード、ソフトの変更が必要です。秋月においてある機種に対応したので、次はdsPICに取りかかります。でもそろそろあきてきたなー。

picburnはMicrochip PIC Microcontrollerに対応したUSB PICライタです。FTDIのFT232R(またはFT245RかFT2232)を使って簡単で安価に作れるPICライタです。

対応デバイス一覧
http://arms22.blog91.fc2.com/blog-entry-157.html

Windows用バイナリ
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.3.0-i386-mingw.zip

ソースコード
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.3.0.tar.gz

追記 2008/7/1
picburn-0.3.0-i386-mingw.zipの内容が0.1.32になっていたので、ファイルをアップロードし直しました。

追記 2008/7/2
PICKit2がMacに対応したようです。これでMac環境でもライタに困らなくなります。
http://diary-kuzenikike.blogspot.com/2008/07/pickit2mac.html

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