AVRのFUSEを初期化する(1)

AVRで唯一鬼門なのがFUSEではないかと思う.普通は変更しなくていいんだが,ちょっと色気を出してクロックを変えてみようなんてやっていると痛い目にあって,使えなくなってしまう.そして,眠っているAVRが世界中にたくさんあることだろう.
これは別にチップが壊れたわけではなくて,ISPモードからアクセスできないだけなのだが,
修復するには12Vの高電圧を掛けてパラレルプログラミングしなくてはいけない.
データシートを見るとちゃんと手続きは書いてある.
ただそのためにプログラマボードを作るとか,わざわざ高いSTK500を買うのは面倒だし,
数百円のチップのためにやるのは馬鹿馬鹿しいが,500円のチップが2個逝ってしまってもったいない.
ネットで調べるといくつか例があったので,それを参考にしてブレッドボードでやってみることにした.
Arduinoのコードもあり,データシートに忠実にやっているようなので,これを使わせてもらうことにする.この作者はシールドを販売しているようである.
自分の使いたいチップはmega16mega644pという40ピンで,上のコードはmega168用なので,ピンの対応がちょっと違う.mega16とmega644pについてはピンは全く同じでFUSEだけ違うので,そこはコードで対応すればよい.

(参考)FUSEを計算してくれるサイトhttp://www.engbedded.com/fusecalc

signal name ATmega168 ATmega16,644p
RDY/BSY PD1 PD1
OE PD2 PD2
WR PD3 PD3
BS1 PD4 PD4
XA0 PD5 PD5
XA1 PD6 PD6
PAGEL PD7 PD7
BS2 PC2 PA0
DATA PC[1:0]:PB[5:0] PB[7:0]

あとはArduinoと接続してやればいいのだが,
12Vの電源をどうするかはいろいろ選択肢がある.これも未経験なので秋月で必要なものを揃えた.
(1)単純に12Vと5VのACアダプタを使う.(既にある)
(2)12VのACアダプタを使い,レギュレータ78L05で5Vを作る.(4個100円)
(3)5VのACアダプタを使い,RS232C用のADM3202ANで12Vを作る.(2個200円)
(4)5VのACアダプタを使い,MAX662で12Vを作る.(DIP 400円)
今日はとりあえずここまで.

さて,電源を検証してみた.
(2)は当然ながらちゃんと5V出ていて問題なし.しいて言うと間違って12VをVCCに入れたりすると危険なので避けた方がいいような.
(3)5V入力で20Vppになってあれ?と思って冷静にデータシートを見ると,単にVCC電圧をチャージして2倍にしてるだけとわかる.正確に12Vが欲しかったら3V与える必要がある.RS232はそんな厳密な規格じゃないみたいなので,普通はそれでいいのだろうか.RESETに与える12Vはこれでいいのかちょっと不安.
(4)後発のためかこれは問題なく12V出ている.ちょっと高いが安心.
回路図書くのは面倒だし,買うとデータシート付いてるので略.
検証終了ということで(4)で行く.

広告
カテゴリー: Arduino, AVR

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー
2010年3月
« 2月   4月 »
1234567
891011121314
15161718192021
22232425262728
293031  
%d人のブロガーが「いいね」をつけました。