JF1DIR業務日誌(はてなblog版)

アマチュア無線局JF1DIRのアクティビティをつづっています。

AVRはじめました。

確か学生(大学院修士)の頃だったか、確かまだネット環境がパソコン通信中心の時代だったか、マイコン工作の世界にPICなるものが普及し始めて、当局も夢中になっていじっていた記憶があります。EEPROMがまだフラッシュではなく、紫外線でメモリを消去していたことをよく覚えています。プログラミングもハンドアセンブルでしたから、大したプログラムも組めるはずもなく、LEDでルーレットのようなミニゲームを作ったきりで、すぐに飽きてやめてしまいました。その後、フラッシュメモリのPICが出現したり高級言語環境が揃ってきてマイコン工作の世界も随分と敷居が低くなったと思います。しかし、そのころはマイコン工作への興味が薄れてしまい、どちらかというとアナログ回路で遊んでいたと思います。トラ技の付録でちょくちょく遊ぶ程度でサンプルプログラムを動かす程度で終わってしまいました。(ちなみに、中・高校生の頃Z80マイコンの作って挫折したこともあります(苦笑)。)
ハムを始めて真空管をいじったり、オーディオアンプを作ったり、最近では高周波回路をいじったりしているうちに、マイコンで制御すると面白さ倍増できるのでは?と思うようにいたりました。自作のトランシーバーやオーディオアンプにマイコンを組み込んで楽しんでいる方も多く、マイコン工作は電子工作の花形であるということがわかります。
再びマイコン工作を始めようと浦島状態を実感しながら調べてみると、ものすごくバリエーションがあるようで驚きました。デジタルシグナルプロセッサが内蔵しているdsPICに興味があるのですが、とにかく簡単に低コストで始められるAVRから手をつけようと思いました(今月号のトラ技の特集はH8マイコン。これも興味ありますが・・・・)
千石、秋月、マルツ、デジットなどの通販ショップからオリジナルのライタや開発キットが出ているようで入手には困らないようです。ストロベリーリナックスというショップがとにかく安いので魅力あり、ここから通販でISP対応ライタと基本キットを購入しました。肝心のマイコンは、ATmega168-20Pです。

まずライタとマイコンボードのキット工作ですが、すでにプリント基板ができているし(当然です)、そもそも部品点数が少ないのですぐに完成してしまいました。
このライタはUSB変換ツールが使えず、物理シリアル(RS232C)にのみ対応とのことで、D-sub9ピンのストレートケールを引っ張り出してきましたが、ここで問題発生。PC側のコネクタはメスですがライタ側はオスのケーブルが必要。持っているのは両端ともメスです。そこで、ケーブルの一端を切り落とし、偶然持っていたオスのコネクタに付け替えました。やれやれ。

必要なソフトは、AVR StudioとWinAVR、ライタの制御プログラムになります。各々Webからダウンロードしてインストールしました。すべて無料で入手できるのがアマチュアにとって最大のメリットですね。
うちのPCはWindows7/64bitでまだ対応していないソフトやドライバが多く不具合の出やすいシステムですから心配でしたが、予感的中、不具合第2弾です。AVR StudioというRAD開発環境は一見正常に動作するのですが、ソースのビルド時に意味不明なエラーに悩まされました。Googleで調べているとやはり同じ不具合で悩んでいた人がいたらしく、つまり、Windows7/64bitは32bitのソフトを"Program Files(x86)"というファイルにインストールしようとします。コンパイラやリンカに通すパスに「(」があるとビルド時にエラーがでるようです。別の場所に再インストールすることで万事解決。ふう。

無事にサンプルソースのビルドまで進み、hexファイルを生成。これをライタを使ってマイコンに書き込めば完成なのですが、書き込みソフトavrspを実行するも、I/Oを制御するデバドラが動かないというエラーが。giveio.sysというファイルをシステムファイルに放り込んでくれ、というエラーが連発するので、その通りにしても症状は同じ。不具合第3弾である。
そもそもRS232Cが生きているのか?しかしシリアル通信ソフト(ハイパーターミナル)がWindows7には付属していない。TeraTermをインストールし、ケーブルの末端の2ピンと3ピンをショートし、自己エコーバックさせて確認。シリアル端末に文字を打つとエコーバックされた。RS232Cは生きている。おやおや。
というわけで、ライタ制御ソフト(avrsp)がまたしてもWindows7/64bitに対応していないのだった。再度googleで調べると、これまた同じ悩みを抱えている人がいるではないか。COMポートを指定するオプション(-pc1)がいけないようで、これを(-pv1)にするとあっさり解決。API経由で書き込むということですが、やれやれ。
お約束のサンプルプログラムを実行。


一昔前ならば解決までにずいぶん時間がかかるようなトラブルでも、ネット(ブログとgoogle)サマサマであると実感した次第。数時間で解決してしまった。というわけで、Windows7/64bit環境でAVRプログラミングするには、


・シリアルケーブルのジェンダを前もって確認せよ。
・AVR Studioのインストール先には「(」の文字が入っていないフォルダへ。
・avrspを使う際には、ポート指定フォルダを「-pv1」にすべし。



さて、ラジオやトランシーバ工作への応用を考えていますが、アイディアは無数にあるので何から手をつけてよいのやら。まずはPLL周波数設定やデジタルポテンショ、Sメータ表示などをやってみます。