ADC 9 ADC 8 ADC 7 ADC 6 ADC 5 ADC 4 ADC 3
28. メモリ プログラミング
28.1. プログラム メモリとデータ メモリ用施錠ビット
ATmega48A/48PAは2つ、ATmega88A/88PA/168A/168PA/328/328Pは6つの施錠ビットを提供します。これらは非プログラム(1)のまま か表28-2.で一覧される付加機能を得るためにプログラム(0)することができます。この施錠ビットはチップ消去指令でのみ1に消去すること ができます。
ATmega48A/48PAは独立したブート ローダ領域を持たず、SELFPRGENヒューズがプログラム(0)されると、SPM命令がフラッシュ メモリ全体に対 して許可され、さもなければSPM命令が禁止されます。
表28-1. 施錠ビット バイトの内容 ビット番号 名称
6 5 4
-BLB12 BLB11
意味
ブート ローダ領域に対する保護用ブート施錠ビット 応用領域に対する保護用ブート施錠ビット 3
BLB02
既定値 (注1)
1 (非プログラム) 1 (非プログラム) 1 (非プログラム) 1 (非プログラム)
注1: 0はプログラム、1は非プログラムを意味します。
注2: ATmega88A/88PA/168A/168PA/328/328Pのみです。
7
- 1 (非プログラム)
2
BLB01 1 (非プログラム)
フラッシュとEEPROMメモリに対する一般保護用施錠ビット 1
LB2 1 (非プログラム)
0
LB1 1 (非プログラム)
(注2) (注2) (注2) (注2)
表28-2. 施錠ビットの保護種別
LB 種別 LB1
保護種別 1
LB2 1
1 メモリ施錠機能は機能しません。
メモリ施錠ビット
直列、並列、またはデバッグWIRE経由プログラミングに対する保護
0 1
2 フラッシュ、EEPROMの更なるプログラミング(書き込み)が禁止されます。ヒューズ ビットが固定され ます。 (注1)
0 0
3 フラッシュ、EEPROMの更なるプログラミング(書き込み)と照合(読み出し)が禁止されます。ヒューズ ビットとブート施錠ビットが固定されます。 (注1)
1 0 1
1 1
2
LPM, SPM命令が応用領域をアクセスすることに対して制限はありません。
SPM命令は応用領域に書くことを許されません。
フラッシュ メモリの応用プログラム領域に対する保護 BLB01
BLB02 LB0 種別
0 0
3 SPM命令による応用領域への書き込みと、ブート ローダ領域でのLPM命令による応用領域か
らの読み込みが許されません。 (注2) 1
0
4 ブート ローダ領域でのLPM命令による応用領域からの読み込みが許されません。 (注2) 1
0 1
1 1
2
LPM, SPM命令がブート ローダ領域をアクセスすることに対して制限はありません。
SPM命令はブート ローダ領域に書くことを許されません。
フラッシュ メモリのブート ローダ プログラム領域に対する保護 BLB11
BLB12 LB1 種別
0 0
3 SPM命令によるブート ローダ領域への書き込みと、応用領域でのLPM命令によるブート ローダ
領域からの読み込みが許されません。 (注3) 1
0
4 応用領域でのLPM命令によるブート ローダ領域からの読み込みが許されません。 (注3) 注: 0はプログラム、1は非プログラムを意味します。
注1: 施錠ビットを書く前にヒューズ ビットとブート施錠ビットを書いてください。デバッグWIREは全面的に禁止されます。
注2: BLB02=0で、割り込みベクタがブート ローダ領域に配置されていると、応用領域での実行時に割り込みが禁止されます。
注3: BLB12=0で、割り込みベクタが応用領域に配置されていると、ブート ローダ領域での実行時に割り込みが禁止されます。
注4: BLBnnビットによる保護はATmega88A/88PA/168A/168PA/328/328Pのみです。
(訳注) 原書の表28-2.と表28-3.は表28-2.として纏めました。
ATmega48A/48PA/88A/88PA/168A/168PA/328/328P [データシート] 182
28.2. ヒューズ ビット
ATmega48A/48PA/88A/88PA/168A/168PA/328/328Pには3つのヒューズ バイトがあります。表28-4.~9.は全てのヒューズの概略機能と ヒューズ バイト内でどのように配置されるかを示します。ヒューズはプログラムされると、論理0として読まれることに注意してください。
表28-4. ATmega48A/48PA 拡張ヒューズ バイト一覧 ビット
名称 意味 既定値
7~1
- 1 (非プログラム)
0
SELFPRGEN 自己プログラミング機能許可。 1 (非プログラム) 自己プログラミング不許可
表28-5. ATmega88A/88PA/168A/168PA 拡張ヒューズ バイト一覧 ビット
名称 意味 既定値
7~3
- 1 (非プログラム)
2
BOOTSZ1 0 (プログラム)
ブート ローダ容量選択。(表27-7.参照) (注1) 1
BOOTSZ0 0 (プログラム)
0
BOOTRST リセット ベクタ(応用領域またはブート ローダ領域)選択。 1 (非プログラム) 応用領域 注1: BOOTSZ1,0既定値は最大ブート ローダ容量になります。179頁の表27-7.をご覧ください。
表28-6. ATmega328/328P 拡張ヒューズ バイト一覧 ビット
名称 意味 既定値
7~3
- 1 (非プログラム)
2
BODLEVEL2 1 (非プログラム)
低電圧検出(BOD)リセットの制御と検出電圧選択 (注1) 1
BODLEVEL1 1 (非プログラム)
0
BODLEVEL0 1 (非プログラム)
注1: BODLEVELヒューズの符号化については197頁の表29-13.をご覧ください。
表28-7. ATmega48A/48PA/88A/88PA/168A/168PA ヒューズ上位バイト一覧 ビット
名称 意味 既定値
7
RSTDISBL(注1) PC6がI/OピンかまたはRESETピンかを選択します。 1 (非プログラム) PC6はRESETピン 6
DWEN デバッグWIRE機能許可。 1 (非プログラム) デバッグWIRE不許可
5
SPIEN (注2) 直列プログラミング許可。 0 (プログラム) 直列プログラミング許可 4
WDTON (注3) ウォッチドッグ タイマ常時有効。 1 (非プログラム) WDTはWDTCSRで許可 チップ消去からEEPROM内容を保護。
3
EESAVE 1 (非プログラム) EEPROMは未保護
2
BODLEVEL2 1 (非プログラム)
低電圧検出(BOD)リセットの制御と検出電圧選択。 (注4) 1
BODLEVEL1 1 (非プログラム)
0
BODLEVEL0 1 (非プログラム)
注1: RSTDISBLヒューズの記述については51頁の「ポートCの交換機能」をご覧ください。
注2: SPIENヒューズは直列プログラミングでアクセスできません。
注3: 詳細については33頁の「WDTCSR - ウォッチドッグ タイマ制御レジスタ」をご覧ください。
注4: BODLEVELヒューズの符号化については197頁の表29-13.をご覧ください。
表28-8. ATmega328/328P ヒューズ上位バイト一覧 ビット
名称 意味 既定値
7
RSTDISBL(注1) PC6がI/OピンかまたはRESETピンかを選択します。 1 (非プログラム) PC6はRESETピン 6
DWEN デバッグWIRE機能許可。 1 (非プログラム) デバッグWIRE不許可
5
SPIEN (注2) 直列プログラミング許可。 0 (プログラム) 直列プログラミング許可 4
WDTON (注3) ウォッチドッグ タイマ常時有効。 1 (非プログラム) WDTはWDTCSRで許可 チップ消去からEEPROM内容を保護。
3
EESAVE 1 (非プログラム) EEPROMは未保護
2
BOOTSZ1 0 (プログラム)
ブート ローダ容量選択。(表27-7.参照) (注4) 1
BOOTSZ0 0 (プログラム)
0
BOOTRST リセット ベクタ(応用領域またはブート ローダ領域)選択。 1 (非プログラム) 応用領域 注1: RSTDISBLヒューズの記述については51頁の「ポートCの交換機能」をご覧ください。
注2: SPIENヒューズは直列プログラミングでアクセスできません。
注3: 詳細については33頁の「WDTCSR - ウォッチドッグ タイマ制御レジスタ」をご覧ください。
注4: BOOTSZ1,0既定値は最大ブート ローダ容量になります。179頁の表27-7.をご覧ください。
表28-9. ヒューズ下位バイト一覧 ビット
名称 意味 既定値
7
CKDIV8 (注4) システム クロック 8分周選択。 0 (プログラム) 8分周 6
CKOUT (注3) システム クロック出力許可。 1 (非プログラム) 不許可
5
SUT1 1 (非プログラム)
起動時間選択。 (注1)
4
SUT0 0 (プログラム)
3
CKSEL3 0 (プログラム)
2
CKSEL2 0 (プログラム)
クロック種別選択。 (注2)
1
CKSEL1 1 (非プログラム)
0
CKSEL0 0 (プログラム)
注1: SUT1,0の既定値は最大起動時間になります。詳細については20頁の表9-12.をご覧ください。
注2: CKSEL3~0の既定設定は8MHz校正付き内蔵RC発振器になります。詳細については20頁の表9-11.をご覧ください。
注3: CKOUTはポートB0に出力することをシステム クロックに許します。詳細については21頁の「クロック出力緩衝部」をご覧ください。
注4: 詳細については21頁の「システム クロック前置分周器」をご覧ください。
ヒューズ ビットの状態はチップ消去によって影響されません。施錠ビット1(LB1)がプログラム(0)されると、ヒューズ ビットが固定されることに注意し てください。施錠ビットをプログラム(0)する前にヒューズ ビットをプログラミング(書き込み)してください。
28.2.1. ヒューズのラッチ
ヒューズ値はデバイスがプログラミング動作へ移行する時にラッチされ、ヒューズ値の変更はデバイスがプログラミング動作を去るまで無効です。こ れは一旦プログラム(0)されると直ぐに効果があるEESAVEヒューズには適用されません。ヒューズは通常動作での電源投入でもラッチされま す。
28.3. 識票バイト
全てのAtmelマイクロ コントローラはデバイスを識別する3バイトの識票符号を持ちます。この 符号は直列と並列の両プログラミング動作で、またデバイスが施錠されていても読めます。
この3バイトは分離された空間に存在します。ATmega48A/48PA/88A/88PA/168A/
168PA/328/328P用の識票バイトは表28-10.で与えられます。
表28-10. デバイスの識別番号(ID) 識票バイト アドレス 部品番号 $0000 $0001 $0002
ATmega48A $1E $92 $05 ATmega48PA $1E $92 $0A ATmega88A $1E $93 $0A ATmega88PA $1E $93 $0F ATmega168A $1E $94 $06 ATmega168PA $1E $94 $0B ATmega328 $1E $95 $14 ATmega328P $1E $95 $0F
28.4. 発振校正値バイト
ATmega48A/48PA/88A/88PA/168A/168PA/328/328Pは内蔵RC発振器用に1バイトの校正値を持っています。このバイトは識票アドレ ス空間でアドレス$0000の上位バイトにあります。リセット中、校正付き内蔵RC発振器の正しい周波数を保証するために、このバイトが発振 校正(OSCCAL)レジスタへ自動的に書かれます。
28.5. ページ容量
表28-11. フラッシュ メモリのページ数とページの語数デバイス 全容量 ページ容量 PCWORD ページ数 PCPAGE PCMSB 32ワード
ATmega48A/48PA 2Kワード(4Kバイト) PC4~0 64 PC10~5 10 32ワード
ATmega88A/88PA 4Kワード(8Kバイト) PC4~0 128 PC11~5 11 64ワード
ATmega168A/168PA 8Kワード(16Kバイト) PC5~0 128 PC12~6 12 64ワード
ATmega328/328P 16Kワード(32Kバイト) PC5~0 256 PC13~6 13
表28-12. EEPROMメモリのページ数とページの語数
デバイス 全容量 ページ容量 PCWORD ページ数 PCPAGE EEAMSB 4バイト
ATmega48A/48PA 256バイト EEA1~0 64 EEA7~2 7 4バイト
ATmega88A/88PA 512バイト EEA1~0 128 EEA8~2 8 4バイト
ATmega168A/168PA 512バイト EEA1~0 128 EEA8~2 8 4バイト
ATmega328/328P 1Kバイト EEA1~0 256 EEA9~2 9
ATmega48A/48PA/88A/88PA/168A/168PA/328/328P [データシート] 184
28.6. 並列プログラミング
この項はATmega48A/48PA/88A/88PA/168A/168PA/328/328Pのプログラム用フラッシュ メモリ、データ用EEPROM、メモリの施錠ビット、ヒュー ズ ビットの並列プログラミングと照合の方法を記述します。特記事項を除いて、パルス幅は最低250nsと仮定されます。
28.6.1. 信号名
本項でATmega48A/48PA/88A/88PA/168A/168PA/328/328Pのいく つかのピンは並列プログラミング中の機能を表す信号名で参照されます。
図28-1.と表28-13.をご覧ください。後続の表で示されないピンはピン名 によって参照されます。
XA0とXA1ピンはXTAL1ピンが正パルスを与えられる時に実行される動作 を決めます。このビット符号化は表28-15.で示されます。
WRまたはOEパルス送出時、設定された指令が決める動作が実行され ます。各種指令は表28-16.で示されます。
図28-1. 並列プログラミング構成図
RESET PD1 PD2 PD3 PD4 PD5 PD6 XTAL1 GND +12V
RDY/BSY OE WR BS1 XA0 XA1
PC1,0:PB5~0 VCC
DATA +5V
PD7