« 2008年8月31日 - 2008年9月6日 | トップページ | 2008年9月14日 - 2008年9月20日 »

2008年9月7日 - 2008年9月13日の8件の記事

2008年9月13日 (土)

禁断のアナログの世界に入る

リズムメーターとよぶものを作っている(8/30/08)
 2週間も記録が滞っていた。娘のホームページ制作が一向に進展しないので、しびれを切らしてフリーのブログで公開し始めた。まだ一部しか公開できていないが、早速訪問者がある。キーワードで検索してやってくるようだ。ENC28J60などの型番を入れると反応がある。

 この記録は本来、忘れっぽくなった自分の備忘録のつもりだったが、公開し始めると色々気になって写真を追加したり、やっぱりよそ行きの顔をしなければならないので、そう気楽に書き込めなくなってきた。始めは苦労して作ったソフトが誰かの役に立てば良いかと思って始めたブログだが、毎日の訪問者ログを見ていて、増えれば素直に嬉しいし、減れば心配になる。自分が何かに嵌っているとき、同じような苦労をしている人のブログを見れば、力づけられるし参考になることが多い。と、思って最初は迷ったが、結局、日記そのままの状態を公開している。

 電子工作の方は、H8のMMCでつまづいて完全な足踏み状態である。この方向はHigh Endの方向で、どうせやるならH8 ではなく、この上位機種のSHシリーズでやるべきだろう。uCLinuxがターゲットだが、H8はメモリ増設が必須だし、SHなら¥8000も出せば、クロック133Mhzで、SRAMが32MもあるSH3の評価ボードが手に入る。これならお家サーバとして十分な働きができる。

 そんなこともあって、これまで暖めてきたリズムメーターの構想を具体化することにした。リズムメーターとは私の造語で、間歇的な音(メトロノーム、拍手、掛け声など)が出ているときにその間の時間を表示する機械のつもりである。脈拍計のセンサーを通常の音声マイクに換えたものと考えてもらえばわかりやすい。私はリズム音痴で、フルートを吹くときは必ず、メトロノームをつけて練習するようにしているが、どうもメトロノームがどこまで正確なのか気になっている。自宅とレッスン場の早さが違うような気がする。ストップウオッチで1分かけて測れば測定できるが、人間の誤差も馬鹿にならないし、レッスンに行っていちいち時間をかけて測るのも気が引ける。

 ミリセカンドオーダーの測定はマイコンの得意とするところだ。マイクから音を拾って、コンパレータを通せば簡単に音のリズムはデジタル化できる。これまでのデータの移動平均をとって、その誤差が一定限度を越えればLEDなどを点滅させて警告すれば、調子が狂ったことがすぐわかる。面白いアイデアだと思うのだが、Webを探してもこういう機械はどこにもない。

 オーディオマニアのように凝るつもりはないが、こうした計測関係のアナログ電子回路はやっておきたいところだ。それで大分前から、LEDとLCD表示をつけたリズムメーターの仕様をかためてきている。ただ、例のないしかけなので、仕様は出来たものの、これで良いのか確信がもてないので具体化をためらってきた。717_78k0

 そうだ、ハードの工作を忘れていた。このあいだWebの情報(http://homepage2.nifty.com/denshiken/AVW020.html)で、雑誌付録のUSBの8ビットマイコン(78K0)をAVRライター(AVRISP互換)にして、AVRstudioから直接書き込みが出来るようにしたが、それほど早くない。それにAVRspに比べると純正のAVRISPは、いちいちターゲットチップの定義をする必要がある。chaN氏が教えてくれたAVRstudioの中から、hexファイルをAVRspに送る方法(chaN氏は照れていたけれど)が何といっても一番効率的で、78K0のためにわざわざケースまで買ってきたが、今ひとつ気乗りがしないで放ってある。

 というので、きのうからブレッドボードにTiny2313でリズム計の実装を始めた。とりあえずアナログ系は先にして、スイッチでインタバルを測り、UARTに吐き出させる。移動平均をとって、その間Wsrythmeの誤差でLEDの色を変えたり、点滅させたりするアイデアである。最終的には、LCDに直近の間隔と移動平均値を出して携帯できるようにする。

 16ビットタイマーは初めてだったが、順調にタイムが表示される。5秒程度を最大間隔にすると、分解能は64us。メトロノームの測定には十分である。LEDを点滅させるところで、2Kのフラッシュが満杯になる。4桁以上の数字を表示するので、chaN氏のxatoiを活用したのだが、やはり500バイト以上喰ってしまう。急遽、Tiny861に換装する。0715rythme

 換装はそれほどの問題もなく終了した。移動平均との差が10%以下ならLEDが連続点灯、30%まで点滅、それ以上は消灯という仕様で、そのとおり動くが、これが役に立つかは自信がない。リズムを変えて行くと確かに連続から点滅、消灯とはなるが、%なので、1.3と0.7の間隔の違いが同じかと言われるとよく分からない。誰も作ったことのない機械だと思うので参考にするものがない。そもそも移動平均という値が、こういうときの参考値になるのかというのも問題である。

 まあ、デジタル系はこのへんにして、今度はいよいよアナログ系に行こうと思う。初めてのオペアンプ、コンパレータの実験が待っている。

禁断のアナログの世界(9/5/08)
 何十年ぶりかのアナログの世界である。オペアンプを買う前に、例によって、Webで少し勉強する。この世界も広くて深い。私のアナログの最後はトランジスタの低周波増幅まででオペアンプの知識は書物の上で知っているだけ。トランジスタも昔見よう見まねでアンプを作っただけで、まあ、オペアンプまわりは完全な素人である。

 調べていくうち、オーディオの世界に戻りそうになる。危ない、危ない。今度の目的は、単にリズムを打つ音響(メトロノーム、拍手)をサンプリングしてそのタイミングを入力させるだけが目的で、音質は問題外である。モデルはオーディオのVUメーター出力である。コンパレータといっても基準電圧は1V程度だろうから、出力は0.5V(P-P)もあればよい。

 大体の目安がついたところで、秋葉原に立ち寄る。今まで横目で見て通り過ぎていた秋月のオペアンプのコーナーに意を決して分け入り、最も定番だとされる汎用のLM358(1ヶ¥20)を手始めに選んだ。あとで調べたら秋月にはオーディオ用にも使える、低ノイズのオペアンプがこの程度の値段で沢山あることを知る。良いのだ。オーディオの世界にはいかない。と言いながら、目的もないのに、つい1WのパワーアンプIC、NJM386まで買い物皿に入れてしまった。

 ブレッドボードにあるリズムメーターのデジタル部を整理して、少し空間を作り、ここへオペアンプを設置してテストを始めた。入力はこのあいだのボイスレコーダについていたコンデンサーマイク。出力は、とりあえず周りに沢山転がっているヘッドフォンをみの虫クリップで挟んで使う。まともなピンジャックを買ってくる必要があるようだ。

 回路図は山ほどあって、何を選んでよいかわからない。データシートにあるACアンプは部品点数が多く面倒なので、簡便なものを探す。単電源のACアンプは意外と少ない。部品が少なく、手持ちのパーツの定数で出来るようなものを選んで、とりあえず組んでみた。

 しかし、出てきた音は、ノイズだらけで、音は割れまくり、とてもアンプとは思えない音であった。まあオーディオ用ではないからこんなものかと納得し、電圧をテスターで測る。マイクに近づけて大きな声を出してやっと0.2V程度で、これを整流しDCにしたら半分以下になるだろうから、このままではちょっと微妙なところである。大きな声を出していたら、家内が心配して見に来た。発作と間違えたらしい。お笑いの世界である。

 抵抗値などの諸元を替えてみる。これが結構クリティカルで面白い。カップリングコンデンサーを10μF以上にすると電源を入れてから暫く経たないと動作しないことや、1μF以下では、低音がすっかりカットされてしまうことなどを学ぶ。経験者には当たり前すぎて話にならないことが新鮮で面白い。ノイズも中間電位点をバイパスコンデンサーで接地すると劇的に下がることがわかった。

 調子に乗って、普通のトランジスタ増幅との比較がしたくなり、別の場所に組んでテストしてみた。増幅度は余り大きく出来ないけれど、これはもう全くハムやノイズもなく、ちゃんとしたアナログアンプになる。部品も余り多くない。これを2段にするほうが良いかもしれない。なぜみんなトランジスタを使わないのだろう。

 次の日お客が来たので、机上を片付け、オペアンプのテストを終わろうとしてデータシートを見ていたら、今まで試したオペアンプ回路がすべて反転増幅だったことに気づいた。非反転増幅もテストしておこうと思い、データシート通りの回路を組んでみた。この回路はコンデンサーが4つ抵抗が6つも必要でトランジスタ回路よりはるかに部品が多い。

 ところが、これを動かしてみると、今までの回路とは全く違ったのである。驚いた。ノイズが格段に小さくなっている上、音が全く割れない。これが同じICかと思うほどの差である。汎用オペアンプだからこんなものだと思っていたが全然前と違う。アナログは本当に難しい。やれやれこれからが思いやられる。

オシロスコープが欲しい(9/06/08)
 ブレッドボードの前のちっぽけなアナログ回路を前に考えた。回路を替えるだけであれだけ音が違うのである。デジタルと違ってアナログは正解がない。デジタルなら、想定どおり動けば、それが正解でそれ以上の答えはとりあえずない。やっかいなことになってきた。目的は前にも書いたように、メトロノームなどの音の周期を測るだけなので、それだけなら、もうひとつのオペアンプで整流回路を作り、ADコンバーターにでも入れてやれば電圧値が測定できるのだろうが、何となくこのまま通り過ぎるのに抵抗がある。

 そうなのだ。長年あこがれてきた夢、オシロ、スペアナなどを駆使して色々な電子回路を工夫して楽しむ世界が目の前にあるのに通り過ぎてしまうことになる。測定器と言えばテスターだけで、結局この世界は大学のほんの一時期しか経験しなかった。社会人になってからはソフトウエア一本で、本式のハードの現場は全く経験していない。

 アナログは禁断の世界だと言っていたが、ここまで電子工作を始めて、ブログまで公開してしまったのだから、もうちょっと入ってみよう。それには、やっぱり、マイクの前で大声をあげて、秋月の安物のテスターのACレンジで、おお200mV出たなどというお笑い実験から、せめてシグナルジェネレーターとオシロスコープぐらいを備えた余裕の実験をしてみたくなった。

 というので、このところWebでは、何かというとオシロスコープ関連のサイトに立ち寄ることが多くなった。予算は10万以下、USB接続のPCオシロではなく、やっぱりスタンドアロンのものが欲しい。帯域が問題である。将来、どこまで工作の範囲を広げるかで最大が決まる。一番安い25Mhzでも、TVの同期信号くらいまでは大丈夫らしい。無線はもう恐らくやらないので、これで十分だとは思うけれど、何か物足らない。シグナルジェネレーターも自作してしまえば良いが、これも少しまともなものが欲しい。秋月電子が売っているオシロのラインナップは大体、一般の価格の半値で、Webに出ている激安オシロと同程度、中には全く同じ製品と思われるものもある(激安店では特別セールと言っているが、価格も型番もぴったり同じ中国製)。

 迷っている。折角、大枚をはたく決意をしたのだから、テクトロには手が届かなくても、岩通あたりの廉価版の定番を10万出して25Mhzのものを買うか、同じ10万なら高性能(100Mhz)の激安ものを買うか。それともあっさり秋月で普及版(25Mhz)の4万のオシロとまともなジェネレーター2つを予算の中で買うか。Web情報によれば、5 %以内の誤差で測れる周波数は、最大帯域のわずか30 %で、25Mhzなら精々8Mhzまで。 100Mなら、30MhzのCPUクロック波形までだ。しかもオシロで波形を見て何かの役に立つのか。そこのところがわからない。ただ、中古はやめておこう。素人が手を出してろくなことはない。

 いずれにしても、アナログをこれからもう少しやるのなら、オシロは、デジタルのロジアナ同様、かかせない測定器になるのは間違いがない。

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

2008年9月11日 (木)

気分転換にH8/3069Fに挑戦

H8/MES(8/11/08)
 体の鍛錬のためテニスを続けている。昨日は猛暑をものともせずテニスをやってきた。この日は、これまで全く勝てなかった常勝のペアに珍しく勝つことが出来、すこぶる気分が良い。思い切り体を動かすことと、地下室で拡大鏡をつけて細かい半田付けする作業を並行してやると、何かとても体の中に充実感を覚える。これからもどちらも気を抜かず頑張ろう。

 電子工作の方は、このところデジタルオーディオに思わずのめり込みそうになり、少し冷静になろうと別のことを始めることにした。 これは大げさな話ではない。オーディオの世界の「良い音」というのは麻薬に近い強い依存性があり、求め始めると電子工作の比ではない。良い音を聞いて、一旦、鳥肌が立つような感覚を経験すると、良い音を探し求めて止まらなくなる。

 私の数少ない経験でも、スピーカーを換えたり、カートリッジを替えて、同じソース(レコード)から全く違う音楽が出てきて、しびれたことが何度もある。人から借りた高価なプリアンプを朝の目覚ましのFM放送に使って余りの音の違いに寝ぼけ眼で飛び起きたこともある。

 DACの研究をしているうち、この魔力にとりこまれそうになった。ウェブサイトの制作記などを読んでいると、ハイエンドの装置が素人でも作れそうな雰囲気である。ハードの技術が進歩して音質がチップ次第になったからだ。それこそ秋月で¥800のDACチップがSACDのレベルを満たしている。

 120万円もする舶来高級ブランドのDVD-Rプレーヤーの基板が、3万円の日本の普及版プレーヤーと全く同じだったなどという記事を見ると制作欲望がふつふつと湧いてくるが、危ない、危ない。実用的といえば、これほど実用的な応用はないのだが、この道は際限がない。深入りは少し見合わせることにする。

 ということで、大分前に買った秋月のH8/3069 LANボードを気分転換に久しぶりに取り出した。どうも2~3年前にブームになったらしく、検索でヒットするサイトはみな少し古く、このあいだ入れたMESというマルチタスクのOSは制作者がサポートを打ち切ってしまい、色々なことを簡単に試すことが出来なくなった。

 当面の目標を、SDカードインタフェースをつけて少しまともなHTTPサーバーを動かすことに置いた。折角2MのSRAMがついているのでSDカードを利用して自立的なサーバー、あわよくばLinuxを入れて運用してみようと思っている。

 このH8のROMの書き込みを保証している回数はAVRと違って100回しかなく、余り気楽な開発をしていると制限を越えてしまう。 このMESはMMC(SDカード)をサポートしているので、SDカードにデータだけでなく実行ファイルも収容し、2MあるSRAMでアプリケーションを動かし、ROMは余りいじらないで済むようにしたい。

 というので、正式なボードに作りこむ前に、SDカードの動作をプローブコードなどで仮配線してつないで確認してみた。しかし、アクセスLEDが点滅するものの「Disk I/O Error」という冷たいメッセージではね返されてしまう。こういうときはウェブが頼りである。「H8 MMC SDC MES」などのキーワードで調べる。あったあった。沢山の人がこれに挑戦している。そのなかで、「H8はCSが反転しているので」という文言を見つけた。

 これだ、動かない原因は。MMCやSDカードのCS(チップセレクト)は負論理だ。モジュール化されたカーネルの部分は公開されているので、慌ててソースコードを調べるが、OSのソースコードはI/Oが極度に抽象化されており確認するところまで追い込めなかった。しかし、動かない原因はこれに違いない。とにかくまともなマザーボードのための工作を始めた。

 それと同時に論理を反転させる回路を考える。一箇所だけにインバーターICを使うのも芸がない。必然的にトランジスタということになるが、MMCのスピードはUARTなどより一桁速いので気楽にトランジスタでつなぐと遅延でおかしくなる。相手はCSなのでそれほどシビアではないかもしれないが、測っておきたい。

 ブレッドボードで適当に回路を組み、ソースはI2CでやりとりしているRTCのついたブレッドボードのAVRマシンにロジアナを入れて測ってみた。いやいや大変な進歩である。こういうことが手軽に測定できるようになるなんて昨年の秋まで思いもしていなかった。自分の世界がこの年になって広がったことを実感する。素直に嬉しい。

 これまでストックのあった2SC945(2SC1815の前身)でベース抵抗10KΩ、コレクタにつけるプルアップ抵抗10KΩで、立ち上がりこそナノセカンドのオーダーだが、立下りは、3μs近くもあることがわかった。こうした用途のためこのあいだ買ったパワーのある2SC1213はもっと遅い。うーむ、3マイクロなんて遅すぎる。その証拠に100KhzのI2Cのデータはいたるところで取りこぼしてちゃんとした反転データになっていない。メガオーダーのMMC(SPIインタフェース)ではチップセレクトと言えども心配だ。

 ここで10年以上も前に買ったデジタル回路の参考書を思い出した。そうだスイッチングの高速化の方法の解説があったはずだ。早速取り出して見てみる。なになにスピードアップコンデンサーを入れろと書いてある。なるほどコンデンサーの微分効果で逆パルスをベースにかけてコレクタの電子を早く吐き出すのだそうだ。

 言われるまま、100pFのコンデンサーをベース抵抗に並行に入れて測ってみる。おお、立下りが飛躍的に改善され、0.4μsまでになった。I2C(100Khz)のデータが完全に反転している。調子に乗って200pFにしたらI2Cの通信に干渉し測定不能になる。まあ、想定している入力はH8のI/O出力ポートだからこれは問題ない。

 デッドストックだったトランジスタが役に立ち、10年も前に買った参考書が役に立ち、一万円の廉価なロジアナが見事に機能して目的の回路が完成する。何かこれまでになく気分が高揚してこの日はなかなか寝付けなかった。

やっぱりMMCインタフェースが動かない(8/14/08)714h8

 インバータ実験の成功に気を良くし、SDカードソケットのついたH8/3069Fの正式なマザーボードの実装を急ぐ。2日間で出来上がった。勇んで、電源を入れたが期待に反して全く動かない。CSが反転していることは他のサイトでも確認し、これで良いはずなのだが、MMCのマウントが成功しない。バラックのときと違ってSDカードの種類によって「DiskError」だったり、ハングアップしたままだったり少し事態は進展しているように見えるが、動かないことに変わりはない。

 SDカードからの出力が3.3VでH8のポートのドライブ限界に近いということで、5Vからのプルアップ抵抗を入れてみたが、やはり動かない。ロジックアナライザーを再び投入する。これがいかにももっともらしいシーケンスが記録されている。初期化が進んであるところで同一のやりとりを永遠に続けている。これがハングアップの状況である。

 また、ウェブ情報を探索する。SDカードのメーカーによって動かないという報告や、最新バージョンのカーネルではMMCが動かないというレポートを発見し、肩の力が抜ける。モジュールでMMCドライバーを組み込むと動くと言うことなので、いちからカーネルを作り直し、モジュール版のカーネルを作り直したが、やっぱり駄目だった。古いバージョンなら大丈夫だと言うが、本家のサイトでサポート打ち切りを宣言されているので、ネットに古いカーネルがころがっている可能性も薄く、今のところ完全に手詰まり状態である。

 MESのソース提供をこのあいだメールで申請したが、やはり個人開発のOSの限界を見るようで、少し熱が冷めてきた。LinuxがどうもH8でも快調に動きそうなので、そちらに関心が移りそうだ。しかし、LinuxでSDカードがアクセスできるかどうかはまだわからない。

MMCディバイス実装は一時中止へ(8/15/08)

 結局、MESでSDカード(MMC)を動かすことは諦めることにする。ウェブに出ているハードの工夫(プルアップ、大容量パスコン)はみなやってみたが、状態が変わらない。ソースも調べたが、chaN氏のFatFSのMMCドライバーと全く構造が違い見当がつかない。FatFSにはH8用のドライバーソースがあるので移植しようと思えば出来ないことはないがこれは相当ハードルが高い。よほどの決意と集中力がないとこれは手がつけられない。

 H8クラスでLinuxを動かすのも最初は乗り気だったが、調べてみると、このあたりがLinuxが動く最下限の性能でそれ以上の進展が望めなさそうである。それにH8自体が相当古いチップで、このルネサス製のCPUチップは新しいSHシリーズが主流になっている。¥8000も出せば、LANもMMCインタフェースもつき、SRAMが32MBもあるSHのCPUボードが手に入ることがわかった。これならLinuxも楽々動く。 単にLinuxを動かしました(uClinuxだが)、というだけでは余り面白くない。どうせならLinuxの豊富なソフトを利用して省電力のお家サーバーを作ってみたい。

 ということで、H8まわりの開発は少し中断することにした。LANならこのあいだのフリースケールの付録基板MCF52233があるし、フラッシュもH8の半分の256Kある。こいつのHTTPサーバーの動作は確認してある。ただ無料の開発環境が128KまでなのでGCC環境が整備されるまでLAN関係は少しお休みすることにする。

 と、書いてみたものの、折角マザーボードまで作り、今のところ2メガもメモリのある機械はこれしかない。幸い、ディバイスドライバーのソースは手元にある。仕事の原稿も凡そ書き上げたので少しづつ調べていくことにした。ディバイスの初期化のプロセスは詳しくウェブに載っているので、どこでおかしくなっているかはロジックアナライザーの記録でわかるはずだ。カーネルのディバイスドライバーの形で動いているが、これはコンパイルオプションでアプリケーションとしても動くはずだ。今のままではモジュールと言えどもROMの中に入るので、書き込み制限のため試行錯誤が出来ない。

 アプリケーションで動かす手順がわからないため、モジュールになっているカーネルドライバーを解析してみた。やっと、MMCを初期化しているところを見つける。ロジックアナライザーの波形をひとつひとつ調べ、コマンド0のinitialize、コマンド8のcheck、までは正しくMMCがレスポンスを返していることがわかった。

 問題はこのあとの、コマンド1のenableである。何回やっても、X'01'のビジーフラッグが上がり、先に進めないということがわかる。乱暴だが、この無限ループを有限回に替えてさきに行くようにした。ところが動きに変わりがない。どうも関係ないループの方を有限にしたらしい。

 デバッグステートメントを入れてみたいが、いろいろ試した関数はみなコンパイルエラーではじかれる。カーネルのドライバーとアプリとの差がわからないので、手探りである。やれやれ、やはり難しい。まあ、わからないまま、色々やっているうち薄紙をはがずように見えてくるものだ。もう少し様子を見てみよう。

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

2008年9月 9日 (火)

がた老AVR研、音響研究へ

秋月のボイスレコーダキット(8/3/08)
 イーサネットマイコンも無事動いてがた老AVR研究所の懸案はとりあえず片付いた。しかし、AVRのマイコン以外に、種類の違うマイコンが4つも揃ってしまった。小さいほうからあげるとUSBインタフェースのついたNECの78K0(8ビット)、イーサネットのついたフリースケールのMCF52233(16ビット)、USBとSDソケットのついたARMのSTM32F103(32ビット)の3つでいずれも雑誌の付録基板である。これに秋月のH8/3069FのLAN基板もあるのでAVRを合わせれば計5つになる。これに加えて雑誌の付録基板には、25 万ゲートのFPGAもある。もう何が何やら分からない状態である。

 FPGAだってあれから全く進んでいない。少しまともな本を買って勉強しようとは思うが、適当なターゲットが見つからない。今さらシフトレジスタやタイマーを作ってみても応用先がないし面白くない。といって、いきなりVGAのインタフェースを作るのは少し無謀すぎる。

 で、いま少し食指を動かしているのがビデオよりもう少しやさしいデジタルオーディオへの応用である。オーディオDACは安くて実用的なチップがあるので、FPGAをFIFOバッファーにして、SDカードからのWAVデータを連続再生してみようと考えた。SDカードのアクセスとデジタル再生はサンプリング周波数が低ければ、1CPUで何とかできそうだが、少しまともな音にするにはDACチップなどの専用ICが必要でそれもバッファーがないと危ないはずである。

 ということもあって、このあいだ秋月に寄ったとき、1分間録音再生できるボイスレコーダーキット(¥1000)を面白がって買ってきた。小さなブレッドボードがついており、これが他に役に立ちそうで欲しくなったということと、今どきの電子工作のデジタルオーディオのレベルを知っておきたかったというのもある。

 イーサネットマイコンが動いて手が空いたので、袋から取り出し組み立ててみることにした。ブレッドボードなので小一時間の作業で完成する。ただブレッドボードの大きさに比べて部品数が多く結構ギリギリのサイズである。0オームという抵抗を使うのは止め、ジャンパー線にしたのでだいぶすっきりした。このキットには録音、再生を切り替えるスイッチが入っていない。ジャンパーピンで切り替えるようになっている。いくらなんでも操作性が悪いのでスイッチをつけたす。Pict0710

 1分ではなく30秒のハイクオリティにする。あとで調べたらハイクオリティといっても8KHzのサンプリングなので多くは望めない。動かしてみた。おお、ちゃんと音声が録音される。しかし、サンプリングノイズ(ホワイトノイズ)が大きく、音声は聞き取れるが、昔のSPレコードより音質は悪い。明瞭度からいえば昔の黒電話くらいだろうか、少しがっかりした。やっぱり最低でも16KHzくらいのサンプリングは必須のようだ。ただ、音声を最大8つのブロックにわけてそれぞれ外から制御できるので、ロボットなどに喋らせるのには使えそうだ。

 そんなこともあって、今、オーディオ関係の整備が忙しい。実は我が家には、MIDIの設備が一応揃っていて、昔の定番音源ローランドのSC88がPC机の棚の上に乗っていたりする。楽譜を自動的に読み取るソフトはバージョンアップを繰り返して最新版がインストールされている。最近の読み取りソフトの性能は向上し、ピアノ用の大譜あたりだと90%以上の認識率がある。一時はソフトシンセの世界に入りかけたが、何十万円もするウイーンフィルの音源を使った実演奏顔負けの演奏データを、ウェブのMP3データで聞かされ、あまりの奥の深さに恐れをなし、先に進むのを思いとどまった。

久しぶりにMIDIを聞いてみようと思ってSC88に火を入れてみた。そう言えばこのMIDIデバイスは昨年の秋以来、AVRのシリアルライターにCOMポートをとられて孤島になっている。COMポートをAVRライターからこいつに切り替える。と、これが動かないのである。あちこち調べるがPC側のドライバーは正常のようだ。暫く動かすうち、SC88からのアナログ出力は無事出るようになった。しかしMIDI入力がSC88に入っていかない。SC88へのシリアルケーブルは自作である。これは10年以上前、MacからDOS/VにMIDI環境を換えたときに作ったもので資料など残ってない。

 動かないとなると気になって他のものが手につかない悪い癖が出る。マイコンそっちのけで調べ始めた。ケーブルを分解して調べようと思ったとき、はっと気がついた。シリアルケーブルはこのあいだH8マイコンと接続するためクロスケーブルをストレートに換え、AVRのシリアルライターも配線換えしてある。これだ。あわてて自前のストレート・クロス変換コネクタを間につける。しかし、動かない。

 こうなったらケーブルを疑うしかない。まずDSUBソケットを分解して配線を確かめる。おお、あたりだ。CTSとRTSをつないでディバイスをReadyにみせかけるジャンパー線が浮いている。しっかり半田付けをしなおしてつなぐ。しかし、それでも動かない。うーむ、あとはDINソケットのほうの配線だが、これはネジ止めでないので現状を留めたままもういちど開けるのは至難の業である。

 思いあぐねて、シリアルMIDIケーブルのDSUBソケットを見るともなく見ていたら、ソケットがメスだということに気がついた。待てよ。以前使っていたクロスケーブルは両方ともメスだった。ということはこのシリアルMIDIケーブルはこのケーブル経由でつけていない。直接PCのコネクタに接続していたのだ。うはあ、クロスではなかった。さっきのストレートクロス変換コネクタをはずす。音が鳴った。やれやれ。やっぱり断線が音の出ない原因だった。半日がかりのMIDI騒ぎはこれでやっと落着した。

デジタルオーディオも奥が深い(8/6/08)
 今月中に仕事で作らなければならない提案書があるのだが、なかなか具体的に書き出せないでいる。現実逃避で工作を始めたら収拾がつかなくなる危険があるので工作には手を出していないが、相変わらずウェブの検索は、いつのまにかマイコン関係になってしまう。

 いや、それにしてもオーディオの世界も奥が深い。このあいだの¥1000のボイスレコーダーとは違う少しまともなDACを調べ始めると、あとからあとから情報が出てくるのに驚く。ここはもはや電子工作の世界ではなくハイエンドのオーディオマニアの世界であることがわかる。市販のデコーダーに飽き足らない人が、どこで手に入れるのか知らないが多種多様のDACチップとオペアンプでいわゆるSACD(スーパーオーディオCD)などの再生に挑戦している。

 デジタルはチップの性能で殆どが決まるからアマチュアの参入障壁が低いのだろう。昔と変わらないオーディオ自作マニアが元気だ。こちらも独身時代は少しオーディオに凝っていたから、つい道草をして、スピーカーケーブルで本当に音が良くなるのかといった昔からの論争など、本来の目的とかけ離れた記事を読みふけって中々先に進まない。 最近流行の真空管アンプなどは間違いなくこうしたハイアマチュアの努力というか執念が実ったものだろう。

 Windowsのサウンドレコーダーが自由にサンプリング周波数を変えられることを知って、早速試してみた。ウェブには情報が溢れているが、一般的な音質とサンプリング周波数、データビット長の対応を明確にしているところが意外に少ない。自分で確かめるのが一番だ。最近のPCは音源にはことかかない。色々な音で試してみた。その結果、サンプリングが10khzではやはり全く駄目で、せめて15k、データサイズも8ビットではノイズが乗ってまともな音にならないことがわかった。

 今求めているのは、Webで遠隔地からの指示で何らかの音を発生させる仕掛けを作ろうとしているので、それほどの音質は求めていない。と言って我が家でしゃべる電化製品のひとつである風呂の自動湯沸し装置の女性の声くらい(AM放送より良くてFM放送まで行かない)は欲しいところだ。

 とすると、サンプリング20Khz、データサイズ16ビット(AMとFMの中間)というところなのだが、これが微妙な仕様なのである。AVRは16ビットのPWMはあるがクロックが最高20Mhzまでなのでサンプリング周波数をはるかに下げないと無理で、20Mhzではせいぜい10ビットが限界である。PWMをあきらめて専用DACを秋月でひとつ¥250で買ってくれば、ステレオ44.1Khz、16 ビットのCD再生プレーヤーがただちに出来るが、これは目的とはかけ離れてしまう過剰スペックになる。それにこのチップの情報がウェブには殆どないので動かすのに苦労しそうだ。

 以上が3日間の調査の成果である。これまで霧の中だったデジタルオーディオの世界がうすぼんやり見えてきたというところか。しかし、SDカードを読みながら、絶え間なくデジタルデータをPWMなりDACに送るソフトの仕掛けはまだ白紙のままである。まあ、これはこちらの専門分野なので、余り大きな障碍ではない。FPGAでハードをわけてしまえば造作ないことなのだが、せっかくPWMをマスターする機会なのでFPGAの適用は先にしてPWMでやってみたい。しかし、10ビット足らずが最大なので、苦労して作って、がっかりするのもいやだ。そんなことを考えながら、PCに向かっていると時間のたつのを忘れる。こうやって色々迷って調べるのも楽しみの一つである。

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

雑誌付録のイーサネットマイコン

生来のへそ曲がりが出て(7/30/08)
 またまた、雑誌付録の基板の話である。 開発が一段落して次のプロジェクトの調査をしていたら、間が良いのか悪いのか、イーサネットコントローラ内蔵のワンチップコンピューターが特別付録の雑誌(インターフェース2008年9月号)の発売日にぶつかってしまった。電光掲示板はANKのフォントの位置の微調整も済んだし、今のところ懸案はすべて解決してやることがない。

 32ビットマイコンにFPGA基板、それにUSBマイコン(トラ技8月号これも買ってしまった)と、このところ立て続けに3つも付録基板が揃い、いずれも動作を確認しただけでその先は何もやっていない。Cで開発していると言ってもそれぞれ開発環境は作らないといけないし、アーキテクチャーは全部ばらばらなのであまり沢山の機種に手を出すと開発効率が悪くなる。

 と、迷ったのだがこれも少し癖になってしまって、欲しいと思い出すと止まらない。色々調べて行くうち、今度の付録のマイコン(MCF52233)のイーサネットは100Base/TXが動くと知ってやっぱり買うことにした。しかし、雑誌付録なので高さのあるモジュラージャックや電源ソケットなどは自前で用意しなければいけない。でもそこは良くしたもので雑誌社が部品販売店とタイアップしていて、しっかりキットを売り出すことになっている。ところが値段を見て驚いた。LANのクロスケーブルなど必要もない部品が揃ったキットが¥3000、モジュラージャック単品だけで¥800近くするのである。殆どの人はLANにハブを使っているだろうからクロスケーブルなど不要だし、秋月にはLEDまでついたパルストランス付きのジャックは\300で売っている。

 しかも念の入ったことに、秋月で売っているジャックはピンアサインが違うので使えないと明記してある。ここで生来のへそ曲がりがむくむくと起き上がった。誰がどれだけ儲けるのか知らないが、大した金にもならないだろうに、人の足元を見た姑息なやりかたに無性に腹が立ってきた。普通の人なら¥300でも¥800でも大した差ではないので文句も言わず買うだろうが、へそ曲がりにはそれが気にさわる。意地でもこの店からモジュラは買ってやるもんかと心に決めた。

 同じことを考えていたのは、私だけではなかった。見るともなくウェブを調べていたら、何と秋月の¥300のモジュラージャックをこの付録に強引につけた人のブログが見つかった。3ヶ所あるピンアサインの違いをピンを曲げてつけている。これだ。秋月のモジュラーならこのあいだプリンタ電源制御のときの予備にもうひとつ買ってある。迷っていたけれど、これで今度の付録付きの雑誌を買う立派な大義名分ができたと言うものである。

 次の日、仕事の帰り渋谷の大きな本屋に寄って雑誌を探す。ない。なにい、もう売り切れたのか。いやいや定期のところではなくカウンタの目の前に平積みで何十冊と積み上げてあった。家に帰って早速モジュラーのピン曲げに挑戦する。一回ピンアサインを間違え、いつ折れるか冷や冷やものだったが、何とかずらすことに成功した。ピンが交叉するところは、1ミリの耐熱絶縁チュープを入れてショートを防ぐ。

勇躍、電源を入れる。3Vはブレッドボード基板の3Vレギュレータからこのあいだ作った片側DCプラグで片側がピンソケットのコードが活躍する。一瞬LEDが点いたがすぐに消え、PCからのpingが通らない。このLEDはリンクステイタスなので点きっ放しにならないとおかしい。勿論telnetもつながらない。

 さあ、困った。ハブにはノードを見つけたというLEDは点いているが、このマイコンにはUARTもついておらずISPのように動作確認するインタフェースもない。今のところイーサネットがつながらなければ何も始まらないのである。ところが何度かプラグを抜き差しするうちLEDが点くところがあることがわかった。接触不良か。ぐりぐり動かしていると点きっ放しになるところもある。急いで片手でPCを操作しpingを打つと、出た!レスポンスが返って来た。あわててブラウザを立ち上げる。おお、ブラウザにも設定画面が出た。ちゃんと動いている。

 しかし、モジュラージャックは力を入れて押さえていないとちゃんと接続されない。半田付けのとき無理な力をかけてしまったかと半田を吸い取り線でとり少しずらすが変化はない。どうもピンを曲げたときに内部の結線が切れてしまった公算が高い。やれやれ、へそ曲がりが仇になってひとつモジュラジャックを駄目にしてしまった。今、もういちど秋月で¥300のジャックを買ってきてピン曲げにこだわるか、悔しいけれど¥790で指定のモジュラージャックを入手するか迷っている。

パルストランスを活用(8/1/08)804_2
 とにかく断線したモジュラジャックははずすしかない。ピンの折り曲げを一度失敗して曲げなおしている。恐らくそのときに中で切れたのだろう。まあそれは良いとして、一旦複数の箇所に半田付けで固定したパーツの取り外しは非常に難しい。専門家によると、こて先が分岐して複数の場所の半田を同時に溶かす半田ごてがあるそうだが素人が揃えられるのは溶点の低い半田で面実装の取り外しが出来る工具セットくらいのものだ。それでもなぜか人の足元を見るように¥5000近くする。まだ手が出せない。

 しかし、はずさないことには次に進めない。昔ホットナイフ用に買ってあった60Wの半田ごてがあるのを思い出した。そのときひらめいたことがある。そうだ。練習を兼ねて、このあいだMACアドレスのEEPROMを取り外した古いNIC基板にあるパルストランスをはずしてみよう。Webにはへそ曲がりの人が沢山いて、この基板の指定のモジュラジャックを使わずパルストランスをつけてつないでいる人の報告があり動作に不安はない。

 ただパルストランスは面実装でなくピンが基板の下に通っているDIPである。DIPは足が深いだけ取り外しはより難しい。まず半田吸い取り線で徹底的に半田をとる。60Wなので面白いように半田がとれるが、12ピンあるので簡単ではない。続いてドライバーなどでこじて片面を少しづつずらし浮かせていく。順調に5ミリほど上がったが最後がなかなか抜けない。そのうち熱で外側のモールドの一部が浮いてきたため、あわてて抜くのをあきらめてニッパーでピンを切る。5ミリもあれば再利用には十分だろう。

 昔なら何と言う時間の無駄遣いと言われただろうけれど、昨今なら地球に優しい資源の再利用である。パルストランスの入っていない普通のモジュラジャックは、前にサンハヤトの変換基板付きのを買ってある。パルストランスそのものの存在も知らない時に買ったもので、このあと秋月のトランス付きのモジュラージャックを使ったので引き出しに眠っていた。これも無駄にせずに済む。二重の資源活用だ。

 暫くはこのモジュラージャックとはずしたパルストランスで雑誌付録を動かそうと、いよいよ本番の断線したモジュラージャックの取り外しにかかった。いや、これが難渋したのである。60Wの半田ごては強力で固定用の大きな箇所の半田は簡単にとれたのだが、ピン部分がなかなか抜けない。ピンを曲げたために、素直に抜けていかないのだ。そのうち恐ろしいことが起きる。基板とスルーホールの銅パタンが熱で分かれ始めた。あわててニッパーでピンを一本づつ切ってジャックを分離する。モジュラージャックは後の検証のためなるべく現状のままはずしたかったのだがそんな悠長なことは言っていられない。

 どきどきしながらルーペではずれた箇所を点検する。パタンが切れたら恐らく修復はほとんど不可能になる。はずれたところは数箇所で、いずれも配線のないランドだけで他と接続しているところは次の半田付けのとき慎重にやれば何とかなりそうである。胸をなでおろした。元はと言えば¥300で買えるジャックを¥800で売ろうという商売に反発して始めた作業である。これでおしゃかにしてしまってはみっともなくて人にも話せない。

 新しいモジュラジャックとパルストランスは変換基板ごとユニバーサル基板の切れ端に固定し、6本のリード線で付録基板のピンに接続する。どうせ付録基板はブレッドボードに固定する予定でピンヘッダーを付けてしまっており問題はない。100Base/TXにならないかもしれないが今のところは10Base/Tだけで十分だ。そのうち安いモジュラーがどこかで売り出されたとき付け替えよう。恐る恐る基板の電源を入れる。

点いた!リンク確立のLEDが点灯した。pingもTelnetも全く問題なく動作する。いやいや、おつかれさま。何度も繰り返すが、苦労が多ければ多い程、解決の喜びは大きい。はたからみれば愚かなこと限りないが、こんな上質な楽しみはない。たとえ失敗しても、誰かが悲しむわけでも、人に迷惑をかけるわけでもないのである。

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

Mega128のSDカード付き基板

こんなこともあるんだ(7/20/08)
 FPGA騒ぎが一段落して、やりかけていたMega128のCPU基板を作っている。最初に取り組んだのが、USBシリアル変換基板のパートである。実はこの変換基板、通販でアイテムラボにピンポストを注文するときに送料コストを下げるため試しに買った基板で、それにあうICを秋月で買ったという完全に目的と手段が逆になっている基板である。

 乗せたICはFTD232RLというUSBシリアル変換のICで秋月ではモジュールとして売っているのでわざわざ変換基板につける必要はない。モジュールとして買えば\950、ICで買っても\600、手間やモジュールに付いている部品を考えればあまりメリットはない。秋月も良心的な商売をしていると思う。Pict0732

 CPU基板は既に、SDカードとUSBソケットの実装は済んでいる。工具を揃えたお陰で、こうした基板工作の生産性は格段に上がった。難物だったDCアダプターのソケットも、ドリルスタンド(ボール盤と言えば聞こえは良いが、そこまではいかない)で、1ミリの孔を正確に開けられるようになったので、簡単に付けられる。

 USBソケットのピンはユニバーサル基板に合わず、小窓を明け、そこからUEW線とピンを半田付けして手近なランドにつないである。しかし線が短いためランドの半田付けでピンとの半田付けが溶けてはずれるのに苦労する。線をピンに一回ループさせ、手短に半田付けを済ませることで何とかしのいだ。いや半田付けというのは本当に職人芸だ。804

 半田付けが終わり、確認をすませて接続しようとしたところ、ふと秋月の前のモジュールの配線図を見ていてUSBのピンの位置がおかしいのに気がついた。USBバスのVccの隣に空きピンがない。危なかった。GNDとVccを完全に逆に配線していた。このまえの逆ざしの二の舞になるところである。VccとGNDがショートしていないことを確かめて、いよいよUSBケーブルを差し込む。全く反応がない。

 ま、そんなものだ。ケーブルをはずして基板の上から導通テストを一本づつ始める。変換基板は28ピンのSOCを2段のDIPピンに替えているので、ICピンから直接に確かめてないと危ない。案の定、片側は合っていたが、もう一方は逆にピンがでていることがわかる。やれやれ、紙に配線図を作ったときにすでにピン配置を逆にしていた。

 一旦配線したものを換えるのは大変だ。特に今度はチップコンデンサーを3つも使っているので、この配置換えに苦労する。しかし、このチップコンデンサーは熱に強い。何度半田付けしてもちゃんと容量が残っている。これで大丈夫だと、配線換えした基板にUSBをつなぐ。うんともすんとも動かない。

 うーむ。何が原因だろう。もういちど最初からピンの配線の確認を始める。おや、Vccと所定のピンが接続されていないぞ。おかしいな番号は合っている。え、え、えー、番号の振り方が間違っている。DIPやSOCのICはピン番号は左上から始まって、左下、右下に移り右上が最終ピンである。紙に書いた配線図は、左下まで行って番号が右上に上がっている。何と言う基本ミス。表のピンアサインを半田面の裏に移し、2段に移し変えていく間に間違えたらしい。さっき2段のピン位置の間違いに気を取られ、ピンアサインそのものが間違っているのに気がつかなかった。

 3度目の配線違いの修正はさすがに気が重い。ミスをするときは重なるものだ。いわゆる天中殺である。変換基板は結構大きく、秋月の変換モジュールと大差がない。無駄な作業をやっているような気がして、むなしい気分がよぎる。しかもまだ動いていないのだ。

 やっとのことで配線を終え、祈る気分でUSBケーブルを差し込む。やった、「新しいディバイスが認識されました」のメッセージが出て、やっとのことで新しいシリアルポートが出現した。やれやれ、やっと通った。と喜んだのも束の間、次に差し込むと認識されない。おかしいなと接触不良かと、ソケットあたりに少し力を入れたら、ボロッとソケットがはずれかかった。半田が不足していて固定ピンの半田がはずれたのである。泣きたい気分である。

 めげる気持ちを奮い立たせ、半田をたっぷり盛ってしっかり固定してテストを続行する。こんなことで挫折するわけにはいかない。まあ、それにしてもついていない日である。調べた結果、USBのホストコントローラーの組み込みに失敗している。別のシリアルUSBディバイスをつないだあとは上手く行くが、単独では失敗するようだ。まあ、動くことは確認できた。この日はこれでおしまいにした。

 次の日、本格的にWebでホストコントローラのことを調べてやろうとPCを立ち上げ、ふと、ハードの配線が一本不足しているのに気がついた。ピンの中にTESTというピンがあり、指定では、これもGNDに落とせとある。推奨配線図で違うところはここだけである。

 まあ、調べる前にたいしたことにはならないけれど、念のためつけておこうと半田ごてに電源をいれ、TESTピンをGNDに接続する。何と何と、これで問題なくUSBシリアルポートが認識されたのである。何度やっても問題なし。これまでこういうピンはだいたい何もしないで動いていたので放置してあった。USBだっていくらでもポート番号が増えるので好い加減に削除しても復活し問題になったことはない。それにしても、こんなこともあるんだ。いやいや「データシートは穴が開くまで見てそのとおりにする」という教訓が身にしみた一件であった。

CPU基板完動!(7/22/08)
 3連休は、寸暇を惜しんで電子工作にいそしんだ。USBシリアルのチップの配線では3度も配線を間違い一時は投げ出したくなる気にもなったが、トラブルが思わぬところで簡単に解決し気を良くして残りの作業に取り組む。SDカードの7つ余りのプルダウン抵抗の半田付けや、USB部との絶縁のためのトランジスタ回路(エミッタフォロワー)、CPUの3つの電源の配線とチップコンデンサーの埋め込み。細かい作業が続く。

 最後の作業は、レベルシフタのICの配線で、これは紙に何度もアートワークをやって最適な位置を探す。こういうアートワークのためにフリーソフトのCADもダウンロードしてあるのだが、なかなか導入する機会がない。なにしろ先にやりたいことが多すぎる。

 このCPU基板でSDカードに入れたWAVファイルの再生までやりたいのだが、FM放送なみの音質にするには、Mega128クラスでは自前のDACを持っていないので難しい。H8にはDACはあるが、小さなチップでうまくやるというのがアマチュアのこだわりだ。でも、サイトでDACの代わりにするPWM機能などを調べていたら、秋月でSACD並みの音質のDACチップが¥800で売っている。何となく気がそがれる。しかしアナログの世界は懐かしい。フィルターの設計では、40年以上前に大学で学んだ伝達関数が出てくる。丸善の分厚い対数表で7桁の掛け算を徹夜してやったことを思いだす。

 それはともかく、今日は朝から腰が痛くなるまで半田付けを続け、夜半、遂に全部の配線が終わった。コネクタのピンアサインなどは適当である。はやる心を抑えて恐る恐る電源を入れる。パイロットランプのLEDが付かない。頭から血の気が引いていく。さっき導通テストは済んでいる。ISPケーブルをつけてCPUそのものの動作も確認している。どこかが短絡したか。

 すぐに電源を切り、配線面を調べる。はっはっは、LEDのアースが位置を決めただけで半田付けを忘れていた。いやいやあせってはいけない。急いで半田付けし、もういちど配線を見直して再度電源を入れる。 出た。PCのシリアル画面に初期メッセージが表示される。しかし、SDカードNotReadyというエラーメッセージが出て先に進まない。はっはっは、SDカードが入っていなかった。

 SDカードを差してもういちど電源を入れる。やった。ちゃんとファイルをオープンしたというメッセージがでる。SDカードの部分は完全試合達成だ。アクセスランプも点滅する。しかし、LEDマトリックスはまだ点かない。フラットケーブルなので制御ラインのピンアサインが良く分からない。こうなったら3本しかないので手当たり次第に差し替えて見る。こわれることはないだろう。6回やれば総当りだが、2回目で出た!今までの電光表示が何事もなく表示される。

 遂に、Mega128のCPU基板の完成だ。まだRTCとバックアップMega128ledバッテリの実装が済んでいないが当面の作業には不自由しない。この基板はSDカードとUSBシリアルポートを内蔵しており、40ピンのソケットからI/Oピンを引き出せる。これでブレッドボードの2/3を占拠していた部分が開放され、がた老AVR研究所の効率は一段と向上する。

 散々苦労して動いたときも嬉しいが、こうして一発で動いたときの喜びもまた格別である。電池接続して場所を移動して動かしてみる。まるで子供のようなはしゃぎようである。

こんなこともあるんだ その2(7/25/08)
 このあいだはICのTESTピンを放置していてえらい目にあったが、今度もたったひとつの部品を手抜きしただけで、丸々一日半はまっていた。汎用CPU基板が順調に電光掲示板を光らせたあとチップを取り替えていくつかテストをしていた。Mega128の石は2つ買ってあって、ひとつはSDカードのテスト用にオリジナルのファームが書き込んである。これに差し替え、複数のSDカードのアクセステストをしていたときである。

 これまで何の問題もなく読み書きできていた16Mのカードが急に読めなくなった。128Mは最初エラーが出るが2回目からはちゃんと動く。ブレッドボード上のセットではどちらも問題ない。SDカードではなく、CPU基板がおかしい。基板をかえたところは、あのあとRTC(リアルタイムクロック)基板を差し込んでブレッドボードと共用するようにソケットを新設しただけで、SDカードあたりは全くいじっていない。

 SDカードアクセスの中身を知るちょうど良い機会と思い、chaN氏のソースリストに盛大にテストステートメントを入れて、初期化のシーケンスを追ってみることにした。これの説明はWebに詳しいが、そのやりとりを出てくるテストメッセージからトレースすることは簡単ではない。まずやっていることを把握しなければ、テストステートメントを入れる場所すらわからない。適当なところに入れてもエラーで帰ってくるところが表示されるだけで中身がわからない。やっとのことでその場所を見つけると、今度は沢山出すぎて何がなんだか余計分からない。

 数時間格闘して、わかったことは、ソースコードが想定しているようなレスポンスをSDカードが全く返しておらず、みんな迷路に入ってタイムアウトしているということだ。これは厄介な話である。ソフトではなく、ハードの問題の可能性が高い。電圧を測る。異常はない。パーツの緒元を確認する。間違いない。ブレッドボードと違うところは、電源を常時ONにしていることとソケットが違うだけである。配線違いがあればそもそも最初から動かないはずだ。

 SDカードの電源のパスコンは3.3Vレギュレータにアルミ電解100μと積層セラミックの0.1μが入っている。SDソケットの近くには、そう言えばない。オリジナルとブレッドボードの方はFETで電源をON/OFFしているので、インダクターと5μのコンデンサがついているが、これは電源ON時の急激な電圧低下防止用で、基板では常時ONのため省いてある。ブレッドボードにはオリジナル通りついている。これか。こんなものくらいで動作がおかしくなるということがあるのだろうか。いやもっと別の配線はずれか、ミスがあるのかもしれない。128Mなら大丈夫だし、16Mでも時々動くときがあるのだ。第一最初は問題なく動いていたのである。この日は夜も遅かったので頭を捻りながら床についた。

 次の日。FETをあらためて組み込むのもおおごとなので、コンデンサだけつけてみることにした。SDカードはカード自身がプロセッサーで確かに電源にパスコンがないのはまずい。しかし、電源を共有するレベルシフトICは近傍にあり、そこにはパスコンが入っている。半信半疑でコンデンサを半田付けしてみる。信じていない証拠にリード線を切らないで長いまま臨時の半田付けである。

 これが、何と、やっぱりというか、今までのトラブルの原因だったのである。これまでの機嫌の悪さが嘘のように、全くリトライもなく、SDカードは正しいレスポンスを返し、16Mが初期化される。128Mも問題なし。SDカードはかなり電流が流れるということで、電源変動が大きくてミスをしていたのか。いやそれにしても劇的な解決である。オッシロでもあればすぐにわかったのかもしれないが、ロジアナではこういうトラブルはわからないだろう。それにしても何故最初は動いていたのだろう。

 パスコンは教科書などにはICひとつに必ずつけろとあるが、それは発振などの予防で、なくても動くことが多い。あのLEDマトリックス基板だって全部のICにはついていない。しかし、こんなこともあるんだ。良い勉強になった。要は基本は忠実にということだ。別の目的で遂に買った2GバイトのマイクロSDカード(わずか¥960)もちゃんと認識し、正しいファイルサイズを表示した。偉い。コンデンサのリードを短く切って正式に組み込む。これでこれまでのブレッドボードは解体することが出来そうである。

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

FPGAでLEDピコピコ

FPGAの部品は揃った(7/14/08)
 仕事の帰り、例によって秋葉原に寄る。今日はPCのメモリ増設を頼まれたと言う知人と一緒だ。メモリはウェブで確かめて一番安い店に行った筈なのだが、¥1000ほど高かった。連れが店をはしごすることの嫌いな人なので即決で買ってしまう。このあと千石電商にまわり、¥1000余りのFPGAのROMを手に入れ、秋月で山勘でサイズの一致する表面実装のクリスタルを買う。雑誌の推奨品ではないが、まあ4個で¥300なのでだめもとである。その他JTAGライター用のICとかコンデンサーとか細々買い込む。連れの人はこういうところ初めてということで興味津々な様子だったので、結構長居をした。

 メモリ交換を手伝って欲しいといわれPCのある知人の友人の事務所にタクシーで向かう。メモリ交換は造作もなかったが動作確認で電源を入れたら最初、全く画面が出ずちょっと青ざめる。専門家という触れ込みなので余り慌てるわけにはいかない。落ち着いて周りを調べ始めるとディスプレイの分岐装置が見つかった。キーボードか何かの信号で画面を切り替えている。

 これが原因に違いないと、分岐装置からケーブルをはずし、直接PCにディスプレイに接続したら、無事BIOS画面が出た。BIOS画面ではディスプレイの切り替えはやってくれない。メモリを換えたくらいで先に行かないというのも気の利かない設計だが、文句を言う相手はいない。ついでにアンチウィルスソフトのバージョンアップも頼まれた。Windowsのソフトのメンテは出来るならパスしたいのだけれど行きかがり上いやとは言えない。

 こいつも少してこずった。新バージョンのインストールは、旧バージョンの管理下でないと出来ない仕組みで、インストールの準備が終わり、新バージョンを立ち上げようとすると、「旧バージョンをアンインストールしないと駄目」というので旧バージョンを消すと新バージョンを立ち上げる手順が見つからないという矛盾した手順で頭を抱える。

 マニュアルはない。オンラインマニュアルは旧バージョンが動いている時でないと見えない。仕方がないので、PCの中のこの会社の製品のフォルダを調べてみたら何か数字だけの名前のフォルダが見つかり中にsetup.exeがある。何だこれを動かせば良いのか。だめもとで動かしたら正しくこれがインストーラーで新しいバージョンがインストールされた。それならそれでオンラインマニュアルに手順を書いておかないと混乱するばかりである。

 いや気分が良い。とりあえず2つが一気に解決した。知人も大喜びで近くのそばやで是非ご馳走させてくれと言うのでジョッキで乾杯した。ほろ酔い気分で帰宅し、早速買ってきた部品を確認する。今日で作業が開始できる程度に部品はみな揃った。山勘で買ったクリスタルは正しく推奨品とサイズも機能もぴったりの同等品だった。ウェブの通信販売では¥300以上していたやつである。それにしても秋月は安い。1個¥75。もちろん動かしてみないと安心は出来ないが、今日は快調、快調の一日であった。実装はさすがに酔っているので今日はやめる。0.65ミリピッチの半田付けは無理だ。

FPGAの基板が動いた(7/18/08)
 雑誌の付録のFPGA基板に取り組んでほぼ1週間、実装とテスト3日間、やっとのことでFPGAが動作することが確認された。いや動いたというだけでまだFPGAらしいことは何もない。ただLEDが点滅するだけだが、千里の道も一歩からという。動いたと言うだけで感激である。基板付録を手に入れてから10日、他にやることが多いのだが、情報を収集し、部品を買い揃えて準備を進めてきた。

 同じハードの世界でも、AVRとは全く違う世界である。ちょうど去年の秋、AVRを始めたときと全く同じ状況で右も左もわからない。使われている言葉自体が理解できない、まるきり手探りの世界である。 それでもこのあいだWebで見つけた情報でいつも行く千石で純正ROM(XCF02SVO020C)を入手してある。付録基板にパターンが用意されているし、FPGAはCPLDなどと違ってROMがないと独立して動かない。必須の部品である。

 これが純正にしては破格の安さ、2メガビットで\1120である。フラッシュメモリは安くなっているとは言え、純正とつけば普通、汎用品の10倍や20倍、1万円くらいしてもおかしくない。これを基板に半田付けする作業と、パラレルのコンフィギュレーションケーブルを自作する工程が残っている。ケーブルインターフェースは雑誌が薦めるように基板に作らず、汎用性を考えて、5×3×3センチの小さなボックスに組み込む。以前、USB-SPIブリッジを作ったときに途中まで作って小さすぎて使わなかったケースが都合よく役に立った。Xlinx

 純正のUSBインタフェースケーブルは3 万円もするが、我が家のPCには幸いパラレルインタフェースが出ているので、このインタフェースに新たにかかった費用は、面実装のIC(74LCX244)が\140、変換基板が\130あわせて\270である。パラレルケーブルは倉庫の棚に山のように眠っていたSCSIやシリアルケーブルの活用で実に地球に優しい。今は殆ど使わないインクジェットプリンターのパラレルケーブルをはずして中継ケーブルをはさみ、電子工作の机のスペースで切り替えられるようにする。

 何回目かの0.65ミリピッチの半田付けも順調に進み、ケースの工作もドリルスタンドのおかげで正確にしかも素早く済んだ。いややっぱり道具には金をかけるものだ。仕上がりが違う。ハードの工作と半田付けはレベルシフターのICだけなので半日作業で終わった。

 これでいよいよFPGAにプログラム(というのか)をPCから送り込む作業にとりかかれる。FPGAのメーカー(Xilinx)から無料の開発環境をダウンロードする。CDにもあるが折角だから最新版を手に入れた。こいつは量としては大きくないのにインストールにえらい時間がかかり、出来上がったソフトもやたらに大きい。最初、Cディスクに入れたら、容量不足で止まってしまった。10G以上空いていたはずなのだが。Fpga

 今回は動作確認が目的なので、中身のソースは雑誌の付録をそのまま借用する。ソフトの世界なら"Hello World"、ハードではLEDピコピコというやつ、LEDが点滅するだけの簡単なロジックだ。わけのわからない単語が飛びかうなか、記事の言われるままいくつかのステップを経由してマイコンで言うバイナリファイルが出来た。ここからが正念場である。インタフェースケーブルがうまく動くかどうかは、ここまででまだ確認できない。雑誌のガイドはコンフィギュレーションROMのない基板での想定なので一抹の不安がよぎるが、指示通りファーム(バイナリの)の書き込みのボタンを押す。

 懸念通り、「書き込めない}という真っ赤なエラーメッセージが出て先に進まない。さて、これからが問題である。自作のときはハードの問題が大部分だが、これだけ手順が複雑だけに手順そのものの問題もある。何度目かの導通チェックと配線をチェックする。ハードはもうこれ以上調べるところがない。手順の可能性が強いと見て、沢山あるウィンドウのあちこちをいじるが知らない単語ばかりで何をやっているのか見当がつかない。Webの情報どおり、このiMPACTというローダーは難解で一筋縄では行かない。特に雑誌の説明ではROMがない状態で直接JTAGインタフェースで書き込んでいるが、こちらの基板にはROMがついている。不安がよぎるが何処にもそのへんのところは書いていない。

 メッセージログを見る限りでは、ケーブルの認識はどうもやっているようだ。しかし確証はない。念のため、レベルシフタICの電源を指定どおり3.3Vにしてみるが(この基板のJTAGのVccは何故か2.5Vなのに配線図では3.3Vを要求している)、変化はない。もう午前2時を過ぎている。困ったときのWeb頼み、これでわからなければ寝ようと、「FPGA」「コンフィギュレーションROM」「動かない」などのキーワードで調べると、私と全く同じ状況の人がいたのである。この人は、わからなくて1年以上放ってあったそうで、人から聞いて書き込みに成功したとある。いやWebは本当にありがたい。この記事を読んで目から鱗が落ちる。

 最初は、直接FPGAに書くのだから、ROMがあってもなくても同じだと思っていたが、思ったとおりそうではないことがわかる。やっぱりね。ROMがついていたら別のやりかたでないと書き込みのときに邪魔をするようだ。言われるとおりにROMにbypassの指示を与え、プログラム(書き込み)する。やった、今までの赤から進捗を示す画面に変わり、緑の成功メッセージが出る。やった、やった。基板のLEDが点滅を始める。

 今動いているロジックは単にクロックを分周してLEDを点滅させているだけだからFPGAにとってはゴミみたいな使い方だが、こうしてソースコードから書き込みまでの一通りのパスが出来たことは実に大きい。これで、がた老研究所もFPGA開発の仲間入りである。夢がふくらむ。さしあたってはCRTC(ディスプレイインタフェース)か。

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

