AVR用のLibC、avr-libcのサイト(ドキュメント)にはいくつかのサンプルプログラムがあるので、その中のA simple project(LEDをPWMにつないで、ふあーっと明るくする)をEclipseからやってみる。

プログラム

まず、EclipseでFile -> New -> C Project で新規プロジェクトを作る。
プロジェクト名は適当に「sample」とかで、プロジェクトタイプは、「AVR Cross Target Application」->「Empty Project」にする。(2回ほどNext...を押して)MCU Type には、今回手持ちの「ATtiny2313」を選び「Finish」。
次に、ディフォールトではプロジェクトのアクティブターゲットがDebug(デバッグ用、Hexファイルまでは生成されない)になっているので、Project -> Build Configurations -> Set Active -> Release を選んでおく。
最後にProject -> Properties -> AVR -> AVRDudeで、使用するAVRプログラマーケーブルを選んでおく。

プロジェクトができたら、今回のプログラムに必要なファイル、「demo.c」と「iocompat.h」をFile -> New -> Source File (もしくはHeader File)から作っておき、上のA simple projectのページ下にあるリンクからダウンロードして、コピペしておく。

Screenshot

この状態でビルドできるはずなので、Ctrl-B等でビルド。ノーエラーでビルドできるはず。

#ちなみに、この時に、コンソールにはビルド時のメッセージの他に、プログラムのサイズなんかも表示される。こんな感じ、、、
AVR Memory Usage
----------------
Device: attiny2313

Program: 384 bytes (18.8% Full)
(.text + .data + .bootloader)

Data: 3 bytes (2.3% Full)
(.data + .bss + .noinit)

このプログラムは384バイトですね。

ハード側

次にA simple projectのページの回路図を参考に、ハード側をブレッドボード上に用意する。
と言っても、Note:にも書いてあるように、リセット回り、クロックは無くてもいいので、電源(+C4)とLED(+R2)をつなぐだけでOK。

次に、AVRチップにプログラムを流し込むためのAVRプログラマーを用意する。僕の場合にはSpartan3 Starter Kit に付いてきたJTAGケーブルが使えるので、それと、AVR Tiny 2313 を接続する。接続は次の通り、、、
TMS -> RESET (pin1)
TDI -> MOSI (pin17)
TDO -> MISO (pin18)
TCK -> USCK (pin19)
(plus vcc/gnd of course)

注意が必要なのは、このケーブルの回路はPC側でなくコネクタ側から電源を取っているので、電源も結線してブレッドボード側に電源を配給してあげなければ、プログラムできない。

結線と電源の用意ができたなら、Eclipseに戻ってAVR -> Upload Project to Target Device...を選ぶとAVRにプログラムが転送される。
転送が終わると自動的にリセットされて、LEDがふあーっと点いたり消えたりするのが分かるはずです。
bread


#余談ですがR2には、台湾旅行に行ったとき見つけて買ってきた、抵抗各種よりどり3個づつのコレを使った、、、ブレッドボードで回路組むのに便利です。
register