最終更新:2010-03-19 (金) 08:32:26 (5448d)
AVRの動作設定をする領域。プログラムとは別に設定する。
Low
ビット | 名前 | 意味 | 説明 |
7 | CKDIV8 | Divide clock by 8 | CPUクロックの分周?比を設定(1/8にするかどうか) |
6 | CKOUT | Clock output | CLK0からCPUクロックを出力するかの設定 |
5 | SUT1 | Select Start-up time | マイコンに電源を入れてから動作するまでの準備期間 |
4 | SUT0 |
3 | CKSEL3 | Clock source Select | CPUクロックの元となるクロックの入力方法を設定 |
2 | CKSEL2 |
1 | CKSEL1 |
0 | CKSEL0 |
High
ビット | 名前 | 意味 | 説明 |
7 | DWEN | debugWIRE Enabled | debugWIRE?を有効にするかどうか |
6 | EESAVE | EEPROM Save | EEPROMの内容をを保持するかどうか |
5 | SPIEN | SPI Enabled | EEPROM、フラッシュROMのSPI書き込み機能の有効・無効を切り替える(Parallel時のみ) |
4 | WDTON | WDT On | ウォッチドッグタイマを有効にするかどうか |
3 | BODLEVEL2 | Brownout Detector Level | 低電圧リセット検出回路の検出レベルと遅延時間を設定 |
2 | BODLEVEL1 |
1 | BODLEVEL0 |
0 | RSTDISBL | Reset Disabled | RESETピンをI/Oピンとして使うための設定 |
Ext
ビット | 名前 | 意味 | 説明 |
0 | SPMEN | SPM? Enabled | SPM?命令を有効にするかどうか |
その他
名前 | 意味 | 説明 |
BODEN | Brownout Detector Enabled | 低電圧リセット検出回路の有効・無効 |
CKOPT | Clock Option | 発振回路 1:小振幅, 0:フルスイング |
BOOTSZ | Boot Flash Size | ブートブロックサイズを定めるビット |
BOOTRST | Boot Reset | RESET時に0番地からスタートするか、ブートブロックの先頭からスタートするかを決めるビット |
SELFPRGEN | | |
OCDEN | On Chip Debug Enabled | |
JTAGEN | JTAG Enabled | |
例
Low: 11001111 (0xCF)
||||++++-- CKSEL[3:0] クロック選択
||++-- SUT[1:0] 起動時間
|+-- CKOUT (0:PB0にクロックを出力)
+-- CKDIV8 クロック分周初期値 (1:1/1, 0:1/8)
High:11011111 (0xDF)
|||||+++-- BODLEVEL[2:0] (111:無, 110:1.8V, 101:2.7V, 100:4.3V)
||||+-- EESAVE (消去でEEPROMを 1:消去, 0:保持)
|||+-- WDTON (1:WDT通常動作, 0:WDT常時ON)
||+-- SPIEN (1:ISP禁止, 0:ISP許可) ※Parallel時のみ
|+-- DWEN (On-Chipデバッグ 1:無効, 0:有効)
+-- RSTDISBL (RESETピン 1:有効, 0:無効(PC6))
メモ
- これはどこのサイトでも基本事項のように扱っているので逆に書かれている例が少なく思ったのですが、ヒューズビットの設定の中にAVRを動かすクロックの発生源の設定があります。
- 出荷時は内部の発振器を使っているのでそのまま読み書きできるのですが、この設定を変えて外部に水晶を使うなどにした次の瞬間から、その設定したものを使わないと読み書きできなくなります。HIDaspは12MHzの水晶を使っていて、最初ここで急に読み書きができなくなったのでびっくりしました。対処法としては、各種水晶やセラミック発振子を手元に持っておく、といった感じでしょうか。
>avrspx.exe -fl11101111 (Lower byte。ここでクロックの設定が変わる)
>avrspx.exe -fh11011011 (Higher byte)
計算
メモ
ISPプログラマの使い方
参考