雑誌付録のFPGA基板入手

紀伊国屋でバックナンバー発見(7/9/08)
 仕事をさぼって映画を見ようと新宿に出てきたときのことである。開演までの待ち時間に紀伊国屋本店を覗いたら、一時姿を消していたARMチップが付録になっている雑誌のバックナンバーがまた並んでいた。大書店だと独自在庫を持っているのだろう。 そういえば、この雑誌は1年ほど前にFPGA基板を付録にしたことがある(デザインウエーブマガジン2007年7月号)。 まさか、そのバックナンバーまではないだろうと書棚を目で追っていたら、それがあったのである。目を疑った。確か出版社では品切れの印がバックナンバーのところについていた号である。

 迷わず手にとってレジに向かう。入手しにくい発振子や、単独で走らせるときに必要なROMチップがついていないので人気がなく残っていたのかもしれない。それにしても、今、買って実験してみようと考えていたCPLDが¥1000程度で数千ゲートしかないのに対し、この付録のFPGAは何と25万ゲート(Spartan XC3S250E)。それで使い方を書いた雑誌こみで¥2480というのは無茶苦茶な安さである。動かすまでには相当な道のりがあると思うが、FPGAを知るにつれて、昨年、マイコンを始めたときと同じような興奮を覚えてきた。

 始めは、単に、ロジック回路をせっせと配線して組み込むかわりに、ひとつにまとめてしかも高速に動かせる便利な集積回路くらいに考えていたが、調べていくうちゲート数が10万を超えてきたら、これはちょっとしたCPUと同じと言うことに気がついた。雑誌やウェブでソフトCPUコアとか、Linuxが走るコアという意味がわからなかったが、それがこのことだったのである。

 今まで40年以上コンピューターの世界にいて少なくともCPUは神が創ったものと同じで我々には手の届かない神聖な存在であった。それが、自分で自由に設計できるのだ。もちろん初手から作るなどは無理で、これまでに先人が構成した要素を組み合わせたり、出来合いのソース(VHDL)をダウンロードするにすぎないのだろうが、少なくともそれを可能にするリソースは今自分の手の中にある。FPGA基板ともなると、どんなに安い教材キットでも1万数千円はする。それが¥2000余りで手に入った。たとえ何も出来なくても可能性だけは少なくとも手に入れた。何か心の奥底から、ぞくぞくわくわくする感情を押さえることができない。729fpga

 で、何を作るのと聞かれてもちろん具体的なものがあるわけではない(それは聞かないお約束)。画像処理の何かに使えるかくらいの漠然としたもので、遠大な夢としては、昔のAppleコンピューターを再現するというのもあるが、まだ現実的ではない。それまでにやりたいことが沢山あるのでいつ手をつけられるかわからない。しかし、夢としては大きな夢をもらった。楽しみなことである。

