しくじると動かなくなるし(^q^;;;;
fusecalc(http://www.engbedded.com/fusecalc)を使ったが
よくわからないパラメーターが多くて悩ましい
最初、何の気なしに「Ext.Clock」を指定していたが、これは
外部クリスタルではなく外部クロック、つまり外部でクロックを生成して入力しないといけない
危ないところだった(^q^;
その他にも「Low-Freq」とか「Ext. Crystal OSC: ...」とかどれを選べばいいのかいろいろ調べた
結局、16MHzの外部クリスタルを使うには「Ext. Full-swing Crystal」というのがよさそうなので
これを指定することにした
Low:0xF7 High:0xD9 Extend:0xFFプログラマーにはavrdudeとavrdude-GUI(千秋ゼミ版)を使っているのでこのまま書き込んだが
赤線で囲んだところがFuseの設定
avrdude-GUIのFuseの設定はhFuseとlFuseの並びが逆(?)であった(^q^;
まちがえて
Low:0xD9 High:0xF7 Extend:0xFFという設定で書き込んでしまった(^q^;;;;
この設定だと「Ext. Crystal Osc.: Frequency 0.4-0.9MHz」になるようで(上記のfusecalcで変換)
動かなくなってしまった(@@;
0.4-0.9MHzのクリスタルかセラロックを使えば復活できるかな?
少し考えてFuseのLowとHigh並びが逆なのに気が付いて別のATMega328Pに書き込みなおしたらちゃんと動いてくれた(^q^/
FuseにCKOUTというbitがあってここを「0」に設定するとCLK0(ATMega328Pだと14PIN)からクロックを出力できるようなので
hFuse: D9hに設定してCLK0の出力をオシロで見てみた
lFuse: B7h
eFuse: 07h
きっちり16MHz出ている(^q^/
気を取り直して9V電池+78L05で5Vの電源でLチカさせてみた
電池をかなりヘタっているものに交換したが
9V電池: 4.50V(LED点灯時)~4.86V(LED消灯時)というダメダメ状態でもLEDはちゃんと点滅している
5V出力: 3.11V~3.48V
あとはI2C LCDのレベルシフトの実験をして終わりかなと思ったが・・・
出力波形を矩形波は0V(GND)~VCCではなくて0V~VCC/2(仮想GND)~VCCにした方がいいんではと迷い中
インパルス関数やステップ関数は0V(GND)~VCCの方がいいのかな
う~ん
0 件のコメント:
コメントを投稿