ここ数年、知り合いの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環境で標準で添付されているアセンブラとシミュレーターが使える。
この環境で書いたプログラムは、Windows上でコンパイルし、AVR Studio 4内蔵のシミュレーターで動作をみることができる。
こうして書いたプログラムをAVRのチップに書き込むには別途ハードウエアが必要。
「AVR ライター」や「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でパソコン側にデバッグプリントを送りつけている。
たとえば、MIDIをCVゲートにコンバートするメカ。
本プロジェクトを元に、色々MIDI関係のプログラムを書いてみようとか、タクトスイッチは要らない、MIDIだけで十分という向きは、RJBさんのプロジェクトの追試が一番楽かもしれない。
氏のプロジェクトのハードウエアには、アルゴ算法堂さんのページ、「電子工作」->「RJBさん版のPIC-MIDICV」で互換のソフトウエアが公開さており、さらに、こちらの「PICでMIDICV」では、RJBさんのハードウエアに若干の手直しを入れた版でさまざまな機能拡張をされている。特に、開発時にお手伝いさせていただいたて、ご褒美に、MIDI-CHの設定スイッチのモードには、「takeda-mode」をつけていただいた。(わ-い!)
アルゴ算法堂の「PICでMIDICV」で紹介されているtakedaの作ったMIDI chの設定スイッチはこちら。
AVRでのこの手のプロジェクトといえば、Chuckさんのプロジェクトもお手伝いさせていただいた。
さらに、これとは別で、自前で、RJBさんのPICによるプロジェクトに対抗してというか、相互にノウハウを交換する狙いでAVR版をやってみようかと、細々とやっていたプロジェクトの一部が以下。現在は、pARMのMIDIコントローラーの一部に組み込まれてしまっている。 今回プロジェクトでは、CPUへのプログラムはすでに書かれている前提でのプロジェクトとしたのでISP(インサーキットプログラム)コネクタはつけなかったが、こちらにはつけてある。アウトポートも少し取り出せるようにしたし、精度も出せるようにクリスタルを接続できるようにしてある。(このコネクタの配置間違ってるのが判明。一時公開停止します。)