« 2009年7月12日 - 2009年7月18日 | トップページ | 2009年7月26日 - 2009年8月1日 »

2009年7月19日 - 2009年7月25日の1件の記事

2009年7月20日 (月)

プリント基板の道は遠い

EAGLEのバージョンが古かった(7/18/09)
 プリント基板CADの勉強を参考書で始めている。    レイトレーシングで有名なフリーのPOV-Rayを使って3D CADも出来るようだ。素晴らしくきれいにレンダリングされた基板の写真が口絵にある(添付の画像は著作権のため本家のもの)。これはすごい。20年前なら一部の大企業が莫大な開発費用をかけ、大型機でやっとのことで実現してきたことが、こんなアマチュアの世界でも可能になった。良い時代になったものだ。Fetchphp

 今度のLPCMプレーヤーの回路図を入力し始める。これまでのCADとはユーザーインターフェースが違うが基本的なことは同じなので、そうまごつく事はない。moveで、ちゃんと結線を維持したまま移動できる。機能はフリーウエアのCADに較べると格段に高そうだ。ただ、回路図を入れただけで、自動配線までやらせるためには、これまでのように気楽に部品を設定し、そこをつなぐだけというわけにはいかない。部品の諸元を厳密に決めているライブラリがしっかり出来ていないとそこまで行き着けない。

 しかし、ウェブの解説ページにもあるように、EAGLEのライブラリはヨーロッパ主体で、日本のおなじみの部品が標準ライブラリに少ない。ウェブで検索してもなかなか適当なのが見つからない。ICはともかく、SDカードのソケット、基板用のステレオフォンジャック、平型の2連可変抵抗器などは、どうも全部自分で作るしかないようだ。

 メインのIC、Mega328(168)すらAtmelのライブラリに入っていない。おかしいな、これもないのかとウェブで探す。やっと見つけてインストールしてみたら、古いバージョンには入らないと怒られた。ええー、この参考書そんなに古いのか。去年(2008年)のはずだぞ。奥付をもう一度確かめる。しまった。初版は2004年で5年も前だ。去年と思ったのは第三版の発行日付だった。

 参考書のEAGLEのバージョンは4.11r2である。あわてて、ウェブで最新バージョンを確かめる。うわあ、5.60だ。違いすぎる。去年3版を出したのなら少しはこのあたりを補足しておいて欲しかった。良く確かめて参考書を買うんだった。後の祭り。

 進歩の早いこの世界では、参考書はよほど気をつけて買わないとこういうことが起きる。全体的な流れを掴むために参考書を使うのだが、こんなにバージョンが大きく変わってしまうと個々の細かい説明が違ってしまって結局それすら出来なくなる恐れがある。そうならないことを祈りたい。

 慌てて、製造元のCadSoftのサイトに行き、最新バージョン(25MBあまり)をダウンロードする。旧版を消し、インストールしなおす。Atmelのライブラリを見る。ちゃんとMegaの新シリーズ(Mega8系)のパーツが揃っていた。別のサイトからダウンロードしたMega168のパーツも無事認識された。

 配線は出来ても、自動レイアウト、自動配線(Autoroute)まで行くには、今度のLPCMプレーヤーにかなりなライブラリを自分で登録する必要がある。まだ相当時間がかかりそうだ。基板の発注は、これも定番のブルガリアのOlimex(この前のARM-USB-TINYインタフェースを買ったところ)に決めてあるが、発注して基板が送られてくるのまで2週間はかかるという。

 一方、EAGLEの勉強と並行して、ケースの工作の方は順調に進み、ケース上蓋とタクトスイッチ、LCDの間の高さ調整(タクトスイッチはリード線を延ばしてOK。LCDはピンソケットでぴったりOK)、基板取り付けポストの固定も済んだ。レイアウトをもう一度検討しなおし、右利きの人が片手で持って、音量調整と演奏ボタンが親指で楽に出来るようにした(自分は左利きだが)。部品を載せて全体を確かめる。うむ、何とか入った。汎用基板で作る準備は整った。A7172088

 今、迷っている。早く作りたいという気持ちと、ここで実装を始めれば、それに夢中になって、プリント基板の方が全く進まなくなる懸念とが交錯している。EAGLEの1枚のフリー基板で2セットとれるので(50×40 2枚)、3台作るなら1台足らない。手配線版が無駄になることはないと思うが、プリント基板制作を軌道に乗せる方が先だ。しかし、ケースにきれいに取り付けられたハンダ付けを待つブランクの汎用基板を見ていると誘惑に負けそうになる。

