2012年3月12日月曜日

Japaninoのブートローダー、fuseの復旧

引き続きAVRをいじっています。
本業が忙しいのでほそぼそですが。

現在SDカードをSPIモードでアクセスを試みています。
ディレクトリを読めたのでまずはOK。この件についてはそのうち。

ブレッドボード上にArduinoもどきを作っていますが、
リファレンス機として、大人の科学付録のJapaninoもたまに使っています。
が、てきとーにfuseビットを書き換えてしまい、
sketchを書き込めなくなってしまいました。
復旧方法を調べたのですが、まとまっていなかったので、
記録しておきます。

1. 機材

JTAGICE MKIIを使ってISP書き込みを行いました。
普通にISPライターを使えば良いのですが、たまたま手元にあったので、
オーバースペックですがISPライターがわりに使いました。

接続は、
jtagiceの凸となっているコネクタを、

1 3 5 7 9
2 4 6 8 10


というピン配列とすると、
AVR側(DIPの168のピン番号)とは


1: SCK(pin19 = D13)
2: GND
3: MISO(pin18 = D12)
4: Vcc
6: RESET(pin1)
9: MOSI(pin17 = D11)
※ほかのピンは放置


と接続します。
Japaninoの場合は、黒いピンソケットのD11-13, RESET, +5V, GNDを使いました。
別にICSPソケットは付けなくてもよさそうです。
リード線で結べばOK。



jtagiceをパソコンと接続し、japaninoをパソコンのUSBポートに接続したら
準備OK。
パソコン側ではAVR studioで書き込みを行います。


2. 情報のありか


さて、問題はどのブートローダーを書き込むのか、fuseビット等はどうするのか、
という情報ですが、
ウェブを探してもどうにも見つかりませんでした。

結局、大人の科学のサポートページからダウンロードできる、
開発環境にヒントがありました。

arduino-0018/hardware/arduino/boards.txt

というファイルがありました。中には、


japanino.name=Gakken Japanino(学研 大人の科学 ジャパニーノ)

japanino.upload.protocol=stk500
japanino.upload.maximum_size=14336
japanino.upload.speed=19200

japanino.bootloader.low_fuses=0xe2
japanino.bootloader.high_fuses=0xdd
japanino.bootloader.extended_fuses=0x00
japanino.bootloader.path=lilypad
japanino.bootloader.file=LilyPadBOOT_168.hex
japanino.bootloader.unlock_bits=0x3F
japanino.bootloader.lock_bits=0x0F

japanino.build.mcu=atmega168
japanino.build.f_cpu=8000000L
japanino.build.core=arduino


てなことが書かれていました。
つまり、ブートローダーはLilypad用のを使い、
fuseビットはL:e2, H:dd, Ex:00で、ロックビットは0fにしろ、ってことですね。

ブートローダーはサブディレクトリの

bootloaders/lilypad/LilyPadBOOT_168.hex

がそれっぽいですね。
ブートローダー書き込み、fuseビット書き込み、ロックビット書き込み、
という順番で作業を行いました。
できたっぽいです。
なお、fuseビットのextendedは読み込み直すとf8になり、
ロックビットはcfに見えますが、未使用のビットが1に見えるらしいので
正常に書き込めています。

で、動作確認はsketchのサンプルから適当に選び、
シリアルで書き込みます。
jtagiceは外さないとダメっぽいです。
サンプルはfadeあたりがわかりやすいですかね。



GNDとD9をLEDと抵抗(2-300Ωくらい?)で直列に結べば、ぼあーっとLEDが点滅する。
ワニ口クリップが意外と便利。


3. 外部クロックに対応


デフォルトのfuseビットには問題があり、
内蔵クロックで動作するらしいです。
せっかくjapaninoには水晶が乗っているので
これを使用することにします。

単にfuseビットのloをe2からe6にするだけみたいです。
一応動作はしましたが、
外部発振器が使われているかどうかは見た目ではわかりませんね。

0 件のコメント:

コメントを投稿