ちょっと突っ込んでみる?

ここ数年、知り合いのCPUを使ったプロジェクトが始まると東にPICがあれば、行って叩き、西にAVRでバグが出たと聞けば、行って冷やかしを続けてきたのだけど、やっと、自前のオリジナルプロジェクトの発振、いや、発信となりました。

とりあえず、なんか作ってみるかなら、 前のページを見ればOK。これに興味をもって、色々やってみようと思った人のためのネタを以下にいくつかあげてみる。

プログラムの開発に必要なもの

今回使ったCPU「ATTiny2313」には、8BitのRISCアーキテクチャのCPUコアに、2kByteのプログラムメモリ、128ByteのEEPROM、128ByteのRAMを中心に、8Bitと16BitのTimer/Coounterがそれぞれひとつづつ、アナログコンパレーターが一つ、USARTが1つ、IOユニットが18ピン分を20pinのDIPパッケージに収めている。必要十分。趣味の工作には最適。
このCPUのプログラムの開発環境は、CPUのメーカーATMEL社が無償で提供するIDE環境で標準で添付されているアセンブラとシミュレーターが使える。

さらに、この環境の中で、GNUプロジェクトのwinAVRというWindows上で走るクロスコンパイラが使える。

手作りAVRライター
手作りAVRライター

この環境で書いたプログラムは、Windows上でコンパイルし、AVR Studio 4内蔵のシミュレーターで動作をみることができる。
こうして書いたプログラムをAVRのチップに書き込むには別途ハードウエアが必要。
「AVR ライター」や「AVR 書き込み」で検索するとたくさん出てくるので適当なものを選んでナニする。僕は、

からCOMポート制御ISPアダプタの製作を選んだ。このハードでチップに書き込むソフトウエアもこのページの最後のほうに紹介されている Win32版ライタ制御ツール for Windows9X/Me/NT/2k/XP を利用させてもらっている。
このハードはそのまま、ストロベリー・リナックスキット化されている。蛇の目基板で組み立ててケースに入れて、コネクタつけてとか考えると、ケースこそないけど、きれいなガラス基板の上に全部乗って、この値段、自作するメリットはほとんどない。まだライターを持ってないのなら迷わずこれをゲットがお勧め。
いやさ、開発やってるとね、プログラムが悪いのか、組み立てたハードが悪いのか、ライターに問題があるのか、もー、ドーヨ、になるのよ。という意味では、キットでアンパイを一つキープって、でかいメリットの一つ。わりーコタ言わない。とりあえず、買っとけ。
この書き込み器なら、たいていのAVRに書き込み事ができる。

プログラムの開発手順

開発環境
大公開!これが私の開発環境だっ!ってえばるほどのものか!

AVR Studioでコンパイルするとソースのあるカレントディレクトリ直下に、「default」というディレクトリができ、この中に各種アウトプットファイルが生成される。
別途「dos窓」を起動しカレントディレクトリをそこにしておき、Buildでまとめてコンパイルしたらdos窓を呼び出し、コマンドラインから、上記Win32版ライタ制御ツール、「avrsp」を起動する。プログラム本体は、Windowsで適当なパスの通ったディレクトリに入れておく。「ひと手間」無くは無いけど、手間まで行かない。「テ」ぐらいで済む。
写真は、本プロジェクトのソフト開発の模様。とりあえず、PWMで出力が出るかどうかはオシロスコープで見られるので、とりあえず、スキャナがどう動作するのかを見たくて、ブレッドボードにチップと、デコーダーのチップを乗せて試しているところ。電源なんか乾電池、しかも3本。ISPケーブルにつけてあるスイッチをRunにきりかえればAVRが走るし、問題があれば、プチっとWriteに切り替えて、ソフトの修正/Build、dos窓を呼び出して書き込み。あー、だせー!!とか後ろ指刺されないように、誰も見てないかどうか、こそこそしたりはするけど、1行書き換えてためしに走らせてといった開発もまったく苦ではない。

画面の下のほうに見えるDサブ9pinのコネクタは、シリアル。このプロジェクト当初はシリアルを使わない仕様だったので、適当にシリアルに文字列を出せるようにしておき、トランジスタ1発でナンチャッテシリアルアウトをつけておきここにデバッグプリントを出していた。関数一つずつの動作の確認、基本的にはWidnwosのシミュレーターでできるが、キー入力が絡んだり、割り込みとかちょっと面倒なときはデバッグするのが楽になるかもしれない。Windows側は、HyperTerminalというデフォルトで付いてる通信ソフトがそのまま使え、19200bpsでパソコン側にデバッグプリントを送りつけている。

AVRでなにができるの?

たとえば、MIDIをCVゲートにコンバートするメカ。
本プロジェクトを元に、色々MIDI関係のプログラムを書いてみようとか、タクトスイッチは要らない、MIDIだけで十分という向きは、RJBさんのプロジェクトの追試が一番楽かもしれない。
氏のプロジェクトのハードウエアには、アルゴ算法堂さんのページ、「電子工作」->「RJBさん版のPIC-MIDICV」で互換のソフトウエアが公開さており、さらに、こちらの「PICでMIDICV」では、RJBさんのハードウエアに若干の手直しを入れた版でさまざまな機能拡張をされている。特に、開発時にお手伝いさせていただいたて、ご褒美に、MIDI-CHの設定スイッチのモードには、「takeda-mode」をつけていただいた。(わ-い!)
アルゴ算法堂の「PICでMIDICV」で紹介されているtakedaの作ったMIDI chの設定スイッチはこちら。

また、アルゴ算法堂さんでは回路図が公開されていないので、自分の勉強用に先のRJBさんのプロジェクトの回路図をトレースしたものに、各種変更点も追加した回路図ほか、まとめたものが以下。氏のページでは単電源版にも言及されているが僕の版は両電源版。

AVRでのこの手のプロジェクトといえば、Chuckさんのプロジェクトもお手伝いさせていただいた。

さらに、これとは別で、自前で、RJBさんのPICによるプロジェクトに対抗してというか、相互にノウハウを交換する狙いでAVR版をやってみようかと、細々とやっていたプロジェクトの一部が以下。現在は、pARMのMIDIコントローラーの一部に組み込まれてしまっている。 今回プロジェクトでは、CPUへのプログラムはすでに書かれている前提でのプロジェクトとしたのでISP(インサーキットプログラム)コネクタはつけなかったが、こちらにはつけてある。アウトポートも少し取り出せるようにしたし、精度も出せるようにクリスタルを接続できるようにしてある。(このコネクタの配置間違ってるのが判明。一時公開停止します。)
ソフトは、Chuckさんがかかれたものがそのまま使えるけど、あえて、同じハードで走る違うソフトを、RJBさんが、 pARM type-Rファームウェアとして書かれたものをATTiny2313用に書き換えました。これで、プログラム領域半分。ソフトウエアLFOや、ソフトウエアポルタメントなど、まだ、ソフトを追加で掛ける余地があります。