体重と今日食べたもの

k1segawa.exblog.jp

ダイエット

ブログトップ

Japanino ArduinoISPで ATtiny13 で PWM (4) - 注意 (8/23)

Japanino を Arduino ISPライタにして、汎用のAVRISPライタと同じにしたが、Pin 1(PB5:RESETピン)に5V(HIGH)を入力して、AVRマイコンの内部fuseビットを(avrdudeが正しく)書き込んでいる。

もし、間違ってfuseビットをあらぬ値に書き換えてしまうと、二度と5Vの電圧レベルでは書き換えられなくなってしまう。このピンに12Vかけると無理やりfuseビットを書き換えられるので、別の種類のライタが必要となる。
だからRESETピンは書き換え時以外は使うな、と言われている。入出力モードも変えない方がいい。つなぐと書き換えられてしまう可能性が残る。

こちらのサイト様に理由が明記されている。
不用意にRSTDISBLヒューズビットを0にしない - ArduinoISPを汎用AVRライタとして使う(2) - しなぷすのハード作製記
RESETピンが効かなくなるfuseビットの話で、その他にも下の方に外部クロック発信器を使うfuseビットを有効にしてしまい、内部発信器だけでは書き換えられなくなったりなどいくつものケースがある。だからfuseビットはケアレスミスも含め、頻繁に書き換えていいものではない。RESETピンもI/Oが足りなくても出来るだけ使わない方がいいようだ。RESETピンはLEDを光らせるほど電流は出せないらしいし。
で電源VCCとGNDで、実質8-3で5ピンしか使えない。

5ピンしか使えなくてもLED8個を制御する方法がこちらのサイト様だ。
ATTINY13で、LEDを8個制御する
LEDにつながっているのはPB0~4まで。
もちろんここでもRESETピンを注意するよう書かれている。書き換え後、マイコンはpower on リセットで自動的にプログラムを実行してしまう。もしプログラムが誤ってRESETピンを入力に使ったら、書込み時の信号とかち合って2回目の書込みはうまく行かないこともありえる。
だから、書き込み器には実現したい回路はつながない様にし、余計な電圧がRESETピンにかからないようにしなくてはならない。
サイト様は外部書込み器で書き込むよう推奨している。

あと、自分のATtiny13がどうも遅いのは9.6MHzで動いてないかららしい。
そういうfuseビットはCKDIV8といって、同サイト様の少し上の方に「6-4-4.フューズビット(フューズバイト)を読み出す」で説明されており、そのためには、ブートローダ書込みでATtiny13に書込めばいいらしい。

arduino1.0.5-r2で、一度LEDを点滅させるスケッチBlinkWithoutDelayを書き込んで遅いことを確認したら、
[ツール][マイコンボード][ATtiny13 (internal 9.6 MHz clock]を確認、
[ツール][シリアルポート][COMn](nはデバイスドライバで確認)を確認、
[ツール][書込み装置][Arduino as ISP]を確認し、
[ツール][ブートローダを書き込む]を実行する。
再度同じスケッチを書き込むと、正しいスピードで点滅する。
ブートローダ書込み時にinternal:内部発信、9.6MHzでfuseビットを書き込むようだ。
一度書き換えればほぼもう書き換えない。

fuseビット書き換えは少し頑張れば回路を組んで出来るらしい。最終手段として覚えておく。
こちらのサイト様で出来る。
ATtiny13系のリセッタ - メモたんく
TADさんのATtiny13リセッタ
特に後のサイト様のAVR書込器というページではWAVファイルで書き込む方法まである。

またfuseビットは実は12Vでなくても、入手性の比較的簡単な9V電池でもいけるらしい。
サイト様は失念してしまったがデータシートから9Vもいけると踏んだようだ。

[PR]
by k1segawa | 2016-08-23 19:12 | arduino, AVR | Comments(0)