2011年3月18日金曜日

よくわからんfusebit

お久しぶりです.マジお久しぶりです.パパです.
ロボットランサー&合同ロボコンのプログラム指導でてんやわんやしている今日この頃,たまには更新しようかなと思った所存です.
ロボットランサー,震災の影響で延期になりました.なんていうか,既にホテルや学割もキャンセルしたのに未だに実感ないです.寝て起きたらランサーやっぱやるよーみたいな.

では本題

今日はfusebitの話題です.題して「よくわからんfusebit」.よくわからないけどわかりたい,というパパの願望丸出しのタイトルです.

とりあえず有名な一冊,「AVRマイコン活用ブック」を片手にmega168のfusebitをいじってみました.
というよりは,いじる必要にせまられました.部室のmega88さんが足りないので168さんに頼ることになりました.

部室でのできごと
mega88が足りないことに気づく

mega168を後輩に使うよう指導

焼けないとか言われる

友達に焼き方を教わる

後輩に教える

PWMがおかしいと言われる

調べる 調べる 調べる

fuse bitを活用ブック片手にいじる

うごく

やったー

みたいな感じでしょうか.

閑話休題

今回PWMがちゃんと動かなかったのは,マイコンのクロックの設定がちゃんとできていなかったことです.多分.で,このマイコンの外部クロック設定をする方法を書きます.理解してません.メモです.他のマイコン/環境でやってどうなっても知りません.
mega168さんの場合,外部クロックを設定するにはFuseLowByteだけをいじってやればいいようです.(他のマイコンどーなんだろ?)
LowByte

ビット76543210
名前CKDIV8CKOUTSUT1SUT0CKSEL3CKSEL2CKSEL1CKSEL0
初期値01100010

となっています.では,それぞれのbitの説明を...
・7bit「CKDIV8」
CPUクロックの分周比を設定します.

設定値機能
0(初期値)CPUクロックを入力クロックの1/8倍する
1CPUクロックを入力クロックそのままにする

部室で使ってる時は「1」で設定しました.
・6bit「CKOUT」
CPUクロックの出力する/しないを設定します.

設定値機能
0CPUクロックをCLK0端子から出力する
1(初期値)CPUクロックをCLK0端子から出力しない

よく分かりませんけど,とりあえあず「1」で設定.
・5bit 4bit「SUT」
活用ブックの要約:マイコンが動き始めるまでの時間を設定するよー.詳しくはデータシートみてねー
分かんない.マジ分かんない.とりあえず初期値「10」に.誰か教えてくださいです.

・3bit 2bit 1bit 0bit「CKSEL3~0」
CPUクロックの元のクロックの週力方法の設定.

設定値機能
0000XTAL1端子から外部クロックを入力
0010(初期値)内部の周期(8MHz)の発振を使用.
0011128kHz内部RC発振(よくわからん)
0110~0111フルスイングクリスタル発振子.XTAL1とXTAL2の2ピンから発振を入力.011x:0.4~20MHz.部室では0110でも0111でも成功した.
1000 ~1111ローパワークリスタル発振子.XTAL1とXTAL2の2ピンから発振を入力101x:0.9~3.0MHz,110x:3.0~8.0MHz,111x:8.0~16.0MHz
結論.よくわからんいや,まじよくわからんもっと勉強しなければと思う今日この頃.これからもがんばります. でわでわ

0 件のコメント:

コメントを投稿