スペックで見た限りでは、328と328Pは電源消費量が違うだけで、後は殆ど何も変わらない。このAVRSPのサポートディバイスリストに一行足すだけで良いのだろうとは思うけれど、AVRSPはPCのプログラムである。修正はWindowsのプログラム開発環境が必要になる。AVRSPはソースコードまで公開されているが、所長は、Windowsの開発環境が大嫌いで、これまで可能な限り近づかないようにしていた。昔、MFCか何かで少しWindows95のソフトをいじろうとして、その長大でおどろおどろしい開発環境に恐れをなして以来、敬して遠ざけている。Macintoshのアセンブラーを使った面倒な画面制御の方が精神衛生上よほど落ち着ける(昔、何本かパッチをあてて遊んでいた)。いって、これしきのことを大騒ぎして、ChaNさんの手を煩わすのも気が引ける。DIP版のMega328Pはストックがあるので、これで作り替えれば良いのだが、ここまで変換基板に作り込んだものが無駄になるのも悔しい。他のプログラムライターも必ずしも無印328をサポートしているとは限らない(78K0のAVRISPもサポートしていなかった)。MkIIを買えば解決するだろうが、これも何か抵抗がある(どうせ純正を買うなら、パラレルのDragonが欲しい)。悩んでいたが、ここまできたらAVRSPを自力で直すしかないだろう。ゆるゆるとウェブで方法を探し始めた。調べて見たら都合の良いことに、コマンドラインだけの開発環境があるようだ。このページは、AVRSPそのもののコンパイル法が詳しく出ている。土曜のお昼過ぎから、このサイトを頼りに、ボーランドの無償Cコンパイラ(BCC5.5)を手に入れ、本格的な開発環境を整え始める。修正を加えて(avrsp.cのディバイステーブルと、avrsp.hのenum変数宣言)、恐る恐るコンパイルしてみる。いやあ、沢山コンパイルエラーが出る。念のため修正前のオリジナルでコンパイル。なーんだ、最初からエラーが出ている。ふむふむ、_outpとか、_inpというダイレクトにポートを叩く関数がライブラリーにないようだ。GiVEIO用のライブラリが見つからない。おや、このページは、本来はAVRSPをユーザーモードで動かす方法(GIVEIOを使わない)の紹介で、別のフリーのライブラリをリンクすれば、これが出来るようなことが書いてある。店をこれ以上広げたくはないけれど、この際これに乗っかってみよう。言われるとおりのライブラリをダウンロードしてリンクしてみる。よーし、コンパイルは警告だけになった。うむ、EXEファイルが出来たようである。だめもとで、こいつを動かしてみた。無印のMega328を認識した。フューズビットは変えられるか。よしよし、これも大丈夫だ。オシロには勢い良く8MHzのクリスタルの発振波形が確認できた。勢いに乗ってSparkFunで動かしているファームを焼いてみる。LEDなどがブリンクし、UARTからメッセージが出る。いやいや、こういう抜け道のようなコンパイルでAVRSPが作り直せた。こんなに簡単にWindows(まあ限りなくDOSですが)のプログラムがコンパイルできるとは正直、思っていなかった。それにしても、ソースコードがあるというのはありがたいことである。真也さん、それにChaNさん、ありがとう。(木)SparkFunのガイガーカウンターを正しく動かす前回の記事の反響は大きかった。最大アクセス(一日866)を記録したかと思ったら、週明けの月曜はその記録もあっさり抜いて一日のアクセスが1200を越えた(1244)。「ゆきの研究室」という著名なサイト(ここの作品は見事と言うしかない)や、所長もお世話になっているsimさんあたりが話題にしてくれてアクセスに拍車がかかった。有難いことだと思うと同時に何か責任の重さを感じる(あまり好き勝手なことが出来なくなってくる)。SparkFunのキットの問題は、前回ですべてが解決したわけではない。このキットにこだわってみることにした。それにしても、つっこみどころ満載のキットである。時々動かなくなる原因を見つけたか(8/26/2011)ブログの初日のアクセス急増はツイッターによるところが大きい。アクセスログに見慣れないリンク先が出てくるのでアクセスすると、自分のブログが出てくる。Googleで検索しても見つからない。おかしいなあと思って、このあたりに詳しい娘に聞くとツィッターの短縮URLというものらしい。ツィッターのページからは検索できる。所長もあわててツィッター登録し、震源地を調査した。これが不慣れで、どなたが最初にtwittしたのか見極められない。この場を借りて御礼申し上げておきたい。それはともかく、過大電圧でガイガー管を壊してしまう危険は回避した。そもそもはそれが問題ではなかった。最初のトラブルは時々動かなくなることだった。この原因は解明されていない。このトラブルシューティングのために部品を次々にはずし、結果としてブレッドボード上に別の部品で配線図どおり組み立てて動かすところまで行った(トランスだけは、基板から取り出した同じもの)。この状態では高圧が出なくなることは一度も起きていない。時々動かなくなるのは、基板上の発振回路のパターンに、接着剤でスペーサーをつけたためと結論付けたが、どうも納得できていない。接着剤そのものは絶縁物だし、基板の上にはかなり厚いレジストが塗られており、これが原因とは考えにくい。トランジスターは2つともはずしてブレッドボードにつけなおし、正常動作を確認している。原因究明はさておき、このキットを実用品に戻さなければいけない。ケースのLCDとスイッチを無駄にするわけには行かないのだ。ブレッドボードで作った回路を小さなサブ基板に作り直し、ケースの中に入れて動かそうと考えた。ブレッドボードにはずしてあったトランスを正規の場所に戻して、そこからサブ基板に行くリード線を出す。念のため、これでちゃんと動くか確かめる(用心深くなった)。