ARM付録基板に苦戦(7/11/08)
 LEDマトリックスの電子工作が一段落して、がた老AVR研究所は新しい局面を迎えた。FPGAという新しい目標が出来たが、これは一筋縄では行かない。現在のデジタルデバイスでも最先端技術のひとつなのだ。私のようにハードを知らない人間にとっては目の眩むような高みにある。Webサイトのページを見ていても殆どがハードウエアのプロが余暇に楽しんでいる雰囲気で素人が気楽に始められるものではないことは明らかだ。

 しかし、FPGAを知ってしまうと、今までやってきたAVR関係の工作の輝きが急に失われていく感じがするのは否定できない。要するに電子工作の面白さは、自分の好みのものを既存の部品を使って自由に組み立てることにあるのだが、FPGAはその究極にある。完全にハードが手作りできるのである。

 それはさておきFPGAボードの揃えるべき部品のリストを作りながら調べてみたらそれほど苦労しなくても馴染みの店で大体の部品は手に入りそうだ。電光掲示板のプロジェクトの整理のため、ブレッドボードに苦労して作ったMega128とSDカードのセットを本格的な汎用マザー基板に移し替える作業を始めているのだが、どうも気がそぞろになって、なかなか進まない。少し気分転換をしようと、今まで放ってあったこのあいだの32ビットCPUのARM付録基板を触ってみた。

 こいつは、ピンヘッダーとSDカードのソケットを半田付けしただけで、その先は進んでおらず、SDカードが動くかも確認していない。動作確認くらいやっておこうと雑誌に載っていたUSBをマスストレージにするファームウエアを書き込んでみた。開発の時に使うDFU(ファーム書き込みをUSBから行うローダー)に慣れるためもある。こいつだってFPGAの前は有力な開発ターゲットだったのだ。

 ところが、これが雑誌の記事通りにPCにソフトをダウンロードしてDFUが動くところまでは簡単に行ったのだが、ターゲットのチップに目的のファームウエア(ここではイメージと言っている)が正常に書き込まれない。CDにあるサンプルのUSBマスストレージのイメージが不正なフォーマットだとか言ってupgradeを拒否する。

 えー、雑誌提供のイメージがどうして不正なのだ。違うファイルをダウンロードしようとしているのか、何度もその部分を読み返すが、指示通りの場所に間違いない。どうも雑誌の説明が不十分で、イメージの書き込みの手順が何か省略されているような気がする。画面の別のところにuploadという機能があり、しかも指定されたイメージはfarmware upgradeというフォルダにあって、本体のMassStrageのフォルダにはイメージが入っていない。uploadをやってみると何故かこれはうまくファイルが書かれる。しかしCPUチップは相変わらず、以前のVirtualComPortと同じになってしまう。

 雑誌社のサイトや色々なサイトを漁ってみるが、これに関した情報はどこにも出ていない。仕方なくGoogleが検索した2ちゃんねるのサイトまであたってみた。ここは大体いつもゴミ情報が殆どで雑誌社や著者の悪口、揚げ足取り、投稿者同士の下らない喧嘩など、愚にも付かない話ばかりで、いつも気分が悪くなるのだが、この際は仕方がない。たまに参考になる情報(困っている人の書き込み。大抵は無視されているが)が見つかるときがあるので、我慢してこまめに調べてみた。

 殆どが、この基板の設計者の悪口(まあ、少し前の基板には随分誤配線があったようだ)ばかりで、胸が悪くなりそうになり、そろそろもうやめようかと思ったころ、自分がはまっている部分で、「CD-ROMから直接書こうとすると、読み込み属性ではエラーになる。著者が実際に動かしていない証拠だ」と息巻く書き込みをみつけた。

 これだ!急いで、CD-ROMにあるイメージをPCのデスクトップに貼り付けupgradeしてみた。やった。順調にイメージが書き込まれた。はやる心を抑えてUSBのプラグをつけなおす。画面に「MassStorageが見つかりました」というメッセージが出て、SDカードのアイコンがあらわれた。やったやった。午前中からはまっていた問題がやっと解決した。それにしてもソースファイルがReadOnlyだと他へ書けないというのも変な仕様だ。

 勢いに乗って、DFUの練習のため、元のVirtualComPortに戻す。ところが、加速度センサーが動かなくなる。そりゃそうだ。このCD-ROM に入っているVirtualComPortはメーカー提供のサンプルイメージで加速度センサーのことなど知らないはずだ。この雑誌社のソフトはどこにも見当たらない。青くなる。雑誌の先の号でこの加速度センサーを使った記事がいくつかあり試してみたかったのだがそれが出来なくなる。

 下らない話だけれど、出来なくなると思うと何か無性に残念になる。こういう細かいところにこだわる自分が情けなくて更に余計落ち込むのだ。昔からこの性格に悩まされている。少し気分が戻ったところでふと気がついた。さっきのuploadというのはどうも、downloadの反対で、チップにあるイメージを吸い上げる機能のようだ。uploadがうまく動いていたということは、最初のイメージをPCのどこかに残しているのではないか。

 その証拠に最初そのフォルダは書き込めないと怒られ、適当な場所を指定すると書き込みに成功している。そのイメージでupgradeしたが変化がなかった(元通り動いた)のだ。調べてみると、あった、あった。MassStrageという名前になっているが、これは勘違いでこちらで設定した名前で実はここに元のイメージが入っているに違いない。まあ、動かなくなってもいいやぐらいのつもりで再びこのイメージでupgradeしてみた。ビンゴ!であった。CPUチップは見事に最初の状態(加速度センサーの値が連続表示)に戻った。

 いや、気分の爽快なことこのうえない。プログラムのデバッグで不具合を見つけたときと同じ気分だ。いくつかの仮説をたててそれにもとづいて話を組み立て、それを実際に確かめる。苦労の末、その仮説が正しかったことが証明される。気分の悪くなる2ちゃんねると辛抱強くつきあったのもその甲斐があった。一種のソーシャルエンジニアリングの成果だろう。別の意味のデバッグの快感を味わって気分が良い。

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

