ロボットランサー&合同ロボコンのプログラム指導でてんやわんやしている今日この頃,たまには更新しようかなと思った所存です.
ロボットランサー,震災の影響で延期になりました.なんていうか,既にホテルや学割もキャンセルしたのに未だに実感ないです.寝て起きたらランサーやっぱやるよーみたいな.
では本題
今日はfusebitの話題です.題して「よくわからんfusebit」.よくわからないけどわかりたい,というパパの願望丸出しのタイトルです.
とりあえず有名な一冊,「AVRマイコン活用ブック」を片手にmega168のfusebitをいじってみました.
というよりは,いじる必要にせまられました.部室のmega88さんが足りないので168さんに頼ることになりました.
部室でのできごと
mega88が足りないことに気づく
↓
mega168を後輩に使うよう指導
↓
焼けないとか言われる
↓
友達に焼き方を教わる
↓
後輩に教える
↓
PWMがおかしいと言われる
↓
調べる 調べる 調べる
↓
fuse bitを活用ブック片手にいじる
↓
うごく
↓
やったー
みたいな感じでしょうか.
閑話休題
今回PWMがちゃんと動かなかったのは,マイコンのクロックの設定がちゃんとできていなかったことです.多分.で,このマイコンの外部クロック設定をする方法を書きます.理解してません.メモです.他のマイコン/環境でやってどうなっても知りません.
mega168さんの場合,外部クロックを設定するにはFuseLowByteだけをいじってやればいいようです.(他のマイコンどーなんだろ?)
LowByte
ビット | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
名前 | CKDIV8 | CKOUT | SUT1 | SUT0 | CKSEL3 | CKSEL2 | CKSEL1 | CKSEL0 |
初期値 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
となっています.では,それぞれのbitの説明を...
・7bit「CKDIV8」
CPUクロックの分周比を設定します.
設定値 | 機能 |
0(初期値) | CPUクロックを入力クロックの1/8倍する |
1 | CPUクロックを入力クロックそのままにする |
部室で使ってる時は「1」で設定しました.
・6bit「CKOUT」
CPUクロックの出力する/しないを設定します.
設定値 | 機能 |
0 | CPUクロックをCLK0端子から出力する |
1(初期値) | CPUクロックをCLK0端子から出力しない |
よく分かりませんけど,とりあえあず「1」で設定.
・5bit 4bit「SUT」
活用ブックの要約:マイコンが動き始めるまでの時間を設定するよー.詳しくはデータシートみてねー
…分かんない.マジ分かんない.とりあえず初期値「10」に.誰か教えてくださいです.
・3bit 2bit 1bit 0bit「CKSEL3~0」
CPUクロックの元のクロックの週力方法の設定.
設定値 | 機能 |
0000 | XTAL1端子から外部クロックを入力 |
0010(初期値) | 内部の周期(8MHz)の発振を使用. |
0011 | 128kHz内部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 件のコメント:
コメントを投稿