Arduinoを使って色々作っていると、実装するときはAVR単体で良いのでは?という気がしてきまして。

試しにAVRのIC単体を買ってみたので、Arduinoのスケッチを書き込めるようにしました。

 

本来はAVRライターというものを使ってプログラムを書き込むようなのですが、Arduinoを書き込み装置として使ってプログラムを書き込めるようなので、今回はその方法を採用しました。

 

絵にするとこんな感じになります。

 

 

今回は、書き込み装置としてArduino Nano、AVRはATTiny44を使いました。

ざっくりとした手順は下記のようになります。

  1. Arduino Nano を書き込み装置として設定する【初回のみ】
  2. Arduino IDE に使いたいAVRのボードパッケージをインストールする【初回のみ】
  3. AVRの初期化(ブートローダー有無をここで決める)【初回のみ】
  4. スケッチの書き込み

 

参考にさせて頂いた記事はこちらになります。

 

 

1.Arduino Nano を書き込み装置として設定する【初回のみ】

 

ここでは、「スケッチ例」→「ArduinoISP」を開いて、Arduinoに書き込みます。

この段階では特別なことはなく、いつも通り書き込めばOKです。

 

 

2.Arduino IDE に使いたいAVRのボードパッケージをインストールする【初回のみ】

 

下記URLをコピーします。

http://drazzy.com/package_drazzy.com_index.json

 

これを「環境設定」→「追加ボードマネージャーのURL」に貼り付けます。

 

 

 

 

「ツール」→「ボード」→「ボードマネージャー」から、「ATTinyCore」をインストールします。

 

 

これで、書き込む際のボードが色々と追加されました。

 

他のボードを使いたい場合は、こちらから当てはまるものを探してみてください。

 

 

3.AVRの初期化(ブートローダー有無をここで決める)【初回のみ】

 

ここから、ようやくArduinoとAVRを接続していきます。

Arduino Nano と ATTiny44 の接続は、下記のようになります。

 

 

回路図に書くと、こんな感じ。

 

実際に接続したときの写真はこんな感じ。

 

私はこれで書き込めましたが、エラーが出る場合はArduinoのRESETとGND端子の間に10uFのコンデンサを入れると良いそうです。

 

 

接続したら、ようやくAVRの初期化です。

その前に、ブートローダーについて私なりの理解をまとめておきます。

 

ブートローダーは、プログラムを書き込む際に必要な小さなプログラムで、Arduinoボードに搭載されているマイコンには予めブートローダーが書き込まれています。

これから使おうとするAVRにも同様にブートローダーを書き込むことが可能で、これを行うと次からArduinoを経由しなくてもPCから直接AVRにプログラムを書き込むことができます。

 

ただし、ブートローダーもプログラムであるため、マイコンのプログラム容量を消費してしまいます(約0.5kB)。

容量の小さいマイコンでは無視できない容量であるため、AVRにブートローダーを書き込むか否かは状況に応じて判断すれば良いと思います。

AVRにブートローダーを書き込まない場合は、Arduino経由でAVRにプログラムを書き込めば、問題無く動作します。

あくまで、「ブートローダー=書き込むときのみ必要なプログラム」というイメージです。

Arduinoがブートローダーの役割を担ってくれているので、Arduino経由で書き込めばAVRにブートローダーは不要です。

 

絵にするとこんな感じ。

 

 

今回はプログラム容量が4kBしかないATTiny44を使うので、ブートローダー無しで進めます。

 

ブートローダーの有無は、ボードの設定で選ぶことができます。

AVRの型番の後ろに「No bootloader」と「optiboot」の2種類がありますが、「No bootloader」を選択すればブートローダー無しの設定になります。

ATTiny44ブートローダー無しの設定だと、下記のように変更します。

赤色で囲ったところのみ変更し、それ以外は触っていません。

 

 

この状態で、一番下の「ブートローダーを書き込む」を押します。

 

「え、ブートローダー無しじゃなかったの?」と思うかもしれませんが、あくまでこれはAVRの初期化

0.5kBのブートローダーを書き込むわけでは無いのでご安心を。

ヒューズビットの設定(クロック周波数を8MHzにする為、など)が主な目的です。

 

書き込みが完了したことを見届けましょう。

 

 

4.スケッチの書き込み

 

適当にLチカのスケッチなどを開いて、AVRに書き込んでみます。

書き込み方は、「スケッチ」→「書き込み装置を使って書き込む」から行います。

 

 

無事、Lチカが出来ました!

とっても小型でシンプル。

基板に実装することを想定すると、やはりAVR単体を使いこなしたくなります。

 

 

AVRライター用のArduinoは、他のArduinoと混ざらないように管理したいですね。

私はこんな感じで保管することにしました。

 

頻繁に使うようになれば、書き込み装置としてちゃんと基板を作りたいですね。