2008年9月 7日 (日)

8ドット漢字電光ニュース

漢字電光ニュースの完成(7/1/08)
 5月の末から遊んでいたLEDマトリックスは、本日、遂に8ドットながら第二水準までの漢字と半角のカナ英数字をUARTからの入力で表示する電光ニュース版となって当面の最終ゴールに到達した。文字フォントは昔のPDA(携帯端末)で使われたフリーの美咲フォントを活用させてもらった。Pict0726

 SDカードに入った8バイトのフォントデータのみのバイナリファイルは、コードから換算したファイルポインタでランダムアクセスしているので、一字あたり数ms、半角は同じフォーマットをEEPROMに入れたので1ms以下で読み出すことが出来る。LEDの描画タイミングはファイルアクセスを優先しファイルを読み終わるまで待つしかけで、表示中にアクセスすると一時的に止まるが読み込みが終わると再開する。 追加メッセージも可能である。

 ファイルフォーマットは1文字当たり10 バイト、頭の2バイトはデバッグや編集のため、文字コード(JIS)が入り、その後の8バイトに縦方向にスキャンしたフォントグリフが入っている。配布されているフォントは行方向なので縦横変換がしてある。これは、LEDの横スクロールのためである。

 第二水準まで入れたバイナリファイルのサイズは200キロバイトと少し大きいが、これはランダムアクセスのロジックを簡単にするため、コードの指定のない部分を詰めずにそのまま飛ばしているからである。実用的には全く問題がない。今、実験に使っているSDカードは一昔前のデジカメについていたカードでわずか16Mバイトしかないが、それでもマイコンには十分すぎる容量だ。それにしても最近のメモリの低廉化はすさまじい。2GのSDカードが¥1000以下で売っている。10年程前、仕事で、苦労して導入した背の高いラック一杯の画像蓄積用の磁気ディスク装置の容量が200ギガで数千万円したことを思い出す。あれから10年しかたっていないのである。余りの変化の激しさに肩の力が抜ける。

 プラットホームはMega128だが、出来上がってみるとフラッシュのサイズは、TinyFatFSをReadOnlyにしたため、11Kバイト少々に納まった。これならMega168クラスでも十分入る。ただ、Mega168は1ポートで連続したピンをとれないので、パラレル8ビットでトランジスタアレイをドライブしているところを変更するか、もうひとつシフトレジスタのICを追加して、すべてをシリアルにしてしまうほうが簡単かもしれない。Pict0727

 いやそれにしても、最高の気分だ。これまでの漢字表示のプログラムとLEDマトリックスのプログラムをひとつにしたのだが、これがとても順調に進んだことが余計気分を良くしている。プログラムの機能の切り分けが合理的だったからと自画自賛する。それに両方ともかなり念入りにデバッグをしてあったため初期トラブルも殆どなかった。

 表示させたら文字の天地が逆だったのと、文字ポインタを進めるのを(例の++)デバッグの途中で今度は消してしまい、リセットがかかって突然動かなくなって慌てたくらいで、問題なく漢字カナ交じり文が表示された。半角のフォントのあとは文字間隔をつめるロジックも上手くいった。本来は個別文字単位にカーニングをしないと本式ではないが、フォントファイルのフォーマットにその情報を入れずに作ったのですぐには出来ない。ついでに、直近の表示データを必ずEEPROMにセーブして電源を入れなおすと、そのデータが表示されるようにする。

 思いついた色々なテキストを入れて視認性を確かめる。わずか7ドット×7ドットの美咲フォントだが、何となく読めるというのが不思議だ。半角の8あたりは全部で7ドットしかないのでいささか苦しいが、なにしろこのフォント、第二水準の漢字まで入っているのである。

 で、用途は、と聞かれると笑ってしまうしかないというのがこのプロジェクトの最大の問題なのだが、まあ、これは今2枚しかないLEDマトリックスを拡張してどんな感じになるか確かめてから考えることにする。H8 にメールサーバのスタックがあるそうだから、外出先から携帯でメールを送り、これをチャイム付きで自宅に表示するなどのしかけを作ったら雑誌あたりで取り上げてくれるかもしれない。

