コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

AVR初心者にとって取っつきにくいのがヒューズビットの設定。
チップ起動時の設定を焼き込むものなのだけれども、この設定をミスすると一般的な USBライタで読み書きできなくなったりしてしまう。まあ、設定ビット自体はPICにもあるし、普段はプロジェクトで隠蔽されているけれどもPSoCにもあるので概念としては難しくないのだけれども、うっかり変な値を書いて書き込みできなくなるというのが難しいところ。
書き込みできなくなるといっても簡素な手順であるシリアルでの書き込みができなくなるだけで、12Vの印可が必要になる高電圧書き込みだと書いたり消したりすることができる。
高電圧書き込みできるライターってのはちょいと大きかったり古かったりするので玄人さんでないとなかなか所持していないものだったりもする(偏見)。
追記:Dragonってそんなに大きくないのね、AVRスターターと混同してた

どうする、自分でそのライターを作ってみるか?データシートに手順は書いてあるからできなくもない。

DSC00711
考えを巡らせているうちに、ユニバーサルプログラマを持っているのを思い出した。ROMとかフラッシュとかを読み書きできるちょいと便利な機械。昔はドライバーに使っているUSBフレームワークがバージョン古くて、同じフレームワークを利用している他のアプリと喧嘩しまくり(そして案外使っているアプリがおおい)で不満たらたらだったけれども、最新版はそのへんが解消されていた。今なら9800円とかだしお買い得かも。
で、このプログラマだとPICやAVRの主要なチップを読み書きすることもできるのですな。全種類じゃないけれども。
なので、こいつを使ってヒューズビットやロックビットを間違えた AVR を全消去してしまえば万事解決なのでした。
このユニバーサルプログラマ、ソフトウェアの書き込み用に使えるかというと使えるのだけれども、普通にAVRライタを使った方が良いと思う。

で、このユニバーサルプログラマで対応しておらず、過去にヒューズ設定を間違えた AVR がまだほかにあるのです。
DSC00710
ATTiny85、8ピンの奴はなぜか対応していなかった。
通常 AVR の高電圧印可書き込みはパラレル方式なのだけれども、この8ピンのシリーズは足が足りないので高電圧印可シリアル書き込みという奇妙なモードを持っている。
データシートを見てみると 12V を印可しながらシリアルで手順を踏めば良いだけとわかる。んじゃ、ちょっと手作業でヒューズ消し作業をやってみますか。

DSC00706
ちょっと変態チックにもなかを使ってやってみよう。適当な定値を流し込むだけなのだからわざわざマイコンのファームを書く必要もないだろう、というお話。
ブレッドボードの端っこに付いているモジュールはチャージポンプで 5V→12V の昇圧をおこなう DCDCコンバータ。

write_fuse1
流し込むシリアルデータとクロックを MIDI データとしてシーケンサで組み上げる。これがプログラム代わりww
これを演奏すると、もなかのピンから期待通りの波形が出てきて AVR のヒューズ書き込みができるというわけ。
理論上の話で、そんなとろとろ送って大丈夫なのかという疑問もあるだろうがこういうのは試してみるに限る。実際、成功したし。

DSC00707
書き込んだ後、低電圧シリアルライタで問題なくなっていることを確認。
無事ヒューズをリセットできたのでした。

Download: attiny85_fuse.zip
今回使った MIDI データを FLStudio のプロジェクトファイル形式で置いておく。誰得風味。

Leave a Reply