2003.05.20 AVRで遊ぼう

 思うところあって、AVRで遊んでみることにしました。
 AVRはATMEL社が生産しているワンチップマイコンの一種で、外見は↓こういうやつです。




 レゴブロックと比べてみるとその小ささが良く分かります。








 ウソです。

 隣のレゴは幼児用のDuproシリーズで、かなりでかいです。
 今度は対比のために単3電池を置いてみました。

 それでも小さいですね。

 小さいですが、今回使用するAT90S2313というモデル、この1チップにプロセッサはもちろん プログラム用のフラッシュメモリ2Kバイト,RAM128バイト,EEPROM(プログラムから 書込み可。不揮発。)128バイト,タイマ2つ,UART(シリアル通信用インターフェース), アナログコンパレータを内蔵し、入出力に15本のピンが使える優れものです。
 これだけの機能でなんと400円。(日本橋Digitにて。通販だともっと安いところもありました)
 気になる処理速度は、1命令1クロックで実行出来ますので、10MHz駆動時10MIPSに達します。

 プログラムは内蔵フラッシュに書き込むわけですが、約1000回の書き換えが可能なのでいくらバグが あっても大丈夫です。 もちろんフラッシュなので、電源を切っても大丈夫。 起動時に一々書き込む必要は ありません。
 実際こいつは、プログラム書き込んで電源とクロックをぶち込めば取りあえず動くほどお手軽です。 モデルによっては発振器を内蔵している物もあるので、その場合は電源のみでOKです。(もっとも、それだけでは外からは 何やってるかぜんぜん分かりませんが...)

 というわけで、とりあえず試してみます。
 こちらの「1chipCPU AVRを使おうpart1」に あるサンプルを作ってみる事にします。プログラムソースもこちらにあります。
 うまくいけば、懐かしのナイトライダーのスキャナーのようにLEDが左右に往復するはずです。

 プログラムの書き込み回路(プログラマ又はドングル)はWEB上を漁ると、非常に簡単なものもありましたが、 一応、こちらの1000円のキットを使用することにしました。PC側書き込みソフトは ATMELのHPにあるようです。
 このドングル、一応店のオリジナルとの事ですが、公開されている回路図を見る限りではATMELの 準純正のSTK200互換のようです(多分。シッタカモード全開)。

 仕事帰りに必要なパーツを揃え、家で早速組み立ててみました。
ドングル  ドングル  AVR実験 
 写真は左から、組み立てたドングル,ドングルとAVR側書き込み回路,ナイトライダーのサンプルと全て接続したものです。
 AVRのサンプルの回路はブレッドボードに組んであります。ハンダ付けがいらないので、ちょっとした実験をするときに便利です。
(実は一番右の写真、この時点でAVRの書き込み用の端子を間違えてて配線ミスがあります。)
 ドングルはパソコンのパラレルポートに接続します。

 家の引越し後、テスタが行方不明だったり、家にあると思ってた部品が無かったりで、電源投入, 書き込みテストが出来るまで2日かかりました...

 そんなこんなでやっと完成。 PCに接続!電源投入!書き込みソフト起動!...
 なんだかうまくいかないようです。
 もう一度配線チェック。 なんだ、書き込み端子間違ってるじゃん。ドングルのキットについてた紙には、例として AT90S8515に接続するときのピンアサインが載ってましたが、今回使用しているのは AT90S2313、書き込み関連のピン番号が違ってました。

 気を取り直してリトライ。
 うまくいかないようです。 もしかしてさっきので壊しちゃった??でも、I/Oピンと兼用なのでそれくらいで 壊れるとも思えないし。
 ATMELの書き込みソフトは、ナイトライダーのサンプルの説明に載ってるのとかなりバージョンとかが違う(名前も違う)ようなので、未対応なのか??
 いろいろ調べてると、Jesperさんのページで STK200ドングルで書き込みできるソフトを公開しているようなので早速ダウンロード。
 で、実行。 ...ダメです。 この日はあきらめました。


 しかし、JesperさんのページにはJesperさんオリジナルの書き込み回路が。今度はこれを作って試してみましょう。

 で、出来たのがこれ↓。
Jesper式書き込み器  Jesperさんの回路図を元に極限まで手を抜いた回路です。

 PCのパラレルポート用のD-SUB25ピンの端子に線をつけて抵抗5本をつけただけ(実際には4本でよかった)です。

 うまくいったらきれいにしましょう。

 今度は慎重に結線し、 PCに接続!電源投入!書き込みソフト起動!!
 おおお! 認識したぜ!ビルド済みのバイナリをファイルから読み込んで、AVRのフラッシュへ! OK!うまくいった。


 Jesperさん!ありがとう!

 いや、まだだ、喜ぶのはまだ早い。 動作確認をせねば。
 Jesperさんの書き込み器では、実行時にはAVRをPCから切り離す必要があるので、書き込み器を抜いてやる。

 おおおおお! 動いてる!動いてるよ!
AVR実験 AVR実験
(動画でお見せできないのが残念。私のメインマシンは引越し後、梱包は解かれたもののまだ屋根裏にほとんど眠ってる 状態なので、動画編集が出来る環境が無いのだ。カミさんのマシンにそんな環境を構築するのもメンドイし)

久々に感動しました。


 実はJesperさんと同じくらい簡単なAVR書き込み器はこちらにもあって、 元々はこちらを使おうと思っていたんだけど、PC側のソフトがWin2000不可ってことで、 出来合いのキットに逃げてしまいました。

 と、思ってたら、Win2000用のベータ版が出てますね。最初からこっちにしておけばよかったかも。  キットの方が何故動かないかはまだ謎。AVRもスペアでもう一つ買ったけど、最初のも無事だった みたいだし。

 去年、ほとんどシャレで受けた情報処理試験の『エンベデッドシステム』、サクっと合格してしまいました(ちょっと自慢)が、しょせんそんなもんです。  この手の資格が実務にほとんど役に立たない事を証明してしまいました。


 会社で「ワンチップマイコン買ったよ」というような話をしたら、「何に使うん?」と問われた。
 愚問です。時折りしもアトム生誕の年だと言うのに、君たちは日本男児として、男のロマンを追い求めようとは、思わないのか!?
 いやいや、実用的な話としても、『花の自動水やり機』だの『トイレの換気扇のセンサー制御』だのいろいろあるだろうに。
 子供の夏休みの工作でライバルに差をつけるチャンスだとか。

BLESS ME ALL THE TIME