LEDマトリックスを増設(7/7/08)
 ここ数日、買ってあった8×8の2色のLEDマトリックスの3つめを基板に増設することに熱中していた。このあいだ秋月でさらに2つ買ってしまって今さら置いておくわけにもいかなかったのと、やはり電光掲示板というからには最低でも3つはいるだろうと思ったからである。

 この基板は最初2つのLEDマトリックスで赤色の8×16を出すだけだっただが、緑色を出すためさらにフトレジスタを追加し、今度の増設で3つ(8×24ドット)ともなると、シフトレジスタが6つも乗り、ちょっとした壮観である。配線も同じ繰り返しとはいえ、UEW線は交叉させないというルールはとても守れない。少しづつ増やしていったから、ここまで来たので、もしこれを最初から半田付けしろと言われたらとても手の出るものではない。Pict0728

 こういうこともあってか、このごろCPLDとかFPGAの記事にやたら目が止まるようになった。そうなのだ。こういうことが簡単に出来るようになるという説明は、実際にこうした面倒な配線をしてみると実感として身にしみる。半田付けなどの実装も目先が変われば楽しいが、LED基板などは同じことの繰り返しですっかり倦きてしまった。

 フラットケーブルの圧接コネクタの導入で外観はちょっと玄人っぽくなった。いや、これは言い過ぎで、ハイアマチュアというところか。ケーブルの圧接は、秋葉で買う予定だった圧着ペンチではなく、近在のDIY店で万力を買ってきてそれですませた。圧着ペンチが思ったより高かったのと(¥3000以上)、万力なら他の用途に使えそうだったからである。最初、まともな万力にしようと思ったが、みな大きすぎて工作机に大きなボルトで固定するものしかなく、余りにも大げさなので¥2500 の卓上万力(テーブルバイス)にした。まあ、機械工作の予定は今のところないのでこれで十分だろう。

 リボン(フラット)ケーブルはこれまでの自作PCパーツについてくるIDEケーブルやFDDケーブルが山ほど残っている。暫くはこれを活用することにする。買う必要もない。先だって買ったロジアナのプローブもこれを利用している。長さが10センチということもありアナログと違ってそう問題はないようだ。ちゃんとNICコントローラの25MHzのクロックが観測できている。

 3個のLEDマトリックスは少しデバッグに手間取ったが、無事3色を使い分けて日本語テキストを表示するようになった。2つのときと比べれば確かに視認性ははるかに高くなる。大体の感じは類推で読めるが、躊躇(ちゅうちょ)とか躑躅(つつじ)などは流石に全く判読不能になる。しかし、魑魅魍魎(ちみもうりょう)などは文脈がわかれば何となく読めそうである。

 デバッグに時間がかかったのは、2つのときは(結果的に)誤魔化していたダイナミック表示が3つになるといい加減なコーディングでは動かなかったためである。2つのころ既にあったバグ(ゴミが時々出る)が中々とれない。結局、解明に役立ったのは、前に作ってあったワンステップ毎の表示コマンドであった。これでひとつづつ動かしてみて、バッファー全体の境界で1ビットずれていることがわかった。ダイナミック表示しているときはちょうど画面の切れ目にあたるので今までわからなかったバグである。3つになったため、スキャンの折り返し点が増えて顕在化した。ただ、どこで1ビットずれているのかが最後までわからなかった。わかってみれば、何のことはない、基本的なところがみな1ビットおかしかったのである。全部がずれていたため表面化せず結局最後のデータのところでゴミになっていた。

 今度こそ、1ヶ月余りのLEDマトリックスプロジェクトは大団円を迎えた。収穫は、SDカードのアクセスにすっかり慣れたこと、表面実装部品を使いこなせるようになったこと、そうだ、スタック領域のトラブルを解明したことを忘れていた。CPLD、FPGAの意義が良く理解できたこと、これも大きい。いやいやお遊びとはいえ大きな収穫だった。

ここに、AVRstudioのプロジェクト単位のフォルダー2つを置きます。ひとつは、美咲フォントをバイナリにして、SDカードとEEPROMに収容し、その内容をUARTで確認できるF_EP_LOAD128と、本体のENEWS128です。このままAVRstudioのプロジェクトとして使えます。ただ余り整理しておらず読みにくいのはご勘弁ください。試行錯誤のあとです。

SDカードの回路は、chaN氏のものと殆ど同じ、LEDのピンアサインはソースのコメントを参照してください。また美咲フォントファイルは再配布、加工がフリーなので、私が使ったファイル(このほかにも沢山ある)を、F_EP_LOAD128のフォルダーに入れてあります。

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

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


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

« 2008年8月31日 - 2008年9月6日 | トップページ | 2008年9月14日 - 2008年9月20日 »