AVRISP mkIIでArduinoのスケッチを書き込む

Arduino IDEのメニューには[書込装置]→[AVRSIP mkII]という項目があって、「AVR ISP mkIIでスケッチを書き込めるんじゃないのか」と思って調べてみたら本当にありました。
この方法はHEXファイルを使わず、Arduino IDEから「Arduinoなし」で直接AVRマイコンに書き込みます。
またArduino ISPも使わないのでArduino本体は必要ありません。

スポンサーリンク

用意するもの

用意するものは以下のものになります。

  • AVRISP mkII
  • 書き込むマイコン(ATtiny2313など)
  • ブレッドボードなど
  • Arduino IDE 1.0.5
  • hardware.zip
  • libusb-win32

環境を整える

Arduino IDE 1.0.5をダウンロード&インストールします。

hardware.zipは下記のサイトからダウンロードして下さい。

ダウンロードしたhardware.zipを展開して、そのフォルダをスケッチのフォルダに移動します。

libusb-win32も下記のサイトからダウンロードして下さい。

ここではlibusb-win32-devel-filter-1.2.x.x.exeをダウンロードして下さい。

libusb-win32のインストール

libusb-win32-devel-filter-1.2.x.x.exeをインストールして「Filter Wizard」を起動します。
インストール後に出てくるウィンドウの[Launch filter installer wizard]にチェックを入れておけば、それが起動されるのでチェックを入れておきましょう(デフォルトで入っています)
filter installer
このウィンドウで[Install a device filter]にチェックを入れて[Next >]を押します。

Device Selection
Device Selectionというのが出てきますので、[Description]の項の[AVRIPS mkII]を選択して[Install]を押します。

するとインストール成功のダイアログが出ますので、[OK]を押して終了です。

TIPS

参考にしたサイト様ではlibusb-win32-bin-1.2.x.x.zipを使っているのですが、これではAtmel Studio (AVR Sudio)でAVRISP mkIIが使えなくなってしまいます。
上記のZIPファイルに入っているInf WizardでドライバをインストールしてしまうとAVRISP mkIIの元々のドライバを汎用ドライバに入れ替えてしまうのです。
そこでフィルタドライバというものを使って、Atmel Studio付属のドライバと汎用ドライバを共存させます。

共存させるとAtmel StudioとArduino IDEのどちらからも使用可能になります。
安定しておらずあまり使うべきではないようですが、当方Windows 7 x64でちゃんと動作していますので問題ないでしょう。

AVRマイコンにスケッチを書き込む

環境は整ったので、AVRマイコンにArduinoスケッチを書き込んでみましょう。
今回はATtiny2313に書き込んでみます。

まず、AVRISP mkIIとATtiny2313を接続します。
接続は次のように配線します。
AVRISP mkIIのVCCは電源電圧を監視するためのものですので、電圧(5V程度)を供給してやる必要があります。

ATtiny2313 AVRISP mkII
1 RST
10 GND
17 MOSI
18 MISO
19 SCK
20 VCC

ちなみにAVRISP mkIIのピン配置は次のようになっています。
AVRISP mkII PinMapping

また、ATtiny2313とArduinoのピン関係は次のようになっています。
ATtiny2313 to Arduino Pin Mapping

以前作ったAVR汎用書き込み基板で接続してみました。
こういうのを作ってたら書き込みがかなり楽になるのでおすすめです。
AVRISP mkIIとATtiny2313

AVRISP mkIIとマイコンを接続できたらArduino IDEから書き込みます。
まずArduino IDEのメニューの[ツール]→[マイコンボード]から[ATtiny2313 (internal 8MHz clock)]を選択します。
次にArduino IDEのメニューの[ツール]→[書込装置]を開いて、[AVRISP mkII]を選択します。
そしてスケッチをアップロードします。

試しに、Lチカスケッチをアップロードしてみましょう。

void setup() {
  pinMode(0, OUTPUT);
}

void loop() {
  digitalWrite(0, HIGH);
  delay(125);
  digitalWrite(0, LOW);
  delay(125);
}

上手く1秒毎に点滅しているでしょうか。
初期状態のATtiny2313は1MHzで動いているので、delayが125msなのに1秒毎に点滅します。
これでは少し遅いかもしれませんので、8MHzで動作させてみます。
Arduino IDEのメニューの[ツール]→[ブートローダを書き込む]を選択すると、8MHzに動くようになり、プログラムメモリは空になります。
そこで、もう一度次のスケッチをアップロードすることで8MHzで動いていることを確認しましょう。

void setup() {
  pinMode(0, OUTPUT);
}

void loop() {
  digitalWrite(0, HIGH);
  delay(1000);
  digitalWrite(0, LOW);
  delay(1000);
}

AVRISP mkIIを持っているならヒューズビットは簡単に書き換えできますので、この方法を使わなくてもいいかもしれません。
と言っても、簡単にできるので覚えておいてもいいかもしれませんね。

今回の記事は以下のサイト様を参考にさせていただきました。

スポンサーリンク

Leave a Comment