ソフトパワースイッチ検討と新版 LPCMプレーヤーのソース公開(7/21/09)
 ハードはさておき、2号機のソフトウエアの話である。このあいだFatFSを新しいバージョンに上げ、SDHCが読めるようにしたが、ソースコードを公開していなかった。忘れたのではなく、あの時点ではSDHCが動くかどうかを確認していなかったからである。

 BeagleBoardのために8GBのカードはあったが、Ubuntuのシステムが入っていたためこれでテストをするわけにはいかなかった。その後秋葉原に行ったときもう一枚8GBのSDカードを買ってきた(あきばおー¥1550)。ちゃんとしたブランド品のSanDiskだ。いつも不思議に思うのはSDカードの価格である。秋葉原、通販あたりと、家電量販店の価格の差が激しすぎる。数倍あることは珍しくない。保証の差だと言ってしまえばそれまでだが、これまで10枚以上SDカードを買って一度も不良品にあたったことはない。秋葉原でも2週間以内の初期不良には対応する。

 それはともかく、帰って早速テストしてみる。問題なく動作した。¥2000しないこんな小さな8GBカード一枚で、音楽CDが12枚近く入るのだ。良い時代というより、今までの常識が通用しない空恐ろしい時代になったともいえる。

 ソースの公開だが、実は先日、ブログのメールでソース公開の要請を受けた。これまで自分のソースコードが誰かの役に立っているという実感がなかったのだが、こういうメールを頂くと素直に嬉しい。ただ、こんどのLPCMプレーヤーのVccは3.3Vで、メーカーが保証する規格外の20Mhzのクロック(メーカーでは13.3Mhzまで)で動かしている。全く問題なく動いているとはいえ、規格外であることは間違いない。

 もし、遊び以外で使う時は、Vccを5Vに上げ、SDカードとの間はレベルシフターで接続することをお勧めする。まあ私のソースコードも無保証だから、あまり形式にこだわることはないのかもしれない。

 2号機向けのソフトは、これにミニLCDの実装と、スイッチの長押しで電源を入れるソフトパワースイッチの実装が残っている。これを含めてソースを公開しようと考えていたが、早めにこれだけで公開することにした。         

 AVRStudioのフォルダーになっています。最初のコンパイルで警告が出ますが無視して大丈夫です。

「SDPCM328V3.lzh」をダウンロード

 ソフトパワースイッチもちょっと難航している。自分なりの構想は出来ているのだが、他の人はどうしているのだろう。気になってウェブをあちこち探しているのだが、何処にもロジックを解説しているところがない。

 考えてみると、結構難しい。もし、どこかでハングして電源が切れなくなったら、バッテリーをはずすなどの作業をしなければ、あっというまに電池を消耗してしまう。特に今回は過放電に敏感なリチウム電池なので心配である。徹底したフェイルセーフにしておく必要がある。出来ればリセットをうまく使って、おかしくなれば即リセットし、最初のパワーセーブsleepに入れるようにしてやりたい。

 これまでのロジックを余りいじらず付加機能的に実現しておこうと、暇さえあればメモをとりながらロジックを考えていた。コードの視認性を高めるためには大きなループは避けたい。といってC言語ではロジックを関数として切り出すと、内部変数がグローバル化し、バグの原因になる。難しいものだ。しかし、結局は、今のメインのソースコードをそっくり関数に切り出した以下のような構造になってしまった。擬似コーディングなので細かいところの調整は必要だが、これで余り構造を変えず、しかも見やすいソフトパワースイッチのロジックの目処がついた。ウェブには、意外とこういう情報が少ない。参考になれば幸いである。

Softpwrsw

(以上)

| | コメント (5) | トラックバック (0)

« 2009年7月12日 - 2009年7月18日 | トップページ | 2009年7月26日 - 2009年8月1日 »