Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

Arduino NanoをAVRライタにしてATmega328P単独でLチカしてみる。(その3)

Arduino NanoをAVRライタにしてATmega328P単独でLチカしてみる。(その2)」の続き。

Fuse bytes(Fuse Bits)編だ。

前回、どうもクロックがちゃんと設定できなかったので少し調べてみた。
それ、先にやれよ。

PIC使いが一番理解できてなかったのは、Fuse bytesというものをプログラムとは別のプロセスで書き込んでやる必要がある点だ。
PICなら、Configuration Bitsとしてプログラム中に書いてあって、プログラム時に同時に書き込み設定される。
これがわかってなかった。
字面で読んでいても、受け付けないというか、それ関連の記述の意味が頭に入って来なかった。
クロックの設定なんてマイコンの言わば魂だろ、それをプログラムと同時に扱えないなんて馬鹿すぎる。
ってな感じで、思考が硬直化している。

参考にしたのはここ。
http://www.martyncurrey.com/arduino-atmega-328p-fuse-settings/
「the easiest way to set the fuses was to burn a boot loader」と書いてある。
「ヒューズバイトをセットする一番簡単な方法はブートローダを書き込むことです。」
要するに、ヒューズバイトを書き換えるためだけに、一度ブートローダを書き込む必要がありますよ。
それが一番簡単な方法ですよ。
ということだが、最初何を言ってるのか全然わからなかったし、PICユーザーにしてみればそれでも十分すぎるくらい面倒だ。

具体的に書く。
 仮にATmega328Pを外付けの16MHzで使うとする。
 Arduino UNOやNanoはATmega328Pをまさにその設定で使っている。
 そういう、設定が同じものが見つかればそのブートローダを使う。
 例えば、とりあえずNano用のブートローダをATmega328Pに書き込む。
 その後で、改めてLチカのプログラムを書き込む。
 この時にはヒューズバイトは変更されない。
 なので、さっきNanoの設定と同じにしたヒューズバイトのままになる。
実際には以下のような手順だ。
下準備は「Arduino NanoをAVRライタにしてATmega328P単独でLチカしてみる。(その2)」で完了しているものとする。
1.Nanoのブートローダを書き込む。

 これで、Nanoと同じヒューズバイトになるので、クロックも外付け16MHzになる。
2.改めてプログラムを書き込む。

 この時はヒューズバイトは書き込まれない。

最後に残った疑問は、じゃ、それ以外の設定にしたいときはどうすんのかってことだ。
それは、自分で設定を用意すればいいらしい。
Arduino IDEのあるフォルダの
hardware¥arduino¥avr
の中にboards.txtがあって、ここに設定が書かれており、これに追加することで好みの設定にできるようだ。
ただ、MiniCoreをインストールしてあれば、いくつかの設定はすでに用意されている。

このエントリーをはてなブックマークに追加

Posted under: PIC以外, 電子工作その他


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.