®

ATmega16U4, ATmega32U4
16/32Kﾊﾞｲﾄ実装書き込み可能ﾌﾗｯｼｭ ﾒﾓﾘ、USB制御器付き
Atmel 8ﾋﾞｯﾄ ﾏｲｸﾛ ｺﾝﾄﾛｰﾗ
ﾃﾞｰﾀｼｰﾄ特徴・ 高性能、低消費AVR® 8ﾋﾞｯﾄ ﾏｲｸﾛ ｺﾝﾄﾛｰﾗ
・ 進化したRISC構造- 強力な131命令(多くは1周期で実行)- 32個の1ﾊﾞｲﾄ長汎用ﾚｼﾞｽﾀ- 完全なｽﾀﾃｨｯｸ動作- 16MHz時、16MIPSに達する高速動作- 2周期実行の乗算命令
・ ﾃﾞｰﾀ ﾒﾓﾘと不揮発性ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ- 実装自己書き換え可能な16K/32Kﾊﾞｲﾄ(8K/16K語)ﾌﾗｯｼｭ ﾒﾓﾘ内蔵- 1.25K/2.5Kﾊﾞｲﾄの内蔵SRAM- 512/1KﾊﾞｲﾄのEEPROM- 書き換え回数: 10,000/ﾌﾗｯｼｭ, 100,000/EEPROM- ﾃﾞｰﾀ保持力: 20年/85℃, 100年/25℃- 個別施錠ﾋﾞｯﾄを持つ任意のﾌﾞｰﾄ ｺｰﾄﾞ領域
ﾁｯﾌﾟ内ﾌﾞｰﾄ ﾌﾟﾛｸﾞﾗﾑによる実装書き換え
真の書き込み中の読み出し動作
出荷時に外部XTALｸﾛｯｸ使用ﾃﾞﾊﾞｲｽは既定ﾌﾞｰﾄ ﾛｰﾀﾞが予め書き込み済み- ｿﾌﾄｳｪｱ保護用の設定可能な施錠機能
・ JTAG (IEEE® 1149.1準拠) ｲﾝﾀｰﾌｪｰｽ- JTAG規格に従った境界走査(Boundary-Scan)能力- 広範囲な内蔵ﾃﾞﾊﾞｯｸﾞ機能- JTAGｲﾝﾀｰﾌｪｰｽ経由でのﾌﾗｯｼｭ、EEPROM、ﾋｭｰｽﾞ、施錠ﾋﾞｯﾄのﾌﾟﾛｸﾞﾗﾐﾝｸﾞ・ 転送完了での割り込み付きUSB全速(Full-speed)/低速(Low-speed)装置部- USB仕様改訂2.0(Universal Serial Bus Specification Rev 2.0)完全適合- 1.5Mbpsと12Mbpsまでのﾃﾞｰﾀ転送速度を支援- 64ﾊﾞｲﾄまでの制御転送用ｴﾝﾄﾞﾎﾟｲﾝﾄ0- 大量(Bulk),割り込み(Interrupt),等時(Isochronous)転送と入出力方向が設定可能な
6つのｴﾝﾄﾞﾎﾟｲﾝﾄ- 二重ﾊﾞﾝｸ動作で256ﾊﾞｲﾄまで設定可能なｴﾝﾄﾞﾎﾟｲﾝﾄ容量- 完全に独立したｴﾝﾄﾞﾎﾟｲﾝﾄ ﾒﾓﾘ割付用832ﾊﾞｲﾄUSBﾃﾞｭｱﾙ ﾎﾟｰﾄRAM(DPRAM)- 休止(Suspend:ｻｽﾍﾟﾝﾄﾞ)/再開(Resume:ﾘｼﾞｭｰﾑ)割り込み- USBﾊﾞｽ ﾘｾｯﾄでCPUﾘｾｯﾄ可能- 全速ﾊﾞｽ動作用48MHz PLL- ﾏｲｸﾛ ｺﾝﾄﾛｰﾗ要求でのUSBﾊﾞｽ接続/切断- 低速(Low-speed)動作に対するｸﾘｽﾀﾙなし動作
・ 内蔵周辺機能- USBと高速ﾀｲﾏ用ﾁｯﾌﾟ上PLL: 32～96MHz動作- 独立した前置分周器、比較機能付き、1つの8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ- 独立した前置分周器、比較、捕獲機能付き、2つの16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ- PLL(64MHz)と比較機能付き、1つの10ﾋﾞｯﾄ高速ﾀｲﾏ/ｶｳﾝﾀ- 2つの8ﾋﾞｯﾄPWM- 2～16ﾋﾞｯﾄ分解能が設定可能な4つのPWM- 2～11ﾋﾞｯﾄ分解能が設定可能な高速動作用の6つのPWM- 比較出力変調器- 12ﾁｬﾈﾙの10ﾋﾞｯﾄ A/D変換器(設定可能な利得付き差動ﾁｬﾈﾙ機能)- ﾊｰﾄﾞｳｪｱ流れ制御付きの設定可能な直列USART- 主装置/従装置動作SPI直列ｲﾝﾀｰﾌｪｰｽ
本書は一般の方々の便宜のため有志により作成されたもので、Atmel社とは無関係であることを御承知ください。しおりの[はじめに]での内容にご注意ください。
Rev. 7766J-04/2016, 7766JJ3-07/2021

- ﾊﾞｲﾄ対応の2線直列ｲﾝﾀｰﾌｪｰｽ- 設定可能な専用発振器付きｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ- ｱﾅﾛｸﾞ比較器- ﾋﾟﾝ変化での割り込みと起動復帰- ﾁｯﾌﾟ上の温度感知器
・ 特殊ﾏｲｸﾛ ｺﾝﾄﾛｰﾗ機能- 電源ONﾘｾｯﾄ回路と設定可能な低電圧検出器(BOD)- 校正可能な内蔵8MHz発振器- 内蔵ｸﾛｯｸ前置分周器とｸﾛｯｸ急速切り換え(内蔵RC/外部発振器)- 外部及び内部の割り込み- ｱｲﾄﾞﾙ、A/D変換雑音低減、ﾊﾟﾜｰｾｰﾌﾞ、ﾊﾟﾜｰﾀﾞｳﾝ、ｽﾀﾝﾊﾞｲ、拡張ｽﾀﾝﾊﾞｲの6つの低消費動作・ I/Oと外囲器- CMOS出力とLVTTL入力兼備の全I/O- 26ﾋﾞｯﾄの設定可能なI/O- 44ﾘｰﾄﾞTQFP(10×10mm)、44ﾊﾟｯﾄﾞQFN(7×7mm)
・ 動作電圧- 2.7～5.5V
・ 温度範囲- -40～85℃ (工業用)・ 最大速度- 8MHz/2.7V (全温度範囲)- 16MHz/4.5V (全温度範囲)

1. ﾋﾟﾝ配置

目印

AVCC
GND
AREF
PF0 (ADC0)
PF1 (ADC1)
PF4 (ADC4/TCK)
PF5 (ADC5/TMS)
PF6 (ADC6/TDO)
PF7 (ADC7/TDI)
GND
VCC

TQFP・QFN

PE2 (HWB)
PC7 (ICP3/CLKO/OC4A)
PC6 (OC3A/OC4A)
PB6 (PCINT6/OC1B/OC4B/ADC13)
PB5 (PCINT5/OC1A/OC4B/ADC12)PB4 (PCINT4/ADC11)
PD7 (T0/OC4D/ADC10)
PD6 (T1/OC4D/ADC9)PD4 (ICP1/ADC8)
AVCC
GND

(OC0A/OC1C/RTS/PCINT7) PB7
RESET
VCC
GND
XTAL2
XTAL1
(OC0B/SCL/INT0) PD0(SDA/INT1) PD1(RXD/INT2) PD2(TXD/INT3) PD3(XCK/CTS) PD5

44 42 40 38 36 34(INT6/AIN0) PE6 1 43 41 39 37 35 33
32
UVCC 2
31
D- 3
30
D+ 4 (注)29
UGND 528
UCAP 6
27
VBUS 7
26(SS/PCINT0) PB0 8
25(SCK/PCINT1) PB1 9
24(PDI/MOSI/PCINT2) PB2 10(PDO/MISO/PCINT3) PB3 11 13 15 17 19 21 23
12 14 16 18 20 22

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

2

2. 概要ATmega16U4/32U4はAVR強化RISC構造の低消費CMOS 8ﾋﾞｯﾄ ﾏｲｸﾛ ｺﾝﾄﾛｰﾗです。1周期で実行する強力な命令はMHzあたり
1MIPSにも達し、実行速度対電力消費の最適化が容易に行えます。

2.1. 構成図

PF1,PF0 PC7,PC6
RESET

VCC

温度感知器

ﾎﾟｰﾄF緩衝部/駆動部
ﾎﾟｰﾄF
ﾃﾞｰﾀ ﾚｼﾞｽﾀ

ﾎﾟｰﾄF
方向ﾚｼﾞｽﾀ

GND
AVCC

XTAL2

PF7～PF4

XTAL1

図2-1. 構成図

ﾎﾟｰﾄC緩衝部/駆動部
ﾎﾟｰﾄC
ﾃﾞｰﾀ ﾚｼﾞｽﾀ

ﾎﾟｰﾄC
方向ﾚｼﾞｽﾀPOR･BOD
ﾘｾｯﾄ回路A/D変換器

WDT用内蔵
RC発振器

ｼｽﾃﾑ ｸﾛｯｸ用
発振器

AREF
JTAG TAP

ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ

ｽﾀｯｸ ﾎﾟｲﾝﾀ

ｳｫｯﾁﾄﾞｯｸﾞ
ﾀｲﾏ

校正付き内蔵
RC発振器

内蔵ﾃﾞﾊﾞｯｸﾞ
機能ﾌﾟﾛｸﾞﾗﾑ用
ﾌﾗｯｼｭ ﾒﾓﾘ

SRAM

MCU制御
ﾚｼﾞｽﾀ

ﾀｲﾐﾝｸﾞ･制御

境界走査
ﾁｪｰﾝ

命令ﾚｼﾞｽﾀ

汎用ﾚｼﾞｽﾀﾀｲﾏ/ｶｳﾝﾀ

ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
回路

命令復号器

X
Y
Z

割り込み制御ALU

EEPROM

ｽﾃｰﾀｽ ﾚｼﾞｽﾀ

高速
ﾀｲﾏ/PWM

USART

2線直列
ｲﾝﾀｰﾌｪｰｽPLL

D+ VBUS

制御信号線

ｱﾅﾛｸﾞ
比較器
SPI

USB

D-

+

8bit DATA BUS

ﾎﾟｰﾄE
ﾃﾞｰﾀ ﾚｼﾞｽﾀ

ﾎﾟｰﾄE
方向ﾚｼﾞｽﾀ

ﾎﾟｰﾄE緩衝部/駆動部

ﾎﾟｰﾄB
ﾃﾞｰﾀ ﾚｼﾞｽﾀ

ﾎﾟｰﾄB
方向ﾚｼﾞｽﾀ

ﾎﾟｰﾄB緩衝部/駆動部

ﾎﾟｰﾄD
ﾃﾞｰﾀ ﾚｼﾞｽﾀ

ﾎﾟｰﾄD
方向ﾚｼﾞｽﾀ

USBﾊﾟｯﾄﾞ
3V調整器

ﾎﾟｰﾄD緩衝部/駆動部

UCAP
PE6

PE2

PB7～PB0

PD7～PD0UVCC

1µF

AVRｺｱは32個の汎用作業ﾚｼﾞｽﾀと豊富な命令群を兼ね備えています。32個の全ﾚｼﾞｽﾀはALU(Arithmetic Logic Unit)に直結され、ﾚｼﾞｽﾀ間命令は1ｸﾛｯｸ周期で実行されます。AVR構造は現状のCISC型ﾏｲｸﾛ ｺﾝﾄﾛｰﾗに対して10倍程度までの単位処理量向上効
果があります。
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]3このﾃﾞﾊﾞｲｽは次の特徴、書き込み中読める能力を持つ16K/32Kﾊﾞｲﾄの実装書き換え可能なﾌﾗｯｼｭ ﾒﾓﾘ、512/1KﾊﾞｲﾄのEEPROM、
1.25K/2.5KﾊﾞｲﾄのSRAM、26本の汎用入出力線(CMOS出力とLVTTL入力)、32個の汎用作業ﾚｼﾞｽﾀ、比較動作やPWMを持つ柔軟な3つのﾀｲﾏ/ｶｳﾝﾀ、比較動作と調整可能なPLL供給元を持つ1つのより高速なﾀｲﾏ/ｶｳﾝﾀ、(CTS/RTS流れ制御信号を含む)1つのUSART、ﾊﾞｲﾄ対応の2線直列ｲﾝﾀｰﾌｪｰｽ、設定可能な増幅器付き任意選択差動段と校正された温度感知器付き12ﾁｬﾈﾙの10ﾋﾞｯﾄ
A/D変換器、設定可能な内部発振器付きｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ、SPI直列ﾎﾟｰﾄ、内蔵ﾃﾞﾊﾞｯｸﾞとﾌﾟﾛｸﾞﾗﾐﾝｸﾞ機能にも使われるIEEE標準1149.1準拠JTAG検査ｲﾝﾀｰﾌｪｰｽ、ｿﾌﾄｳｪｱ選択可能な6つの低消費動作機能を提供します。ｱｲﾄﾞﾙ動作では動作を停止しますが、SRA
M、ﾀｲﾏ/ｶｳﾝﾀ、SPIﾎﾟｰﾄ、割り込み機能は有効で動作を継続します。ﾊﾟﾜｰﾀﾞｳﾝ動作ではﾚｼﾞｽﾀの内容は保護されますが、発振器が停止するため、以降のﾊｰﾄﾞｳｪｱ ﾘｾｯﾄか外部割り込みまで他の全機能を禁止(無効に)します。A/D変換雑音低減動作ではA/D変換
中の切り替え雑音を最小とするために、A/D変換器を除く全ての周辺機能とCPUを停止します。ｽﾀﾝﾊﾞｲ動作ではｸﾘｽﾀﾙ発振子/ｾﾗﾐｯｸ振動子用発振器が動作し、一方ﾃﾞﾊﾞｲｽのその他は休止します。これは低消費電力と非常に速い起動の組み合わせを許します。
本ﾃﾞﾊﾞｲｽはAtmel®の高密度不揮発性ﾒﾓﾘ技術を使って製造されています。内蔵の実装書き換え(ISP)可能なﾌﾟﾛｸﾞﾗﾑ用ﾌﾗｯｼｭ ﾒﾓﾘ
は規定の不揮発性ﾒﾓﾘ書き込み器、SPI直列ｲﾝﾀｰﾌｪｰｽ経由、AVRｺｱ上ﾌﾞｰﾄ ﾌﾟﾛｸﾞﾗﾑの実行によって再書き込みができます。ﾌﾞｰﾄ
ﾌﾟﾛｸﾞﾗﾑは応用領域ﾌﾗｯｼｭ ﾒﾓﾘ内の応用ﾌﾟﾛｸﾞﾗﾑの読み込みにどのｲﾝﾀｰﾌｪｰｽでも使えます。ﾌﾞｰﾄ領域ﾌﾗｯｼｭ ﾒﾓﾘ内のﾌﾟﾛｸﾞﾗﾑは
真の「書き込み中の読み出し可」動作により、応用領域ﾌﾗｯｼｭ ﾒﾓﾘ更新中も実行を継続します。ﾓﾉﾘｼｯｸ ﾁｯﾌﾟ上の実装書き換え可
能なﾌﾗｯｼｭ ﾒﾓﾘと、8ﾋﾞｯﾄRISC型CPUの組み合わせによる本ﾃﾞﾊﾞｲｽは多くの組み込み制御の応用に対して高度な柔軟性と対費用効果をもたらす強力なﾏｲｸﾛ ｺﾝﾄﾛｰﾗです。
ATmega16U4/32U4 AVRはCｺﾝﾊﾟｲﾗ、ﾏｸﾛ ｱｾﾝﾌﾞﾗ、ﾃﾞﾊﾞｯｶﾞ、ｼﾐｭﾚｰﾀ、ｲﾝｻｰｷｯﾄ ｴﾐｭｰﾚｰﾀ、評価ｷｯﾄを含む専用のﾌﾟﾛｸﾞﾗﾑ及びｼｽﾃﾑ開発ﾂｰﾙで支援されます。

2.2. ﾋﾟﾝ概要
2.2.1. VCC
ﾃﾞｼﾞﾀﾙ電源ﾋﾟﾝ。

2.2.2. GND
接地ﾋﾟﾝ。

2.2.3. PB7～PB0 (ﾎﾟｰﾄB)
ﾎﾟｰﾄBは(ﾋﾞｯﾄ毎に選択される)内蔵ﾌﾟﾙｱｯﾌﾟ抵抗付き8ﾋﾞｯﾄ双方向入出力ﾎﾟｰﾄです。ﾎﾟｰﾄB出力緩衝部は高い吐き出しと吸い込み両方の能力の対称駆動特性です。入力としてﾌﾟﾙｱｯﾌﾟ抵抗が活性(有効)なら、外部的にLowへ引かれたﾎﾟｰﾄBﾋﾟﾝは電流を吐き出します。ﾘｾｯﾄ条件が有効になるとｸﾛｯｸが動いていなくてもﾎﾟｰﾄBﾋﾟﾝはHi-Zにされます。
ﾎﾟｰﾄBは他のﾎﾟｰﾄより優れた駆動能力を持ちます(訳注:該当記述が他にないため、消し忘れかもしれません)。
ﾎﾟｰﾄBは45頁で一覧されるように本ﾃﾞﾊﾞｲｽの様々な特殊機能

2.2.4. PC7,PC6 (ﾎﾟｰﾄC)扱います。
ﾎﾟｰﾄCは(ﾋﾞｯﾄ毎に選択される)内蔵ﾌﾟﾙｱｯﾌﾟ抵抗付き8ﾋﾞｯﾄ双方向入出力ﾎﾟｰﾄです。ﾎﾟｰﾄC出力緩衝部は高い吐き出しと吸い込み両方の能力の対称駆動特性です。入力としてﾌﾟﾙｱｯﾌﾟ抵抗が活性(有効)なら、外部的にLowへ引かれたﾎﾟｰﾄCﾋﾟﾝは電流を吐き出します。ﾘｾｯﾄ条件が有効になるとｸﾛｯｸが動いていなくてもﾎﾟｰﾄCﾋﾟﾝはHi-Zにされます。
製品のﾋﾟﾝ出力にはﾋﾞｯﾄ7と6だけが存在します。
ﾎﾟｰﾄCは47頁で一覧される本ﾃﾞﾊﾞｲｽの様々な特殊機能も扱います。

2.2.5. PD7～PD0 (ﾎﾟｰﾄD)
ﾎﾟｰﾄDは(ﾋﾞｯﾄ毎に選択される)内蔵ﾌﾟﾙｱｯﾌﾟ抵抗付き8ﾋﾞｯﾄ双方向入出力ﾎﾟｰﾄです。ﾎﾟｰﾄD出力緩衝部は高い吐き出しと吸い込み両方の能力の対称駆動特性です。入力としてﾌﾟﾙｱｯﾌﾟ抵抗が活性(有効)なら、外部的にLowへ引かれたﾎﾟｰﾄDﾋﾟﾝは電流を吐き出します。ﾘｾｯﾄ条件が有効になるとｸﾛｯｸが動いていなくてもﾎﾟｰﾄDﾋﾟﾝはHi-Zにされます。
ﾎﾟｰﾄDは48頁で一覧されるATmega16U4/32U4の様々な特殊機能も扱います。

2.2.6. PE6,PE2 (ﾎﾟｰﾄE)
ﾎﾟｰﾄEは(ﾋﾞｯﾄ毎に選択される)内蔵ﾌﾟﾙｱｯﾌﾟ抵抗付き8ﾋﾞｯﾄ双方向入出力ﾎﾟｰﾄです。ﾎﾟｰﾄE出力緩衝部は高い吐き出しと吸い込み両方の能力の対称駆動特性です。入力としてﾌﾟﾙｱｯﾌﾟ抵抗が活性(有効)なら、外部的にLowへ引かれたﾎﾟｰﾄEﾋﾟﾝは電流を吐き出します。ﾘｾｯﾄ条件が有効になるとｸﾛｯｸが動いていなくてもﾎﾟｰﾄEﾋﾟﾝはHi-Zにされます。
製品のﾋﾟﾝ出力にはﾋﾞｯﾄ6と2だけが存在します。
ﾎﾟｰﾄEは50頁で一覧されるATmega16U4/32U4の様々な特殊機能も扱います。

2.2.7. PF7～PF4, PF1,PF0 (ﾎﾟｰﾄF)
ﾎﾟｰﾄFはA/D変換器へのｱﾅﾛｸﾞ入力として扱います。
A/D変換器が使われない場合、ﾎﾟｰﾄFは8ﾋﾞｯﾄ双方向入出力ﾎﾟｰﾄとしても扱います。ﾎﾟｰﾄ ﾋﾟﾝは(ﾋﾞｯﾄ毎に選択される)内蔵ﾌﾟﾙｱｯﾌﾟ
抵抗を提供できます。ﾎﾟｰﾄF出力緩衝部は高い吐き出しと吸い込み両方の能力の対称駆動特性です。入力としてﾌﾟﾙｱｯﾌﾟ抵抗が活性(有効)ならば、外部的にLowへ引かれたﾎﾟｰﾄFﾋﾟﾝは電流を吐き出します。ﾘｾｯﾄ条件が有効になるとｸﾛｯｸが動いていなくてもﾎﾟｰﾄF
ﾋﾟﾝはHi-Zにされます。
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

4

製品のﾋﾟﾝ出力にはﾋﾞｯﾄ3と2が存在しません。
ﾎﾟｰﾄFはJTAGｲﾝﾀｰﾌｪｰｽ機能も扱います。JTAGｲﾝﾀｰﾌｪｰｽが許可されると、ﾘｾｯﾄが起きてもPF7(TDI)、PF5 (TMS)、PF4(TCK)ﾋﾟﾝのﾌﾟﾙｱｯﾌﾟ抵抗は活性(有効)にされます。

2.2.8. DUSB全速(Full-speed)/低速(Low-speed)負極性ﾃﾞｰﾀ上側ﾎﾟｰﾄ。22Ω直列抵抗でUSBｺﾈｸﾀD-ﾋﾟﾝに接続されるべきです。

2.2.9. D+
USB全速(Full-speed)/低速(Low-speed)正極性ﾃﾞｰﾀ上側ﾎﾟｰﾄ。22Ω直列抵抗でUSBｺﾈｸﾀD+ﾋﾟﾝに接続されるべきです。

2.2.10. UGND
USBﾊﾟｯﾄﾞ接地。

2.2.11. UVCC
USBﾊﾟｯﾄﾞ用内蔵電圧調整器の供給電圧入力。

2.2.12. UCAP
USBﾊﾟｯﾄﾞ用内蔵電圧調整器の供給電圧出力。外部ｺﾝﾃﾞﾝｻ(1µF)に接続されるべきです。

2.2.13. VBUS
USB VBUS監視入。

2.2.14. RESET
ﾘｾｯﾄ入力。最小ﾊﾟﾙｽ幅より長いこのﾋﾟﾝのLowﾚﾍﾞﾙは、ｸﾛｯｸが動いていなくてもﾘｾｯﾄを生成します。最小ﾊﾟﾙｽ幅は249頁の表29-3.
で与えられます。より短いﾊﾟﾙｽはﾘｾｯﾄの生成が保証されません。

2.2.15. XTAL1
発振器反転増幅器への入力と内部ｸﾛｯｸ操作回路への入力。

2.2.16. XTAL2発振器反転増幅器からの出力。

2.2.17. AVCC
AVCCはﾎﾟｰﾄFとA/D変換器用供給電圧(電源)ﾋﾟﾝです。例えA/D変換が使われなくても、外部的にVCCへ接続されるべきです。A/D
変換が使われる場合、VCCから低域通過濾波器を通して接続されるべきです。

2.2.18. AREF
AREFはA/D変換器用ｱﾅﾛｸﾞ基準(電圧)ﾋﾟﾝです。

3. 諸注意3.1. お断り
本ﾃﾞｰﾀｼｰﾄ内で示された代表値はｼﾐｭﾚｰｼｮﾝと同じ製法技術で製造された他のAVRﾏｲｸﾛ ｺﾝﾄﾛｰﾗの特性を基にしています。最小と最大の値はﾃﾞﾊﾞｲｽの特性が記載された後に利用可能になります。

3.2. 資料
包括的なﾃﾞｰﾀｼｰﾄ、応用記述、開発ﾂｰﾙ群はhttp://www.atmel.com/avrでのﾀﾞｳﾝﾛｰﾄﾞで利用可能です。

3.3. ｺｰﾄﾞ例
この資料はﾃﾞﾊﾞｲｽの様々な部分の使用法を手短に示す簡単なｺｰﾄﾞ例を含みます。これらのｺｰﾄﾞ例はｱｾﾝﾌﾞﾙまたはｺﾝﾊﾟｲﾙに先立ってﾃﾞﾊﾞｲｽ定義ﾍｯﾀﾞ ﾌｧｲﾙがｲﾝｸﾙｰﾄﾞされると仮定します。全てのCｺﾝﾊﾟｲﾗ製造業者がﾍｯﾀﾞﾌｧｲﾙ内にﾋﾞｯﾄ定義を含めるとは限らず、またCでの割り込みの扱いがｺﾝﾊﾟｲﾗに依存することに注意してください。より多くの詳細についてはCｺﾝﾊﾟｲﾗの資料で確認してください。
これらのｺｰﾄﾞ例はｱｾﾝﾌﾞﾙまたはｺﾝﾊﾟｲﾙに先立ってﾃﾞﾊﾞｲｽ定義ﾌｧｲﾙがｲﾝｸﾙｰﾄﾞされることが前提です。拡張I/O領域に配置した
I/Oﾚｼﾞｽﾀに対し、IN, OUT, SBIS, SBIC, CBI, SBI命令は拡張I/O領域へのｱｸｾｽを許す命令に置き換えられなければなりません。
代表的にはSBRS, SBRC, SBR, CBR命令と組み合わせたLDS, STS命令です。

3.4. ﾃﾞｰﾀ保持力
信頼性証明結果はﾃﾞｰﾀ保持誤り率の反映を示し、20年以上/85℃または100年以上/25℃で1PPMよりずっと小さな値です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

54. AVR CPU ｺｱ
4.1. 序説
ここでは一般的なAVRｺｱ構造について説明します。このCPUｺｱの主な機能は正しいﾌﾟﾛｸﾞﾗﾑ実行を保証することです。従ってCPU
はﾒﾓﾘ ｱｸｾｽ、計算実行、周辺制御、割り込み操作ができなければなりません。

4.2. 構造概要～

間接アドレス指定(Indirect)
直接 (Direct)
アドレス指定最大効率と平行処理のため、AVRはﾌﾟﾛｸﾞﾗﾑとﾃﾞｰﾀに対してﾒﾓﾘ 図4-1. AVR MCU構造とﾊﾞｽを分離するﾊｰﾊﾞｰﾄﾞ構造を使います。ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ内の命令
8-bit Data Bus
は、単一段のﾊﾟｲﾌﾟﾗｲﾝで実行されます。1命令の実行中に次の命令がﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘから事前取得されます。この概念は全部のｸﾛｯｸ周期で命令実行を可能にします。ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘは実装書き換え可
ﾌﾟﾛｸﾞﾗﾑ
状態/制御
割り込み部
ｶｳﾝﾀ
能なﾌﾗｯｼｭ ﾒﾓﾘです。
高速ﾚｼﾞｽﾀ ﾌｧｲﾙは1ｸﾛｯｸ周期ｱｸｾｽの32個の8ﾋﾞｯﾄ長汎用ﾚｼﾞｽﾀ
SPI部
を含みます。これは1ｸﾛｯｸ周期ALU(Arithmetic Logic Unit)操作をﾌﾟﾛｸﾞﾗﾑ用
32×8
許します。代表的なALU操作では2つのｵﾍﾟﾗﾝﾄﾞがﾚｼﾞｽﾀ ﾌｧｲﾙかﾌﾗｯｼｭ ﾒﾓﾘ
汎用ﾚｼﾞｽﾀｳｫｯﾁﾄﾞｯｸﾞ
ﾀｲﾏ
らの出力で、1ｸﾛｯｸ周期内でその操作が実行され、その結果がﾚｼﾞｽﾀ ﾌｧｲﾙに書き戻されます。
ｱﾅﾛｸﾞ
命令ﾚｼﾞｽﾀ
32個中の6つのﾚｼﾞｽﾀは効率的なｱﾄﾞﾚｽ計算ができるﾃﾞｰﾀ空間ｱ
ALU
比較器
ﾄﾞﾚｽ指定用に、3つの16ﾋﾞｯﾄ長間接ｱﾄﾞﾚｽ ﾎﾟｲﾝﾀ用ﾚｼﾞｽﾀとして使われます。これらｱﾄﾞﾚｽ ﾎﾟｲﾝﾀの1つはﾌﾟﾛｸﾞﾗﾑ用ﾌﾗｯｼｭ ﾒﾓﾘ内の定数表参照用ｱﾄﾞﾚｽ ﾎﾟｲﾝﾀとしても使えます。これら16ﾋﾞｯﾄ長付加
命令復号器
周辺機能部 1
ﾃﾞｰﾀ用
機能ﾚｼﾞｽﾀはX,Y,Zﾚｼﾞｽﾀで、本項内で後述されます。
SRAM
周辺機能部 2
ALUはﾚｼﾞｽﾀ間またはﾚｼﾞｽﾀと定数間の算術及び論理操作を支制御信号線援します。単一ﾚｼﾞｽﾀ操作もALUで実行できます。算術演算操作
EEPROM
後、操作結果についての情報を反映するためにｽﾃｰﾀｽ ﾚｼﾞｽﾀ(S
汎用入出力部
周辺機能部 nREG)が更新されます。
ﾌﾟﾛｸﾞﾗﾑの流れは条件/無条件分岐や呼び出し命令によって提供され、全ｱﾄﾞﾚｽ空間を直接ｱﾄﾞﾚｽ指定できます。AVR命令の多くは
16ﾋﾞｯﾄ語(ﾜｰﾄﾞ)形式です。全てのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘのｱﾄﾞﾚｽは(訳注:定数のみを除き)16または32ﾋﾞｯﾄ長命令を含みます。
ﾌﾟﾛｸﾞﾗﾑ用ﾌﾗｯｼｭ ﾒﾓﾘ空間はﾌﾞｰﾄ ﾌﾟﾛｸﾞﾗﾑ領域と応用ﾌﾟﾛｸﾞﾗﾑ領域の2つに分けられます。どちらの領域にも書き込み禁止や読み書き防止用の専用施錠ﾋﾞｯﾄがあります。応用ﾌﾗｯｼｭ ﾒﾓﾘ領域内に書き込むSPM命令はﾌﾞｰﾄ ﾌﾟﾛｸﾞﾗﾑ領域内に属さ(存在し)なければなりません。
割り込みやｻﾌﾞﾙｰﾁﾝ呼び出し中、戻りｱﾄﾞﾚｽを示すﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ(PC)はｽﾀｯｸに保存されます。ｽﾀｯｸは一般的なﾃﾞｰﾀ用SRAM上に
実際には割り当てられ、従ってｽﾀｯｸ容量は全SRAM容量とSRAM使用量でのみ制限されます。全ての使用者ﾌﾟﾛｸﾞﾗﾑはﾘｾｯﾄ処理ﾙｰ
ﾁﾝで(ｻﾌﾞﾙｰﾁﾝ呼び出しや割り込みが実行される前に)、ｽﾀｯｸ ﾎﾟｲﾝﾀ(SP)を初期化しなければなりません。SPはI/O空間で読み書きｱｸｾｽが可能です。ﾃﾞｰﾀ用SRAMはAVR構造で支援される5つの異なるｱﾄﾞﾚｽ指定種別を通して容易にｱｸｾｽできます。
AVR構造に於けるﾒﾓﾘ空間は全て直線的な普通のﾒﾓﾘ配置です。
柔軟な割り込み部にはI/O空間の各制御ﾚｼﾞｽﾀとｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の特別な全割り込み許可(I)ﾋﾞｯﾄがあります。全ての割り込み
は割り込みﾍﾞｸﾀ表に個別の割り込みﾍﾞｸﾀを持ちます。割り込みには割り込みﾍﾞｸﾀ表の位置に従う優先順があります。下位側割り込
みﾍﾞｸﾀ ｱﾄﾞﾚｽが高い優先順位です。
I/Oﾒﾓﾘ空間は制御ﾚｼﾞｽﾀ、SPI、他のI/O機能としてCPU周辺機能用の64ｱﾄﾞﾚｽを含みます。I/Oﾒﾓﾘは直接またはﾚｼﾞｽﾀ ﾌｧｲﾙの次のﾃﾞｰﾀ空間位置$20～$5Fとしてｱｸｾｽできます。加えてATmega16U4/32U4にはST/STS/STDとLD/LDS/LDD命令だけ使える
SRAM内の$60～$0FFに拡張I/O空間があります。

4.3. ALU (Arithmetic Logic Unit)
高性能なAVRのALUは32個の全汎用ﾚｼﾞｽﾀとの直結で動作します。汎用ﾚｼﾞｽﾀ間または汎用ﾚｼﾞｽﾀと即値間の演算操作は単一ｸﾛｯｸ周期内で実行されます。ALU操作は算術演算、論理演算、ﾋﾞｯﾄ操作の3つの主な種類に大別されます。符号付きと符号なし両方の乗算と固定小数点形式を支援する乗算器(乗算命令)も提供する構造の実装(製品)もあります。詳細記述については「命令要約」章をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

6

4.4. ｽﾃｰﾀｽ ﾚｼﾞｽﾀ (Status Register) SREG
ｽﾃｰﾀｽ ﾚｼﾞｽﾀは最も直前に実行した演算命令の結果についての情報を含みます。この情報は条件処理を行うためのﾌﾟﾛｸﾞﾗﾑの流れ変更に使えます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀは「命令一式参考書」で詳述したように、全てのALU操作後、更新されることに注目してください。
これは多くの場合でそれ用の比較命令使用の必要をなくし、高速でより少ないｺｰﾄﾞに帰着します。
ｽﾃｰﾀｽ ﾚｼﾞｽﾀは割り込み処理ﾙｰﾁﾝ移行時の保存と割り込みからの復帰時の回復(復帰)が自動的に行われません。これはｿﾌﾄｳｪｱ
によって扱われなければなりません。
AVRのｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)は次のように定義されます。
ﾋﾞｯﾄ$3F ($5F)
Read/Write
初期値

7

6

5

4

3

2

1

0

I

T

H

S

V

N

Z

C

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

SREG

● ﾋﾞｯﾄ7 - I : 全割り込み許可 (Global Interrupt Enable)

全割り込み許可ﾋﾞｯﾄは割り込みが許可されるために設定(1)されなければなりません。そのとき、個別割り込み許可制御は独立した制
御ﾚｼﾞｽﾀで行われます。全割り込み許可ﾋﾞｯﾄが解除(0)されると、個別割り込み許可設定に拘らず、どの割り込みも許可されません。I
ﾋﾞｯﾄは割り込みが起こった後にﾊｰﾄﾞｳｪｱによって解除(0)され、後続の割り込みを許可するために、RETI命令によって設定(1)されます。Iﾋﾞｯﾄは「命令一式参考書」で記述されるようにSEIやCLI命令で応用(ﾌﾟﾛｸﾞﾗﾑ)によって設定(1)や解除(0)もできます。
● ﾋﾞｯﾄ6 - T : ﾋﾞｯﾄ変数 (Bit Copy Storage)

ﾋﾞｯﾄ複写命令、BLD(Bit LoaD)とBST(Bit STore)は操作したﾋﾞｯﾄの転送元または転送先として、このTﾋﾞｯﾄを使います。ﾚｼﾞｽﾀ ﾌｧｲﾙのﾚｼﾞｽﾀからのﾋﾞｯﾄはBST命令によってTに複写でき、TのﾋﾞｯﾄはBLD命令によってﾚｼﾞｽﾀ ﾌｧｲﾙのﾚｼﾞｽﾀ内のﾋﾞｯﾄに複写できます。
● ﾋﾞｯﾄ5 - H : ﾊｰﾌｷｬﾘｰ ﾌﾗｸﾞ (Half Carry Flag)

ﾊｰﾌｷｬﾘｰ(H)ﾌﾗｸﾞはいくつかの算術操作でのﾊｰﾌｷｬﾘｰを示します。ﾊｰﾌｷｬﾘｰはBCD演算に有用です。詳細情報については「命令要約」記述をご覧ください。
● ﾋﾞｯﾄ4 - S : 符号 (Sign Bit, S= N Ex-OR V)

Sﾌﾗｸﾞは常に負(N)ﾌﾗｸﾞと2の補数溢れ(V)ﾌﾗｸﾞの排他的論理和です。詳細情報については「命令要約」記述をご覧ください。
● ﾋﾞｯﾄ3 - V : 2の補数溢れﾌﾗｸﾞ (2's Complement Overflow Flag)2の補数溢れ(V)ﾌﾗｸﾞは2の補数算術演算を支援します。詳細情報については「命令要約」記述をご覧ください。
● ﾋﾞｯﾄ2 - N : 負ﾌﾗｸﾞ (Negative Flag)

負(N)ﾌﾗｸﾞは算術及び論理操作での負の結果(MSB=1)を示します。詳細情報については「命令要約」記述をご覧ください。
● ﾋﾞｯﾄ1 - Z : ｾﾞﾛ ﾌﾗｸﾞ (Zero Flag)

ｾﾞﾛ(Z)ﾌﾗｸﾞは算術及び論理操作でのｾﾞﾛ(0)の結果を示します。詳細情報については「命令要約」記述をご覧ください。
● ﾋﾞｯﾄ0 - C : ｷｬﾘｰ ﾌﾗｸﾞ (Carry Flag)

ｷｬﾘｰ(C)ﾌﾗｸﾞは算術及び論理操作でのｷｬﾘｰ(またはﾎﾞﾛｰ)を示します。詳細情報については「命令要約」記述をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

7

4.5. 汎用ﾚｼﾞｽﾀ ﾌｧｲﾙ
このﾚｼﾞｽﾀ ﾌｧｲﾙはAVRの増強したRISC命令群用に最適化されています。必要な効率と柔軟性を達成するために、次の入出力機
構がﾚｼﾞｽﾀ ﾌｧｲﾙによって支援されます。
● 1つの8ﾋﾞｯﾄ出力ｵﾍﾟﾗﾝﾄﾞと1つの8ﾋﾞｯﾄの結果入力● 2つの8ﾋﾞｯﾄ出力ｵﾍﾟﾗﾝﾄﾞと1つの8ﾋﾞｯﾄの結果入力● 2つの8ﾋﾞｯﾄ出力ｵﾍﾟﾗﾝﾄﾞと1つの16ﾋﾞｯﾄの結果入力● 1つの16ﾋﾞｯﾄ出力ｵﾍﾟﾗﾝﾄﾞと1つの16ﾋﾞｯﾄの結果入力

図4-2. AVR CPU 汎用ﾚｼﾞｽﾀ構成図
70 ｱﾄﾞﾚｽ

$00
$01
$02

～

R0
R1
R2

図4-2.はCPU内の32個の汎用作業ﾚｼﾞｽﾀの構造を示します。
ﾚｼﾞｽﾀ ﾌｧｲﾙを操作する殆どの命令は全てのﾚｼﾞｽﾀに直接ｱｸｾｽ
し、それらの殆どは単一周期命令です。
図4-2.で示されるように各ﾚｼﾞｽﾀは使用者ﾃﾞｰﾀ空間の最初の32位
置へ直接的に配置することで、それらはﾃﾞｰﾀ ﾒﾓﾘ ｱﾄﾞﾚｽも割り当てられます。例え物理的にSRAM位置として実装されていなくても
X,Y,Zﾚｼﾞｽﾀ(ﾎﾟｲﾝﾀ)がﾚｼﾞｽﾀ ﾌｧｲﾙ内のどのﾚｼﾞｽﾀの指示にも設定できるように、このﾒﾓﾘ構成は非常に柔軟なﾚｼﾞｽﾀのｱｸｾｽを提
供します。

R13
R14
R15
R16
R17
～

汎用
ﾚｼﾞｽﾀ
ﾌｧｲﾙ

$0D
$0E
$0F
$10
$11

R26
R27
R28
R29
R30
R31

$1A
$1B
$1C
$1D
$1E
$1F

XﾚｼﾞｽﾀYﾚｼﾞｽﾀ
Zﾚｼﾞｽﾀ

下位ﾊﾞｲﾄ
上位ﾊﾞｲﾄ下位ﾊﾞｲﾄ
上位ﾊﾞｲﾄ下位ﾊﾞｲﾄ
上位ﾊﾞｲﾄ4.5.1. Xﾚｼﾞｽﾀ, Yﾚｼﾞｽﾀ, Zﾚｼﾞｽﾀ
R26～R31ﾚｼﾞｽﾀには通常用途の使用にいくつかの追加機能があります。これらのﾚｼﾞｽﾀはﾃﾞｰﾀ空間の間接ｱﾄﾞﾚｽ指定用の
16ﾋﾞｯ ﾄ ｱﾄﾞﾚｽ ﾎﾟｲﾝﾀです。3つのX,Y,Z間接ｱﾄﾞﾚｽ ﾚｼﾞｽﾀは図4-3.で記載したように定義されます。
種々のｱﾄﾞﾚｽ指定種別で、これらのｱﾄﾞﾚｽ ﾚｼﾞｽﾀは固定変位、自動増加、自動減少としての機能を持ちます(詳細については「命令一式参考書」をご覧ください)。

図4-3. X,Y,Zﾚｼﾞｽﾀ構成図
XH (上位)
15
X ﾚｼﾞｽﾀ 7
R27 ($1B)
YH (上位)
15
Y ﾚｼﾞｽﾀ 7
R29 ($1D)
ZH (上位)
15
Z ﾚｼﾞｽﾀ 7
R31 ($1F)

0 7
0 7
0 7

XL (下位)
R26 ($1A)
YL (下位)
R28 ($1C)
ZL (下位)
R30 ($1E)

0
0
0
0
0
0

4.6. ｽﾀｯｸ ﾎﾟｲﾝﾀ (Stack Pointer) SPH,SPL (SP)
ｽﾀｯｸは主に一時ﾃﾞｰﾀの保存、局所変数の保存、割り込みとｻﾌﾞﾙｰﾁﾝ呼び出し後の戻りｱﾄﾞﾚｽの保存に使われます。ｽﾀｯｸ ﾎﾟｲﾝﾀ ﾚ
ｼﾞｽﾀは常にこのｽﾀｯｸの先頭(訳注:次に使われるべき位置)を指し示します。ｽﾀｯｸが高位ﾒﾓﾘから低位ﾒﾓﾘへ伸長するように実行されることに注意してください。これはｽﾀｯｸへのPUSH命令はｽﾀｯｸ ﾎﾟｲﾝﾀを減少するという意味です。
ｽﾀｯｸ ﾎﾟｲﾝﾀはｻﾌﾞﾙｰﾁﾝや割り込みのｽﾀｯｸが配置されるﾃﾞｰﾀSRAMのｽﾀｯｸ領域を指し示します。ﾃﾞｰﾀSRAM内のｽﾀｯｸ空間はｻﾌﾞ
ﾙｰﾁﾝ呼び出しの実行や割り込みの許可の何れにも先立ってﾌﾟﾛｸﾞﾗﾑによって定義されなければなりません。ｽﾀｯｸ ﾎﾟｲﾝﾀは$100以上を指示するように設定されなければなりません。ｽﾀｯｸ ﾎﾟｲﾝﾀの初期値は内蔵SRAMの最終ｱﾄﾞﾚｽです。ｽﾀｯｸ ﾎﾟｲﾝﾀはPUSH命令
でﾃﾞｰﾀがｽﾀｯｸに格納されると-1され、ｻﾌﾞﾙｰﾁﾝ呼び出しや割り込みで戻りｱﾄﾞﾚｽがｽﾀｯｸに格納されると-2されます。ｽﾀｯｸ ﾎﾟｲﾝﾀはPOP命令でﾃﾞｰﾀがｽﾀｯｸから引き出されると+1され、ｻﾌﾞﾙｰﾁﾝからの復帰(RET)命令や割り込みからの復帰(RETI)命令でｱﾄﾞﾚｽがｽ
ﾀｯｸから引き出されると+2されます。
AVRのｽﾀｯｸ ﾎﾟｲﾝﾀはI/O空間内の2つの8ﾋﾞｯﾄ ﾚｼﾞｽﾀとして実装されます。実際に使われるﾋﾞｯﾄ数は(そのﾃﾞﾊﾞｲｽ)実装に依存します。SPLだけが必要とされる程に小さいAVR構造の実装(ﾃﾞﾊﾞｲｽ)のﾃﾞｰﾀ空間もあることに注意してください。その場合、SPHﾚｼﾞｽﾀは存在しません。
ﾋﾞｯﾄ$3E ($5E)
Read/Write
初期値
ﾋﾞｯﾄ$3D ($5D)
Read/Write
初期値

15

14

13

12

11

10

9

8

-

-

-

-

(SP11)

SP10

SP9

SP8

R
0

R
0

R
1

R
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

0

SP7

SP6

SP5

SP4

SP3

SP2

SP1

SP0

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

SPH

SPL

(訳注) 上記の初期値は修正漏れで、RAMENDの場合はATmega16U4=$05FF,ATmega32U4=$0AFFと思われます。
(訳注) 原書本位置のRAMPZ記述は存在しないため、削除しました。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]8

4.7. 命令実行ﾀｲﾐﾝｸﾞ
本項は命令実行の一般的なｱｸｾｽ ﾀｲﾐﾝｸﾞの概念を記述します。AVR CPUはﾁｯﾌﾟ(ﾃﾞﾊﾞｲｽ)用に選択したｸﾛｯｸ元から直接的に生成したCPUｸﾛｯｸ(clkCPU)によって駆動されます。内部ｸﾛｯｸ分周は使われません。
図4-5.はﾊｰﾊﾞｰﾄﾞ構造と高速ｱｸｾｽ ﾚｼﾞｽﾀ
ﾌｧｲﾙの概念によって可能とされる並列の命令取得と命令実行を示します。これは機能対費用、機能対ｸﾛｯｸ、機能対電源部に関する好結果と対応するMHzあたり1MIPSを達成するための基本的なﾊﾟｲﾌﾟﾗｲﾝの概念です。
図4-6.はﾚｼﾞｽﾀ ﾌｧｲﾙに対する内部ﾀｲﾐﾝｸﾞの概念を示します。単一ｸﾛｯｸ周期で2つのﾚｼﾞｽﾀ ｵﾍﾟﾗﾝﾄﾞを使うALU操作が実行され、その結果が転送先ﾚｼﾞｽﾀへ書き戻されます。

図4-5. 命令の取得と実行の並列動作
T1

T2

T3

T4

T1

T2

T3

T4

CPUｸﾛｯｸ clkCPU
初回命令取得
初回命令実行/第2命令取得
第2命令実行/第3命令取得
第3命令実行/第4命令取得
図4-6. 1周期ALU命令
CPUｸﾛｯｸ clkCPU
総合実行時間ﾚｼﾞｽﾀ ｵﾍﾟﾗﾝﾄﾞ取得
ALU演算実行
結果書き戻し4.8. ﾘｾｯﾄと割り込みの扱い
AVRは多くの異なる割り込み元を提供します。これらの割り込みと独立したﾘｾｯﾄ ﾍﾞｸﾀ各々はﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ空間内に独立したﾌﾟﾛｸﾞﾗﾑ
ﾍﾞｸﾀを持ちます。全ての割り込みは割り込みを許可するために、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄと共に論理1が書かれなければならない個別の許可ﾋﾞｯﾄを割り当てられます。BLB02またはBLB12 ﾌﾞｰﾄ施錠ﾋﾞｯﾄがﾌﾟﾛｸﾞﾗﾑ(0)されると、ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ値
によっては割り込みが自動的に禁止されるかもしれません。この特質はｿﾌﾄｳｪｱ保護を改善します。詳細については226頁の「ﾒﾓﾘ ﾌﾟ
ﾛｸﾞﾗﾐﾝｸﾞ」章をご覧ください。
既定でのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ空間の最下位ｱﾄﾞﾚｽはﾘｾｯﾄと割り込みのﾍﾞｸﾀとして定義されます。ﾍﾞｸﾀの完全な一覧は36頁の「割り込み」で示されます。この一覧は各種割り込みの優先順位も決めます。下位側ｱﾄﾞﾚｽがより高い優先順位です。ﾘｾｯﾄが最高優先順位で次が外部割り込み要求0(INT0)です。割り込みﾍﾞｸﾀはMCU制御ﾚｼﾞｽﾀ(MCUCR)の割り込みﾍﾞｸﾀ選択(IVSEL)ﾋﾞｯﾄの設定(1)によってﾌﾞｰﾄ
ﾌﾗｯｼｭ領域先頭へ移動できます。より多くの情報については36頁の「割り込み」を参照してください。ﾘｾｯﾄ ﾍﾞｸﾀもBOOTRSTﾋｭｰｽﾞのﾌﾟﾛｸﾞﾗﾑ(0)によってﾌﾞｰﾄ ﾌﾗｯｼｭ領域先頭へ移動できます。215頁の「ﾌﾞｰﾄ ﾛｰﾀﾞ支援 - 書き込み中読み出し可能な自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ」
をご覧ください。
割り込みが起こると全割り込み許可(I)ﾋﾞｯﾄが解除(0)され、全ての割り込みは禁止されます。使用者ｿﾌﾄｳｪｱは多重割り込みを許可するため、全割り込み許可(I)ﾋﾞｯﾄへ論理1を書けます。その後全ての許可した割り込みが現在の割り込みﾙｰﾁﾝで割り込めます。全割り込み許可(I)ﾋﾞｯﾄは割り込みからの復帰(RETI)命令が実行されると、自動的に設定(1)されます。
根本的に2つの割り込み形式があります。1つ目の形式は割り込み要求ﾌﾗｸﾞを設定(I)する事象によって起動されます。これらの割り込
みでは割り込み処理ﾙｰﾁﾝを実行するために、ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀは対応する現実の割り込みﾍﾞｸﾀを指示し、ﾊｰﾄﾞｳｪｱが対応する割り込
み要求ﾌﾗｸﾞを解除(0)します。割り込み要求ﾌﾗｸﾞは解除(0)されるべきﾌﾗｸﾞのﾋﾞｯﾄ位置へ論理1を書くことによっても解除(0)できます。
対応する割り込み許可ﾋﾞｯﾄが解除(0)されている間に割り込み条件が起こると、割り込み要求ﾌﾗｸﾞが設定(1)され、割り込みが許可されるか、またはこのﾌﾗｸﾞがｿﾌﾄｳｪｱによって解除(0)されるまで記憶(保持)されます。同様に、全割り込み許可(I)ﾋﾞｯﾄが解除(0)されている間に1つまたはより多くの割り込み条件が起こると、対応する割り込み要求ﾌﾗｸﾞが設定(1)されて全割り込み許可(I)ﾋﾞｯﾄが設定(1)されるまで記憶され、その(I=1)後で優先順に従って実行されます。
2つ目の割り込み形式は割り込み条件が存在する限り起動し(続け)ます。これらの割り込みは必ずしも割り込み要求ﾌﾗｸﾞを持っているとは限りません。割り込みが許可される前に割り込み条件が消滅すると、この割り込みは起動されません。
AVRが割り込みから抜け出すと常に主ﾌﾟﾛｸﾞﾗﾑへ戻り、何れかの保留割り込みが扱われる前に1つ以上の命令を実行します。
ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)は割り込みﾙｰﾁﾝへ移行時の保存も、復帰時の回復も自動的に行われないことに注意してください。これはｿﾌﾄ
ｳｪｱによって扱われなければなりません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

9

割り込みを禁止するためにCLI命令を使うと、割り込みは直ちに禁止されます。CLI命令と同時に割り込みが起こっても、CLI命令後に割り込みは実行されません。次例は時間制限EEPROM書き込み手順中に割り込みを無効とするために、これがどう使えるかを示します。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
IN
R16,SREG
CLI
SBI
EECR,EEMPE
SBIEECR,EEPE
OUT
SREG,R16
C言語ﾌﾟﾛｸﾞﾗﾑ例
char cSREG;cSREG = SREG;__disable_interrupt();
EECR |= (1<<EEMPE);
EECR |= (1<<EEPE);
SREG = cSREG:;ｽﾃｰﾀｽ ﾚｼﾞｽﾀを保存;EEPROM書き込み手順中割り込み禁止;EEPROM主書き込み許可;EEPROM書き込み開始;ｽﾃｰﾀｽ ﾚｼﾞｽﾀを復帰/* ｽﾃｰﾀｽ ﾚｼﾞｽﾀ保存変数定義 *//* ｽﾃｰﾀｽ ﾚｼﾞｽﾀを保存 *//* EEPROM書き込み手順中割り込み禁止 *//* EEPROM主書き込み許可 *//* EEPROM書き込み開始 *//* ｽﾃｰﾀｽ ﾚｼﾞｽﾀを復帰 */割り込みを許可するためにSEI命令を使うと、次例で示されるようにどの保留割り込みにも先立ってSEI命令の次の命令が実行されます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
SEI
SLEEP
C言語ﾌﾟﾛｸﾞﾗﾑ例__enable_interrupt();__sleep();;全割り込み許可;休止形態移行 (割り込み待ち)/* 全割り込み許可 *//* 休止形態移行 (割り込み待ち) */注: SLEEP命令までは割り込み禁止、保留割り込み実行前に休止形態へ移行します。

4.8.1. 割り込み応答時間
許可した全てのAVR割り込みに対する割り込み実行応答は最小4ｸﾛｯｸ周期です。4ｸﾛｯｸ周期後、実際の割り込み処理ﾙｰﾁﾝに対するﾌﾟﾛｸﾞﾗﾑ ﾍﾞｸﾀ ｱﾄﾞﾚｽが実行されます。この4ｸﾛｯｸ周期時間中にﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ(PC)がｽﾀｯｸ上に保存(ﾌﾟｯｼｭ)されます。このﾍﾞｸﾀは標準的に割り込み処理ﾙｰﾁﾝへの無条件分岐で、この分岐は3ｸﾛｯｸ周期要します。複数周期命令実行中に割り込みが起こると、その割り込みが扱われる前に、この命令が完了されます。MCUが休止形態の時に割り込みが起こると、割り込み実行応答時間は4ｸﾛｯ
ｸ周期増やされます。この増加は選択した休止形態からの起動時間に加えてです。
割り込み処理ﾙｰﾁﾝからの復帰は4ｸﾛｯｸ周期要します。これらの4ｸﾛｯｸ周期中、ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ(PC:2ﾊﾞｲﾄ)がｽﾀｯｸから取り戻され(ﾎﾟｯﾌﾟ)、ｽﾀｯｸ ﾎﾟｲﾝﾀは増加され(+2)、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

105. AVRのﾒﾓﾘ
この項は本ﾃﾞﾊﾞｲｽの各種ﾒﾓﾘを記述します。AVR構造にはﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ空間とﾃﾞｰﾀ ﾒﾓﾘ空間の2つの主なﾒﾓﾘ空間があります。加えて本ﾃﾞﾊﾞｲｽはﾃﾞｰﾀ保存用EEPROMﾒﾓﾘが特徴です。3つのﾒﾓﾘ空間全ては一般的な直線的ｱﾄﾞﾚｽです。
表5-1. ﾒﾓﾘ割付
ﾒﾓﾘ種別
ﾌﾗｯｼｭ ﾒﾓﾘ

汎用ﾚｼﾞｽﾀ(標準)I/Oﾚｼﾞｽﾀ

拡張I/Oﾚｼﾞｽﾀ

内蔵SRAM

外部ﾒﾓﾘ

内蔵EEPROM

容量
開始ｱﾄﾞﾚｽ
終了ｱﾄﾞﾚｽ
容量開始ｱﾄﾞﾚｽ
終了ｱﾄﾞﾚｽ
容量開始ｱﾄﾞﾚｽ
終了ｱﾄﾞﾚｽ
容量開始ｱﾄﾞﾚｽ
終了ｱﾄﾞﾚｽ
容量開始ｱﾄﾞﾚｽ
終了ｱﾄﾞﾚｽ
容量開始ｱﾄﾞﾚｽ
終了ｱﾄﾞﾚｽ
容量開始ｱﾄﾞﾚｽ
終了ｱﾄﾞﾚｽ

ﾆｰﾓﾆｯｸFlash size
Flash end
ISRAM size
ISRAM start
ISRAM end
XMem size
XMem start
XMem end
E2 sizeE2 endATmega16U4
16Kﾊﾞｲﾄ

ATmega32U4
32Kﾊﾞｲﾄ$00000$3FFF(注1)/$1FFF(注2)$7FFF(注1)/$3FFF(注2)32ﾊﾞｲﾄ$0000$001F
64ﾊﾞｲﾄ$0020$005F
160ﾊﾞｲﾄ$0060$00FF
1.25Kﾊﾞｲﾄ
2.5Kﾊﾞｲﾄ
$0100
$05FF
$0AFF
(存在しません。)
512ﾊﾞｲﾄ

1Kﾊﾞｲﾄ
$0000

$01FF

$03FF

注1: ﾊﾞｲﾄ ｱﾄﾞﾚｽです。
注2: 語(ﾜｰﾄﾞ=16ﾋﾞｯﾄ)ｱﾄﾞﾚｽです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

11

5.1. 実装書き換え(ISP: In-System Program)可能なﾌﾟﾛｸﾞﾗﾑ用ﾌﾗｯｼｭ ﾒﾓﾘ
本ﾃﾞﾊﾞｲｽはﾌﾟﾛｸﾞﾗﾑ保存用に実装書き換え可能な16/32Kﾊﾞｲﾄのﾌﾗｯｼｭ ﾒﾓﾘをﾁｯﾌﾟ上に含みます。全てのAVR命令が16または32ﾋﾞｯﾄ幅のため、このﾌﾗｯｼｭ ﾒﾓﾘは8/16K×16ﾋﾞｯﾄとして構成されます。ｿﾌﾄｳｪｱ保護のため、ﾌﾗｯｼｭ ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ空間はﾌﾞｰﾄ ﾌﾟﾛｸﾞﾗ
ﾑ領域と応用ﾌﾟﾛｸﾞﾗﾑ領域の2つに分けられます。
ﾌﾗｯｼｭ ﾒﾓﾘは最低100,000回の消去/書き込み回数耐久性があります。本ﾃﾞﾊﾞｲｽのﾌﾟﾛｸﾞﾗﾑ ｶ 図5-1. ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ配置図
ｳﾝﾀ(PC)は13/14ﾋﾞｯﾄ幅で、故に8/16Kﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ位置のｱﾄﾞﾚｽ指定です。ﾌﾞｰﾄ ﾌﾟﾛｸﾞﾗﾑ領$0000
域の操作と関係するｿﾌﾄｳｪｱ保護用ﾌﾞｰﾄ施錠ﾋﾞｯﾄは215頁の「ﾌﾞｰﾄ ﾛｰﾀﾞ支援 - 書き込み中読み出し可能な自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ」の詳細で記述されます。226頁の「ﾒﾓﾘ ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ」はSPI、JTA
応用ﾌﾟﾛｸﾞﾗﾑ用G、並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作でのﾌﾗｯｼｭ ﾒﾓﾘ ﾌﾟﾛｸﾞﾗﾐﾝｸﾞの詳細な記述を含みます。
ﾌﾗｯｼｭ ﾒﾓﾘ
定数表は全てのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ ｱﾄﾞﾚｽ空間に配置できます。(LPM命令記述参照)
命令の取得と実行のﾀｲﾐﾝｸﾞ図は9頁の「命令実行ﾀｲﾐﾝｸﾞ」で示されます。
ﾌﾞｰﾄ ﾌﾟﾛｸﾞﾗﾑ用
ﾌﾗｯｼｭ ﾒﾓﾘ
$1FFF/$3FFF

5.2. ﾃﾞｰﾀ用SRAM ﾒﾓﾘ
図5-2.は本ﾃﾞﾊﾞｲｽのSRAMﾒﾓﾘ構成方法を示します。
図5-2. ﾃﾞｰﾀ空間とSRAMの配置
本ﾃﾞﾊﾞｲｽはINやOUT命令で予約した64位置で支援されるより多くの周ｱﾄﾞﾚｽ
辺機能部を持つ複合ﾏｲｸﾛ ｺﾝﾄﾛｰﾗです。SRAM(ﾃﾞｰﾀ空間)内$60～$0000
R0
ﾚｼﾞｽﾀ ﾌｧｲﾙ～～
$FFの拡張I/O空間に対してLD/LDS/LDDとST/STS/STD命令だけが(32×8)
$001F
R31
使えます。
$00
$0020
I/O ﾚｼﾞｽﾀ
下位1536/2816ﾃﾞｰﾀ ﾒﾓﾘ位置はﾚｼﾞｽﾀ ﾌｧｲﾙ、I/Oﾒﾓﾘ、拡張I/Oﾒﾓﾘ、～～(64×8)
ﾃﾞｰﾀ用内蔵SRAMに充てます。先頭の32位置はﾚｼﾞｽﾀ ﾌｧｲﾙ、次の64
$3F
$005F
位置は標準I/Oﾒﾓﾘ、その次の160位置は拡張I/Oﾒﾓﾘ、そして次の
$0060
$0060
拡張I/O ﾚｼﾞｽﾀ～～
1280/2560位置はﾃﾞｰﾀ用内蔵SRAMに充てます。
(160×8)$00FF$00FF
直接、間接、変位付き間接、事前減少付き間接、事後増加付き間接の
$0100
$0100
内蔵 SRAM
5つの異なるｱﾄﾞﾚｽ指定種別でﾃﾞｰﾀ ﾒﾓﾘ(空間)を網羅します。ﾚｼﾞｽﾀ ﾌｧ～～(1280/2560×8)$05FF/$0AFF $05FF/$0AFF
ｲﾙ内のﾚｼﾞｽﾀR26～R31は間接ｱﾄﾞﾚｽ指定ﾎﾟｲﾝﾀ用ﾚｼﾞｽﾀが特徴です。
直接ｱﾄﾞﾚｽ指定はﾃﾞｰﾀ空間全体に届きます。
注: 赤字はI/Oｱﾄﾞﾚｽ
変位付き間接動作はYまたはZﾚｼﾞｽﾀで与えられる基準ｱﾄﾞﾚｽからの63ｱ
ﾄﾞﾚｽ位置に届きます。
自動の事前減少付きと事後増加付きのﾚｼﾞｽﾀ間接ｱﾄﾞﾚｽ指定動作を使う時に(使われる)X,Y,Zｱﾄﾞﾚｽ ﾚｼﾞｽﾀは減少(-1)または増加(+1)されます。
本ﾃﾞﾊﾞｲｽの32個の汎用ﾚｼﾞｽﾀ、64個のI/Oﾚｼﾞｽﾀ、160個の拡張I/Oﾚｼﾞｽﾀ、1.25K(1280)/2.5K(2560)ﾊﾞｲﾄのﾃﾞｰﾀ用内蔵SRAMはこ
れら全てのｱﾄﾞﾚｽ指定種別を通して全部ｱｸｾｽできます。ﾚｼﾞｽﾀ ﾌｧｲﾙは8頁の「汎用ﾚｼﾞｽﾀ ﾌｧｲﾙ」で記述されます。

5.2.1. ﾃﾞｰﾀ ﾒﾓﾘ ｱｸｾｽ ﾀｲﾐﾝｸﾞ
この項は内部ﾒﾓﾘ ｱｸｾｽに対する一般的なｱｸｾｽ ﾀｲﾐﾝｸﾞの概念を記述します。ﾃﾞｰﾀ用内蔵SRAMｱｸｾｽは図5-3.で記載されるように2clkCPU周期で実行されます。
(訳注) 内蔵SRAMのｱｸｾｽを含む代表的な命令はT1,T2の2周期で実行され、T1で対象ｱﾄﾞﾚｽを取得/(算出)/
確定し、T2で実際のｱｸｾｽが行われます。後続する(T1)は次の命令のT1です。

図5-3. ﾃﾞｰﾀ用内蔵SRAMｱｸｾｽ周期
T1

T2

直前のｱﾄﾞﾚｽ

有効ｱﾄﾞﾚｽ(T1)

CPUｸﾛｯｸ clkCPU
ｱﾄﾞﾚｽ
書き込み
読み込み

ﾃﾞｰﾀ
WR
ﾃﾞｰﾀ
RD

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

12

5.3. ﾃﾞｰﾀ用EEPROMﾒﾓﾘ
本ﾃﾞﾊﾞｲｽは512/1Kﾊﾞｲﾄのﾃﾞｰﾀ用EEPROMを含みます。それは単一ﾊﾞｲﾄが読み書きできる分離したﾃﾞｰﾀ空間として構成されます。
EEPROMは最低100,000回の消去/書き込み回数の耐久性があります。CPUとEEPROM間のｱｸｾｽは以降のEEPROMｱﾄﾞﾚｽ ﾚｼﾞｽﾀ、
EEPROMﾃﾞｰﾀ ﾚｼﾞｽﾀ、EEPROM制御ﾚｼﾞｽﾀで詳細に記述されます。
EEPROMのSPI、JTAG、並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞの詳細記述については各々238頁、241頁、229頁をご覧ください。

5.3.1. EEPROMｱｸｾｽ
EEPROMｱｸｾｽ ﾚｼﾞｽﾀはI/O空間でｱｸｾｽ可能です。
EEPROMの書き込み(訳注:原文はｱｸｾｽ)時間は14頁の表5-2.で与えられます。(書き込みは)自己ﾀｲﾐﾝｸﾞ機能ですが、使用者ｿﾌﾄｳｪ
ｱは次ﾊﾞｲﾄが書ける時を検知してください。使用者ｺｰﾄﾞがEEPROMに書く命令を含む場合、いくつかの予防処置が取られなければなりません。厳重に濾波した電源では電源投入/切断でVCCが緩やかに上昇または下降しそうです。これはﾃﾞﾊﾞｲｽが何周期かの時間、使われるｸﾛｯｸ周波数に於いて最小として示されるより低い電圧で走行する原因になります。これらの状態で問題を避ける方法の詳細については15頁の「EEPROMﾃﾞｰﾀ化けの防止」をご覧ください。
予期せぬEEPROM書き込みを防止するため、特別な書き込み手順に従わなければなりません。この詳細については「EEPROM制御
ﾚｼﾞｽﾀ」の記述を参照してください。
EEPROMが読まれると、CPUは次の命令が実行される前に4ｸﾛｯｸ周期停止されます。EEPROMが書かれると、CPUは次の命令が実行される前に2ｸﾛｯｸ周期停止されます。

5.3.2. EEARH,EEARL (EEAR) - EEPROMｱﾄﾞﾚｽ ﾚｼﾞｽﾀ (EEPROM Address Register)ﾋﾞｯﾄ$22 ($42)
Read/Write
初期値
ﾋﾞｯﾄ$21 ($41)
Read/Write
初期値

15

14

13

12

11

10

9

8

-

-

-

-

-

-

(EEAR9)

EEAR8

R
0

R
0

R
0

R
0

R
0

R
0

R/W
不定

R/W
不定

7

6

5

4

3

2

1

0

EEAR7

EEAR6

EEAR5

EEAR4

EEAR3

EEAR2

EEAR1

EEAR0

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

EEARH

EEARL

● ﾋﾞｯﾄ15～10 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ9～0 - EEAR9～0 : EEPROMｱﾄﾞﾚｽ (EEPROM Address)

EEPROMｱﾄﾞﾚｽ ﾚｼﾞｽﾀ(EEARHとEEARL)は512/1KﾊﾞｲﾄEEPROM空間のEEPROMｱﾄﾞﾚｽを指定します。EEPROMﾃﾞｰﾀ ﾊﾞｲﾄは0～511/1023間で直線的に配されます。EEARの初期値は不定です。EEPROMがｱｸｾｽされるであろう前に適切な値が書かれなければなりません。

5.3.3. EEDR - EEPROMﾃﾞｰﾀ ﾚｼﾞｽﾀ (EEPROM Data Register)ﾋﾞｯﾄ$20 ($40)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

EEDR

R/W
0

● ﾋﾞｯﾄ7～0 - EEDR7～0 : EEPROMﾃﾞｰﾀ (EEPROM Data)

EEPROM書き込み操作に対してEEDRはEEPROMｱﾄﾞﾚｽ ﾚｼﾞｽﾀ(EEAR)で与えたｱﾄﾞﾚｽのEEPROMへ書かれるべきﾃﾞｰﾀを含みます。
EEPROM読み込み操作に対してEEDRはEEARで与えたｱﾄﾞﾚｽのEEPROMから読み出したﾃﾞｰﾀを含みます。

5.3.4. EECR - EEPROM制御ﾚｼﾞｽﾀ (EEPROM Control Register)ﾋﾞｯﾄ$1F ($3F)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

EEPM1

EEPM0

EERIE

EEMPE

EEPE

EERE

R
0

R
0

R/W
不定

R/W
不定

R/W
0

R/W
0

R/W
不定

R/W
0

EECR

● ﾋﾞｯﾄ7,6 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]13

● ﾋﾞｯﾄ5,4 - EEPM1,0 : EEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ種別 (EEPROM Programing Mode Bits)

EEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ種別ﾋﾞｯﾄ設定はEEPROMﾌﾟﾛ 表5-2. EEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ種別
ｸﾞﾗﾐﾝｸﾞ許可(EEPE)書き込み時にどのﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
EEPM1 EEPM0 ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ時間
動作
動作が起動されるかを定義します。1つの非分離
0
0
3.4ms
1操作での消去と書き込み(非分離操作)
操作(旧値消去と新値書き込み)、または2つの異な
0
1
1.8ms
消去のみ
る操作として消去と書き込み操作を分離してﾃﾞｰﾀをﾌﾟﾛｸﾞﾗﾑする(書く)ことが可能です。各動作に対
1
0
1.8ms
書き込みのみするﾌﾟﾛｸﾞﾗﾐﾝｸﾞ時間は表5-2.で示されます。EEPE
1
1
将来使用に予約が設定(1)されている間はEEPMnへのどの書き込みも無視されます。ﾘｾｯﾄ中、EEPMnﾋﾞｯﾄはEEPROMがﾌﾟﾛｸﾞﾗﾐﾝｸﾞ作業中を除いて'00'にﾘｾｯﾄされます。
● ﾋﾞｯﾄ3 - EERIE : EEPROM操作可割り込み許可 (EEPROM Ready Interrupt Enable)

EERIEの1書き込みはｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されているなら、EEPROM操作可割り込みを許可します。EERIEの0書き込みは、この割り込みを禁止します。EEPROM操作可割り込みはEEPROMﾌﾟﾛｸﾞﾗﾑ許可(EEPE)が解除(0)されていると、継続する割り込みを発生します。
● ﾋﾞｯﾄ2 - EEMPE : EEPROM主ﾌﾟﾛｸﾞﾗﾑ許可 (EEPROM Master Program Enable)

EEMPEﾋﾞｯﾄはEEPROMﾌﾟﾛｸﾞﾗﾑ許可(EEPE)ﾋﾞｯﾄの1書き込みが有効か無効かどちらかを決めます。EEMPEが設定(1)されると、4ｸﾛｯ
ｸ周期内のEEPE設定(1)は選択したｱﾄﾞﾚｽのEEPROMをﾌﾟﾛｸﾞﾗﾑします。EEMPEが0なら、EEPE設定(1)は無効です。EEMPEがｿﾌﾄｳｪ
ｱによって設定(1)されてしまうと、4ｸﾛｯｸ周期後にﾊｰﾄﾞｳｪｱがこのﾋﾞｯﾄを0に解除します。EEPROM書き込み手順については次のEEPE記述をご覧ください。
● ﾋﾞｯﾄ1 - EEPE : EEPROMﾌﾟﾛｸﾞﾗﾑ許可 (EEPROM Program Enable)

EEPROMﾌﾟﾛｸﾞﾗﾑ許可信号(EEPE)はEEPROMへのﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可信号です。EEPEが(1を)書かれると、EEPROMはEEPMnﾋﾞｯﾄ設定に従ってﾌﾟﾛｸﾞﾗﾑされます。論理1がEEPEへ書かれる前にEEPROM主ﾌﾟﾛｸﾞﾗﾑ許可(EEMPE)ﾋﾞｯﾄは1を書かれなければならず、さもな
ければEEPROM書き込み(消去)は行われません。EEPROMを書くとき、次の手順に従うべきです(手順3.と4.の順番は重要ではありません)。
1. EEPROMﾌﾟﾛｸﾞﾗﾑ許可(EEPE)ﾋﾞｯﾄが0になるまで待ちます。
2. SPM制御/状態ﾚｼﾞｽﾀ(SPMCSR)のSPM操作許可(SPMEN)ﾋﾞｯﾄが0になるまで待ちます。
3. 今回のEEPROMｱﾄﾞﾚｽをEEPROMｱﾄﾞﾚｽ ﾚｼﾞｽﾀ(EEAR)に書きます。(任意、省略可)
4. 今回のEEPROMﾃﾞｰﾀをEEPROMﾃﾞｰﾀ ﾚｼﾞｽﾀ(EEDR)に書きます。(任意、省略可)
5. EEPROM制御ﾚｼﾞｽﾀ(EECR)のEEPROM主ﾌﾟﾛｸﾞﾗﾑ許可(EEMPE)ﾋﾞｯﾄに1を、EEPROMﾌﾟﾛｸﾞﾗﾑ許可(EEPE)ﾋﾞｯﾄに0を同時に書きます。
6. EEMPEﾋﾞｯﾄ設定後4ｸﾛｯｸ周期内にEEPROMﾌﾟﾛｸﾞﾗﾑ許可(EEPE)ﾋﾞｯﾄへ論理1を書きます。
CPUがﾌﾗｯｼｭ ﾒﾓﾘ書き込み中、EEPROMはﾌﾟﾛｸﾞﾗﾑ(書き込みが)できません。ｿﾌﾄｳｪｱは新規EEPROM書き込みを始める前にﾌﾗｯｼｭ ﾒﾓﾘのﾌﾟﾛｸﾞﾗﾐﾝｸﾞが完了されていることを検査しなければなりません。2.はｿﾌﾄｳｪｱがﾌﾗｯｼｭ ﾒﾓﾘをﾌﾟﾛｸﾞﾗﾑ(書き込みを)することをCPUに許すﾌﾞｰﾄ ﾛｰﾀﾞを含む場合だけ関係します。ﾌﾗｯｼｭ ﾒﾓﾘが決してCPUによって更新されないなら、2.は省略できます。ﾌﾞｰﾄ ﾌﾟ
ﾛｸﾞﾗﾐﾝｸﾞについての詳細に関しては215頁の「ﾌﾞｰﾄ ﾛｰﾀﾞ支援 - 書き込み中読み出し可能な自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ」をご覧ください。
警告: 手順5.と6.間の割り込みはEEPROM主ﾌﾟﾛｸﾞﾗﾑ許可が時間超過するため、書き込み周期失敗になります。EEPROMをｱｸｾｽする割り込みﾙｰﾁﾝが他のEEPROMｱｸｾｽを中断し、EEARかEEDRが変更されると、中断したEEPROMｱｸｾｽを失敗させます。これらの問題を避けるため、全ての手順中、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄは解除(0)されていることが推奨されます。
書き込み(ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ)ｱｸｾｽ時間が経過されると、EEPROMﾌﾟﾛｸﾞﾗﾑ許可(EEPE)ﾋﾞｯﾄはﾊｰﾄﾞｳｪｱによって解除(0)されます。使用者ｿﾌﾄ
ｳｪｱは次ﾊﾞｲﾄを書く前にこのﾋﾞｯﾄをﾎﾟｰﾘﾝｸﾞし、0を待つことができます。EEPEが設定(1)されてしまうと、次の命令が実行される前にCPUは2周期停止されます。
● ﾋﾞｯﾄ0 - EERE : EEPROM読み込み許可 (EEPROM Read Enable)

EEPROM読み込み許可信号(EERE)はEEPROMへの読み込みｽﾄﾛｰﾌﾞです。EEARに正しいｱﾄﾞﾚｽが設定されると、EEPROM読み出しを起動するためにEEREﾋﾞｯﾄは1を書かれなければなりません。EEPROM読み出しｱｸｾｽは(その)1命令で行われ、要求したﾃﾞｰﾀは直ちに利用できます。EEPROMが読まれるとき、次の命令が実行される前にCPUは4周期停止されます。
使用者は読み込み操作を始める前にEEPEﾋﾞｯﾄをﾎﾟｰﾘﾝｸﾞすべきです。書き込み(ﾌﾟﾛｸﾞﾗﾑ)操作実行中の場合、EEPROMｱﾄﾞﾚｽ ﾚｼﾞ
ｽﾀ(EEAR)の変更もEEPROM読み込みもできません。
EEPROMｱｸｾｽの時間に校正済み内蔵RC発振器が使われます。右表はCPUからのEEPROMｱｸｾｽに対する代表的な書き込み時間を示します。

表5-3. EEPROM書き込み時間
校正付き内蔵RC
項目
発振器周期数
26,368EEPROM書き込み(CPU)

Typ
3.3ms

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

14

次のｺｰﾄﾞ例はｱｾﾝﾌﾞﾘ言語とC言語でのEEPROM消去、書き込み、または非分離書き込み関数を示します。本例は(例えば全割り込み禁止によって)割り込みが制御され、これらの関数実行中に割り込みが起きない前提です。本例はｿﾌﾄｳｪｱ内にﾌﾗｯｼｭ ﾌﾞｰﾄ ﾛｰﾀﾞが無い前提でもあります。そのようなｺｰﾄﾞが存在する場合、EEPROM書き込み関数は何れかが実行するSPM命令の完了も待たねばなりません。 (訳注:共通性から次例は補足修正しています。)
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
EEPROM_WR: SBIC
EECR,EEPE;EEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ完了ならばｽｷｯﾌﾟ
RJMP
EEPROM_WR;以前のEEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ完了まで待機;
LDI
R19,(0<<EEPM1)|(0<<EEPM0);ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ種別値取得(本例は非分離)
OUT
EECR,R19;対応ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ種別設定
OUT
EEARH,R18;EEPROMｱﾄﾞﾚｽ上位ﾊﾞｲﾄ設定
OUT
EEARL,R17;EEPROMｱﾄﾞﾚｽ下位ﾊﾞｲﾄ設定
OUT
EEDR,R16;EEPROM書き込み値を設定
SBI
EECR,EEMPE;EEPROM主ﾌﾟﾛｸﾞﾗﾑ許可ﾋﾞｯﾄ設定
SBI
EECR,EEPE;EEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ開始(ﾌﾟﾛｸﾞﾗﾑ許可ﾋﾞｯﾄ設定)
RET;呼び出し元へ復帰
C言語ﾌﾟﾛｸﾞﾗﾑ例
void EEPROM_write(unsigned int uiAddress, unsigned char ucData){
while(EECR & (1<<EEPE));/* 以前のEEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ完了まで待機 */EECR = (0<<EEPM1)|(0<<EEPM0);/* 対応ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ種別設定 */EEAR = uiAddress;/* EEPROMｱﾄﾞﾚｽ設定 */EEDR = ucData;/* EEPROM書き込み値を設定 */EECR |= (1<<EEMPE);/* EEPROM主ﾌﾟﾛｸﾞﾗﾑ許可 */EECR |= (1<<EEPE);/* EEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ開始 */}注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
次のｺｰﾄﾞ例はｱｾﾝﾌﾞﾘ言語とC言語でのEEPROM読み込み関数を示します。本例は割り込みが制御され、これらの関数実行中に割り込みが起きない前提です。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
EEPROM_RD: SBIC
EECR,EEPERJMP
EEPROM_RD;
OUT
EEARH,R18
OUT
EEARL,R17
SBI
EECR,EERE
IN
R16,EEDRRET
C言語ﾌﾟﾛｸﾞﾗﾑ例
unsigned char EEPROM_read(unsigned int uiAddress){
while(EECR & (1<<EEPE));EEAR = uiAddress;
EECR |= (1<<EERE);
return EEDR;};EEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ完了ならばｽｷｯﾌﾟ;以前のEEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ完了まで待機;EEPROMｱﾄﾞﾚｽ上位ﾊﾞｲﾄ設定;EEPROMｱﾄﾞﾚｽ下位ﾊﾞｲﾄ設定;EEPROM読み出し開始(読み込み許可ﾋﾞｯﾄ設定);EEPROM読み出し値を取得;呼び出し元へ復帰/* 以前のEEPROMﾌﾟﾛｸﾞﾗﾐﾝｸﾞ完了まで待機 *//* EEPROMｱﾄﾞﾚｽ設定 *//* EEPROM読み出し開始 *//* EEPROM読み出し値を取得,復帰 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。

5.3.5. EEPROMﾃﾞｰﾀ化けの防止
低VCCの期間中、正しく動作するための供給電圧がCPUとEEPROMに対して低すぎるためにEEPROMﾃﾞｰﾀが化け得ます。これらの問題はEEPROMを使う基板段階の装置と同じで、同じ設計上の解決策が適用されるべきです。
EEPROMﾃﾞｰﾀ化けは電圧が低すぎる時の2つの状態によって起こされ得ます。1つ目として、EEPROMへの通常の書き込み手順は正しく動作するための最低電圧が必要です。2つ目として、供給電圧が低すぎると、CPU自身が命令を間違って実行し得ます。
EEPROMﾃﾞｰﾀ化けは次の推奨設計によって容易に避けられます。
不充分な供給電源電圧の期間中、AVRのRESETを活性(Low)に保ってください。これは内蔵低電圧検出器(BOD)を許可することによって行えます。内蔵BODの検出電圧が必要とした検出電圧と一致しない場合、外部低VCCﾘｾｯﾄ保護回路が使えます。書き込み
動作実行中にﾘｾｯﾄが起こると、この書き込み操作は供給電源電圧が充分ならば(継続)完了されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

15

5.4. I/O ﾒﾓﾘ (ﾚｼﾞｽﾀ)
本ﾃﾞﾊﾞｲｽのI/O空間定義は269頁の「ﾚｼﾞｽﾀ要約」で示されます。
全てのI/Oと周辺機能はI/O空間に配置されます。全てのI/O位置はI/O空間と32個の汎用作業ﾚｼﾞｽﾀ間のﾃﾞｰﾀ転送を行うLD/LDS/LDD命令とST/STS/STD命令によってｱｸｾｽされます。ｱﾄﾞﾚｽ範囲$00～$1F内のI/OﾚｼﾞｽﾀはSBI命令とCBI命令の使用で直接的にﾋﾞｯﾄ ｱｸｾｽ可能です。これらのﾚｼﾞｽﾀではSBISとSBIC命令の使用によって単一ﾋﾞｯﾄ値が検査できます。より多くの詳細については「命令要約」章を参照してください。I/O指定命令INとOUTを使う時はI/Oｱﾄﾞﾚｽ$00～$3Fが使われなければなりません。LD命令とST命令を使い、ﾃﾞｰﾀ空間としてI/Oﾚｼﾞｽﾀをｱｸｾｽする時はこれらのｱﾄﾞﾚｽに$20が加算されなければなりません。
本ﾃﾞﾊﾞｲｽはINやOUT命令で予約された64位置で支援されるより多くの周辺機能部を持つ複合ﾏｲｸﾛ ｺﾝﾄﾛｰﾗです。SRAM(ﾃﾞｰﾀ空間)内$60～$0FFの拡張I/O領域に対してはLD/LDS/LDDとST/STS/STD命令だけが使えます。
将来のﾃﾞﾊﾞｲｽとの共通性を保つため、ｱｸｾｽされる場合、予約ﾋﾞｯﾄは0が書かれるべきです。予約済みI/Oﾒﾓﾘ ｱﾄﾞﾚｽは決して書かれるべきではありません。
状態ﾌﾗｸﾞのいくつかはそれらへ論理1を書くことによって解除(0)されます。CBIとSBI命令は他の多くのAVRの様ではなく、指定ﾋﾞｯﾄだけを操作し、従って状態ﾌﾗｸﾞのようなものを含むﾚｼﾞｽﾀに使えることに注意してください。CBIとSBI命令は(I/Oｱﾄﾞﾚｽ)$00～$1Fのﾚｼﾞ
ｽﾀでのみ動作します。
I/Oと周辺制御ﾚｼﾞｽﾀは以降の項で説明されます。

5.4.1. 汎用I/Oﾚｼﾞｽﾀ本ﾃﾞﾊﾞｲｽは3つの汎用I/Oﾚｼﾞｽﾀを含みます。これらのﾚｼﾞｽﾀはどの情報の格納にも使え、特に全体変数や状態ﾌﾗｸﾞの格納に有用です。(I/O)ｱﾄﾞﾚｽ範囲$00～$1Fの汎用I/OﾚｼﾞｽﾀはSBI,CBI,SBIS,SBIC命令の使用で直接ﾋﾞｯﾄ ｱｸｾｽが可能です。

5.4.2. GPIOR2 - 汎用I/Oﾚｼﾞｽﾀ2 (General Purpose I/O Register 2)
ﾋﾞｯﾄ$2B ($4B)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

2

1

GPIOR2R/W
0

5.4.3. GPIOR1 - 汎用I/Oﾚｼﾞｽﾀ1 (General Purpose I/O Register 1)
ﾋﾞｯﾄ$2A ($4A)
Read/Write
初期値

7

6

5

4

3

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

2

1

GPIOR1

R/W
0

5.4.4. GPIOR0 - 汎用I/Oﾚｼﾞｽﾀ0 (General Purpose I/O Register 0)
ﾋﾞｯﾄ$1E ($3E)
Read/Write
初期値

7

6

5

4

3

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

GPIOR0R/W
0ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

16

6. ｼｽﾃﾑ ｸﾛｯｸとｸﾛｯｸ選択
6.1. ｸﾛｯｸ系統とその配給
図6-1.はAVR内の主要なｸﾛｯｸ系統とその配給を示します。全てのｸﾛｯｸが与えられた時間有効である必要はありません。消費電力低減のために、26頁の「電力管理と休止形態」で記述される各種休止形態の使用によって使われない部分のｸﾛｯｸを停止することができます。ｸﾛｯｸ系統は以下で詳細に示されます。
図6-1. ｸﾛｯｸの配給
非同期
ﾀｲﾏ/ｶｳﾝﾀ

USB

汎用入出力

A/D変換器clkADC

clkI/O
clkUSB(48MHz)

clkTMR

clkFLASH

ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ

ﾘｾｯﾄ回路clkPllﾌﾗｯｼｭ ﾒﾓﾘ
EEPROM

SRAM

clkCPU

AVRｸﾛｯｸ
制御回路

PLLｸﾛｯｸ後置分周器
ｸﾛｯｸ源
ｼｽﾃﾑ ｸﾛｯｸ前置分周器

PLL

clkPllPresc

clkPLLin(8MHz)
PLL入力
多重器

CPUｺｱ

PLLｸﾛｯｸ前置分周器

外部ｸﾛｯｸ信号

ｳｫｯﾁﾄﾞｯｸﾞ
ｸﾛｯｸ

ｳｫｯﾁﾄﾞｯｸﾞ用
内蔵RC発振器

ｸﾛｯｸ多重器
切り換え器

ｸﾘｽﾀﾙ用発振器

校正付き内蔵RC発振器

6.1.1. CPU ｸﾛｯｸ - clkCPU
CPUｸﾛｯｸはAVRｺｱの動作と関係する系統の部分に配給されます。このような部分の例は汎用ﾚｼﾞｽﾀ ﾌｧｲﾙ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ、ｽﾀｯｸ
ﾎﾟｲﾝﾀを保持するﾃﾞｰﾀ ﾒﾓﾘです。CPUｸﾛｯｸの停止はｺｱが一般的な操作や計算を実行することを禁止します。

6.1.2. I/O ｸﾛｯｸ - clkI/O
I/Oｸﾛｯｸはﾀｲﾏ/ｶｳﾝﾀ、SPI、USARTのようなI/O部の大部分で使われます。I/Oｸﾛｯｸは外部割り込み部でも使われますが、いくつかの外部割り込みは例えI/Oｸﾛｯｸが停止されても検出されることをこのような割り込みに許す非同期論理回路によって検出されることに注意してください。また、2線直列I/F(TWI)部のｱﾄﾞﾚｽ認証は全休止形態で取り扱われます。

6.1.3. ﾌﾗｯｼｭ ｸﾛｯｸ - clkFLASH
ﾌﾗｯｼｭ ｸﾛｯｸはﾌﾗｯｼｭ ﾒﾓﾘ ｲﾝﾀｰﾌｪｰｽの動作を制御します。このﾌﾗｯｼｭ ｸﾛｯｸは常にCPUｸﾛｯｸと同時に活動します。

6.1.4. A/D変換ｸﾛｯｸ - clkADC
A/D変換器には専用のｸﾛｯｸ範囲が提供されます。これはﾃﾞｼﾞﾀﾙ回路によって生成される雑音を低減するためにCPUとI/Oｸﾛｯｸの停止を許します。これはより正確なA/D変換結果を与えます。

6.1.5. PLL前置分周ｸﾛｯｸ - clkPllPresc
PLLは8MHz入力を必要とします。前置分周器は必要ならば2分周を使って、(ｸﾘｽﾀﾙまたは外部供給元から)8MHzまたは16MHzどち
らかの供給元の使用を使用者に許します。この前置分周器出力はｼｽﾃﾑ ｸﾛｯｸ多重器の出力または校正付き内蔵8MHz発振器の選択を使用者に許す、PLL入力多重器へ行きます。

6.1.6. PLL出力ｸﾛｯｸ - clkPll
許可時、PLLは32MHz～96MHzの多数の選択から1つの周波数を出力します。出力周波数はPLL周波数制御(PLLFRQ)ﾚｼﾞｽﾀによって決められます。この周波数は電源電圧と無関係です。PLL出力は共通のPLL信号から選択した分周比(1/1,1/1.5/1/2)の各々の結果で、2つの異なる周波数(clkUSBとclkTMR)生成を使用者に許す後置分周器に接続されます。

6.1.7. 高速ﾀｲﾏ ｸﾛｯｸ - clkTMR
許可時、32MHz～96MHzの多くの選択から、PLLは後置分周器へ行く1つの周波数を出力します。高速ﾀｲﾏ入力周波数は1/1,1/1.5,1/2の比率を目的とするPLL後置分周器によって生成されます。これはPLL周波数制御(PLLFRQ)ﾚｼﾞｽﾀで決めることができます。高速ﾀｲﾏ最大入力周波数は電源電圧に依存し、5Vで最大64MHzに達します。

6.1.8. USBｸﾛｯｸ - clkUSB
USBﾊｰﾄﾞｳｪｱ部は48MHzｸﾛｯｸを必要とします。このｸﾛｯｸはﾁｯﾌﾟ上のPLLから生成されます。PLLの出力はPLL後置分周器を通り、周波数は2分周または直接のどちらかでclkUSB信号へ接続できます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

17

6.2. ｸﾛｯｸ元
このﾃﾞﾊﾞｲｽには右で示されるようにﾌﾗｯｼｭ ﾋｭｰｽﾞ ﾋﾞｯﾄによって選択可能な後続のｸﾛｯｸ元選択があります。選択したｸﾛｯｸ
元からのｸﾛｯｸはAVRｸﾛｯｸ発生器への入力で、適切な単位部へ配給されます。

表6-1. ｸﾛｯｸ元選択
ｸﾛｯｸ元
CKSEL3～0またはEXCKSEL3～0
外部ｸﾘｽﾀﾙ低電力発振器
1111～1000(予約)
0111～0110
外部低周波数ｸﾘｽﾀﾙ発振器
0101～0100(予約)0011
校正付き内蔵RC発振器
0010
外部ｸﾛｯｸ信号
0000
(予約)
0001
注: 1=非ﾌﾟﾛｸﾞﾗﾑ、0=ﾌﾟﾛｸﾞﾗﾑ

6.2.1. 既定のｸﾛｯｸ元 (ATmega16U4とATmega32U4)
このﾃﾞﾊﾞｲｽはｸﾘｽﾀﾙ用低電力発振器(8MHz～16MHz)が許可で、CKDIV8ﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)され、結果として8MHzｸﾘｽﾀﾙで1.0M
Hzのｼｽﾃﾑ ｸﾛｯｸで出荷されます。既定ｸﾛｯｸ選択ﾋｭｰｽﾞ設定の概要については228頁の表28-5.をご覧ください。

6.2.2. 既定のｸﾛｯｸ元 (ATmega16U4RCとATmega32U4RC)
このﾃﾞﾊﾞｲｽは校正付き内蔵RC発振器(8MHz)が許可で、CKDIV8ﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)され、結果として1.0MHzのｼｽﾃﾑ ｸﾛｯｸで出荷されます。既定ｸﾛｯｸ選択ﾋｭｰｽﾞ設定の概要については227頁の表28-5.をご覧ください。

6.2.3. ｸﾛｯｸ起動手順
何れのｸﾛｯｸ元も発振を開始するための充分なVCCと、それが安定であると考 表6-2. WDT発振器の代表計時完了値、周期数
えられるのに先立つ、最低発振周期数が必要です。
VCC=3.0V
VCC=5.0V
周期数
充分なVCCを保証するため、その他全てのﾘｾｯﾄ元によってﾃﾞﾊﾞｲｽ ﾘｾｯﾄが開
0ms
0ms
0
放された後、ﾃﾞﾊﾞｲｽは起動遅延時間(tTOUT)の内部ﾘｾｯﾄを発生します。30頁
4.3ms
4.1ms
512
の「ｼｽﾃﾑ制御とﾘｾｯﾄ」はこの内部ﾘｾｯﾄに対する起動条件を記述します。この
69ms
65ms
8K
(8192)
遅延(tTOUT)はｳｫｯﾁﾄﾞｯｸﾞ発振器で計時され、遅延周期数はSUTとCKSELのﾋｭｰｽﾞによって設定されます。選択可能な遅延右表で示されます。この表で示されるようにｳｫｯﾁﾄﾞｯｸﾞ発振器の周波数は電圧に依存します。
遅延の主な目的はAVRが最小VCCを印加されるまでAVRをﾘｾｯﾄに保つことです。この遅延は実電圧を監視しませんので、VCC上昇
時間より長い遅延を選ぶことが必要とされるべきです。これが不可能な場合、内部または外部の低電圧検出回路(BOD)が使われるべきです。BOD回路がﾘｾｯﾄを開放する前に充分なVCCを保証するでしょうから、起動遅延時間は禁止され得ます。低電圧検出回路(BOD)なしでの起動遅延時間の禁止は推奨されません。
この発振器はｸﾛｯｸが安定と考えられるのに先立って最低ｸﾛｯｸ数を発振することを必要とされます。内部ﾘﾌﾟﾙ ｶｳﾝﾀは発振器の出力ｸﾛｯｸを監視し、与えられたｸﾛｯｸ周期数に対して内部ﾘｾｯﾄを活性(有効)に保ちます。このﾘｾｯﾄはその後に開放され、ﾃﾞﾊﾞｲｽが実行を開始します。推奨発振器起動時間はｸﾛｯｸ種別に依存し、外部的に印加されたｸﾛｯｸに対する6周期から、低周波数ｸﾘｽﾀﾙに対す
る32K周期まで変化します。
ｸﾛｯｸについての起動手順は計時完了遅延とﾃﾞﾊﾞｲｽがﾘｾｯﾄから起動する時の起動時間の両方を含みます。ﾊﾟﾜｰﾀﾞｳﾝまたはﾊﾟﾜｰ
ｾｰﾌﾞから起動するとき、VCCは充分な電圧であると認識され、起動時間だけが含められます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]18

6.3. ｸﾘｽﾀﾙ用低電力発振器
XTAL1とXTAL2は図6-2.で示されるようにﾁｯﾌﾟ上の発振器としての使用に設定できる反転増幅器の各々、入力と出力です。ｸﾘｽﾀﾙ
発振子またはｾﾗﾐｯｸ振動子のどちらでも使えます。
この発振器はXTAL2出力上の電圧振幅を減少した低電力発振器です。これは最低消費電力を与えますが、他のｸﾛｯｸ入力を駆動する能力はありません。
C1とC2はｸﾘｽﾀﾙ発振子とｾﾗﾐｯｸ振動子の両方について常に等しくすべきです。このｺﾝﾃﾞﾝｻの最適値は使うｸﾘｽﾀﾙ発振子やｾﾗﾐｯｸ
振動子、浮遊容量の量、その環境の電磁雑音に依存します。ｸﾘｽﾀﾙ発振子使用に対するｺﾝﾃﾞﾝｻ選択について初期の指針のいく
つかは下表で与えられます。ｾﾗﾐｯｸ振動子については製造業者によって与えられたｺﾝﾃﾞﾝｻ値が使われるべきです。
低電力発振器は示された周波数範囲で各々最適化された3つの異なる種別で動作できます。この動作種別はこの表で示されるようにCKSEL3～1ﾋｭｰｽﾞによって選択されます。
図6-2. ｸﾘｽﾀﾙ発振子接続図
C2
XTAL2
C1

XTAL1
GND

表6-3. ｸﾘｽﾀﾙ用低電力発振器動作種別
CKSEL3～1 周波数範囲 推奨C1,2容量 注: 周波数が仕様(VCC依存)超の場合、CKDIV8=0が可能ですが、分周後ｸﾛｯｸが仕様内であ100 (注1) 0.4～0.9MHzることを保証せねばなりません。
101
0.9～3.0MHz 12～22pF
注1: 本選択はｸﾘｽﾀﾙ発振子ではなく、ｾﾗﾐｯｸ振1103.0～8.0MHz 12～22pF
動子でのみ使われるべきです。
111
12～22pF
8.0～16MHzCKSEL0ﾋｭｰｽﾞはSUT1,0ﾋｭｰｽﾞと共に、この表で示されるように起動時間を選択します。
表6-4. ｸﾘｽﾀﾙ発振子/ｾﾗﾐｯｸ振動子用低電力発振器起動遅延時間選択表
ﾊﾟﾜｰﾀﾞｳﾝ, ﾊﾟﾜｰｾｰﾌﾞ ﾘｾｯﾄからの付加遅延
CKSEL0 SUT1,0
推奨使用法
からの起動遅延時間
時間 (VCC=5.0V)
258×CK (注1)
14×CK+4.1ms
00
外部ｾﾗﾐｯｸ振動子、高速上昇電源
14×CK+65ms
01
258×CK (注1)
外部ｾﾗﾐｯｸ振動子、低速上昇電源
0
14×CK
10
1K×CK (注2)
外部ｾﾗﾐｯｸ振動子、低電圧検出(BOD)ﾘｾｯﾄ許可
14×CK+4.1ms
11
1K×CK (注2)
外部ｾﾗﾐｯｸ振動子、高速上昇電源
14×CK+65ms
00
1K×CK (注2)
外部ｾﾗﾐｯｸ振動子、低速上昇電源
14×CK
01
16K×CK
外部ｸﾘｽﾀﾙ発振子、低電圧検出(BOD)ﾘｾｯﾄ許可
1
14×CK+4.1ms
10
16K×CK
外部ｸﾘｽﾀﾙ発振子、高速上昇電源
14×CK+65ms
11
16K×CK
外部ｸﾘｽﾀﾙ発振子、低速上昇電源
注1: これらの選択はﾃﾞﾊﾞｲｽの最高周波数付近での動作でないとき、応用にとって起動での周波数安定性が重要でない場合だけ使われるべきです。これらの選択はｸﾘｽﾀﾙ発振子用ではありません。
注2: これらの選択はｾﾗﾐｯｸ振動子での使用を意図され、起動での周波数安定性を保証します。ﾃﾞﾊﾞｲｽの最高周波数付近での動作でないとき、応用にとって起動での周波数安定性が重要でない場合はｸﾘｽﾀﾙ発振子も使えます。

6.4. 低周波数ｸﾘｽﾀﾙ用発振器
このﾃﾞﾊﾞｲｽは専用の低周波数発振器によってｸﾛｯｸ元として時計用32.768kHzｸﾘｽﾀﾙを使えます。ｸﾘｽﾀﾙ発振子は図6-2.で示される
ように接続されるべきです。この発振器が選択されると、起動時間は下表で示されるようにSUTﾋｭｰｽﾞとCKSEL0ﾋｭｰｽﾞによって決定されます。
表6-5. 低周波数ｸﾘｽﾀﾙ用発振器起動遅延時間選択表
ﾊﾟﾜｰﾀﾞｳﾝ, ﾊﾟﾜｰｾｰﾌﾞ ﾘｾｯﾄからの付加遅延
CKSEL0 SUT1,0
推奨使用法
からの起動遅延時間
時間 (VCC=5.0V)
1K×CK (注1)
14×CK00
低電圧検出(BOD)ﾘｾｯﾄ許可
14×CK+4.1ms
1K×CK (注1)
01
高速上昇電源
0
14×CK+65ms
1K×CK (注1)10低速上昇電源
(予約)
11
14×CK
00
32K×CK
低電圧検出(BOD)ﾘｾｯﾄ許可
14×CK+4.1ms
01
32K×CK
高速上昇電源1
14×CK+65ms
1032K×CK
低速上昇電源(予約)11
注1: これらの選択は応用にとって起動での周波数安定性が重要でない場合だけ使われるべきです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

19

6.5. 校正付き内蔵RC発振器
既定による校正された内蔵RC発振器は8.0MHzのｸﾛｯｸを供給します。この周波数は3V/25℃での公称値です。ﾃﾞﾊﾞｲｽはCKDIV8ﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)で出荷されます。より多くの詳細については22頁の「ｼｽﾃﾑ ｸﾛｯｸ前置分周器」をご覧ください。このｸﾛｯｸは下表で示されるようにCKSELﾋｭｰｽﾞのﾌﾟﾛｸﾞﾗﾐﾝｸﾞによってｼｽﾃﾑ ｸﾛｯｸとして選択できます。選択されたなら、外部部品なしで動作します。ﾘ
ｾｯﾄ中、ﾊｰﾄﾞｳｪｱが発振校正(OSCCAL)ﾚｼﾞｽﾀに予めﾌﾟﾛｸﾞﾗﾑされた校正値ﾊﾞｲﾄを設定し、これによってRC発振器を自動的に校正します。3V/25℃で、この校正は8MHz±1%の周波数を与えます。この発振器は発振校正(OSCCAL)ﾚｼﾞｽﾀの変更により、1%の精度内で7.3～8.1MHz範囲のどの周波数にも校正することができます。この発振器がﾁｯﾌﾟ(ｼｽﾃﾑ)ｸﾛｯｸとして使われる時にｳｫｯﾁﾄﾞｯｸﾞ発振器は未だｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏとﾘｾｯﾄ付加遅延ﾀｲﾏに使われます。予め設定された校正値のより多くの情報については228頁の「校正ﾊﾞｲ
ﾄ」項をご覧ください。
表6-6. 校正付き内蔵RC発振器動作種別
CKSEL3～0
周波数範囲 (MHz)0010
7.3～8.1

注: この8MHz周波数がﾃﾞﾊﾞｲｽ仕様(VCCに依存)を越える場合、内部周波数を8分周するためにCKDIV8ﾋｭｰｽﾞをﾌﾟﾛｸﾞﾗﾑ(0)にできます。

この発振器が選択されると、起動時間は下表で示されるようにSUTﾋｭｰｽﾞによって決定されます。
表6-7. 校正付き内蔵RC発振器用起動遅延時間選択表
ﾊﾟﾜｰﾀﾞｳﾝ, ﾊﾟﾜｰｾｰﾌﾞ ﾘｾｯﾄからの付加遅延
推奨使用法
SUT1,0からの起動遅延時間
時間 (VCC=5.0V)
14×CK
6×CK
00
低電圧検出ﾘｾｯﾄ(BOD)許可
14×CK+4.1ms
6×CK
01
高速上昇電源14×CK+65ms
6×CK
10低速上昇電源11(予約)

6.5.1. OSCCAL - 発振校正ﾚｼﾞｽﾀ (Oscillator Calibration Register)
ﾋﾞｯﾄ
($66)
Read/Write
初期値

7

6

5

4

3

2

1

0

CAL7

CAL6

CAL5

CAL4

CAL3

CAL2

CAL1

CAL0

R/W

R/W

R/W

R/W
R/W
ﾃﾞﾊﾞｲｽ固有の校正値

R/W

R/W

R/W

OSCCAL● ﾋﾞｯﾄ7～0 - CAL7～0 : 発振校正値 (Oscillator Calibration Value)

発振校正ﾚｼﾞｽﾀは発振器周波数の偏差処理を省くための内蔵発振器の調整に使われます。ﾁｯﾌﾟのﾘｾｯﾄ中に、25℃で8MHzの発振器周波数を与える工場校正値がこのﾚｼﾞｽﾀへ自動的に書かれます。応用ｿﾌﾄｳｪｱは発振器周波数を変更するために、このﾚｼﾞｽﾀに書くことができます。校正範囲は±40%で直線(校正段階:～0.4%)です。25℃での代表的な製造工程で、ｺｰﾄﾞ(値)は8MHzに対して
127であるべきで、入力値$00は最低、$FFは最高の周波数を与えます。
温度感度は殆ど直線ですが、前述のように製造工程に依存します。この傾斜を決めるため、周波数は2つの温度で測定されなければなりません。本ﾃﾞﾊﾞｲｽの温度感知器が上記の操作を可能にし、これは199頁の「温度感知器校正」で詳述されます。この後に測定した温度の関数で発振器周波数を校正することが可能です。
この発振器はﾌﾗｯｼｭ ﾒﾓﾘとEEPROMの書き込みｱｸｾｽ時間に使われ、これらの書き込み時間はそれに応じて影響されることに注意してください。ﾌﾗｯｼｭ ﾒﾓﾘまたはEEPROMが書かれる場合、8.8MHzより高く校正してはいけません。そうでなければ、ﾌﾗｯｼｭ ﾒﾓﾘまた
はEEPROMの書き込みは失敗するかもしれません。

6.5.2. RCCTRL - 発振器制御ﾚｼﾞｽﾀ (Oscillator Control Register)
ﾋﾞｯﾄ
($67)
Read/Write
初期値

7

6

5

4

3

2

1

-

-

-

-

-

-

-

R
0

R
0

R
0

R
0

R
0

R
0

R
0

0

RCFREQ RCCTRL
R/W
0● ﾋﾞｯﾄ7～1 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄを設定(1)してはいけません。これらのﾋﾞｯﾄは常に0として読まれます。
● ﾋﾞｯﾄ0 - RCFREQ : RC発振器周波数選択 (RC Oscillator Frequency Select)

このﾋﾞｯﾄが解除(0:既定値)されると、RC発振器出力周波数は8MHzに設定されます。このﾋﾞｯﾄが設定(1)されると、RC発振器出力周波数は1MHzです。発振校正(OSCCAL)ﾚｼﾞｽﾀが8MHzと1MHzの両方の出力動作で同じ効果(～0.4%/段階)を持つことに注意してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

20

6.6. 外部ｸﾛｯｸ信号
外部ｸﾛｯｸ元からﾃﾞﾊﾞｲｽを駆動するには、XTAL1が図6-3.で示されるように駆動されるべきです。外部ｸﾛｯｸでﾃﾞﾊﾞｲｽを走行するためには、表6-1.で示されるようにCKSELﾋｭｰｽﾞが'0000'にﾌﾟﾛｸﾞﾗﾑ(設定)されなければなりません。
このｸﾛｯｸ元が選択されると、起動時間は下表で示されるようにSUTﾋｭｰｽﾞによって決定されます。

図6-3. 外部ｸﾛｯｸ信号駆動接続図
XTAL2
外部ｸﾛｯｸ信号

XTAL1
GND

表6-8. 外部ｸﾛｯｸ信号駆動用起動遅延時間選択表
ﾊﾟﾜｰﾀﾞｳﾝ, ﾊﾟﾜｰｾｰﾌﾞ ﾘｾｯﾄからの付加遅延
推奨使用法
SUT1,0からの起動遅延時間
時間 (VCC=5.0V)
14×CK
6×CK
00
低電圧検出(BOD)ﾘｾｯﾄ許可
14×CK+4.1ms
6×CK
01
高速上昇電源14×CK+65ms
6×CK
10低速上昇電源(予約)
11
外部ｸﾛｯｸを供給するとき、MCUの安定な動作を保証するために供給したｸﾛｯｸ周波数の急な変化を避けることが必要とされます。或るｸﾛｯｸ周期から次への2%より大きな周波数変化は予測されない事態を引き起こします。このようなｸﾛｯｸ周波数での変化中、MCUはﾘｾｯﾄに保たれるのを保証することが必要とされます。
ｼｽﾃﾑ ｸﾛｯｸ前置分周器が安定な動作を保証しながら、内部ｸﾛｯｸ周波数の実行時変更の実現に使えることに注意してください。詳
細については22頁の「ｼｽﾃﾑ ｸﾛｯｸ前置分周器」を参照してください。

6.7. ｸﾛｯｸ切り替え
本ﾃﾞﾊﾞｲｽはより正確に応用電力と実行時間を制御するために、ｿﾌﾄｳｪｱによって或るｸﾛｯｸ元から別の1つに切り換えることを使用者に許す、ｸﾛｯｸ切り換え制御器を含みます。

6.7.1. 使用例
この変更はﾃﾞﾊﾞｲｽがUSB休止(ｻｽﾍﾟﾝﾄﾞ)動作へ移行する時に必要とされるかもしれません。そして(電力)消費と起動遅延を減らすた
めに外部ｸﾛｯｸから校正付き内蔵RC発振器へ切り替えます。このような構成設定では外部ｸﾛｯｸが禁止されます。その後にﾌｧｰﾑｳｪｱ
は応用での事象があるかを検査するために、ﾊﾟﾜｰﾀﾞｳﾝから起動復帰するのにｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏを使えます。応用での事象発生またはUSB信号線での非ｱｲﾄﾞﾙ状態をUSB制御器が示す(例えば再開(Resume))場合、ﾌｧｰﾑｳｪｱはUSB操作を再開するために、ｸﾛｯｸ多重器を校正付き内蔵RC発振器から外部ｸﾛｯｸへ切り替えます。
この機能は校正付き8MHz内蔵RC発振器、外部ｸﾛｯｸ信号、ｸﾘｽﾀﾙ用低電力発振器間の切り換えだけに使えます。低周波数ｸﾘ ｽﾀﾙ
用発振器はこの機能で使われてはなりません。
図6-4. USBﾎｽﾄからの起動復帰でのｸﾛｯｸ切り替え例
ﾎｽﾄからの再開(Resume)
USB 非ｱｲﾄﾞﾙ
CPUｸﾛｯｸ

ｱｲﾄﾞﾙ (一時停止: Suspend)

外部ｸﾛｯｸ非ｱｲﾄﾞﾙ

校正付き内蔵RC発振器

外部ｸﾛｯｸ

外部用発振器
校正付き内蔵RC発振器
3ms

ﾊﾟﾜｰﾀﾞｳﾝからのｳｫｯﾁﾄﾞｯｸﾞ起動復帰

図6-5. USB装置からの起動復帰でのｸﾛｯｸ切り替え例
上側再開(Upstream-Resume)
USB 非ｱｲﾄﾞﾙ
CPUｸﾛｯｸ

ｱｲﾄﾞﾙ (一時停止: Suspend)

外部ｸﾛｯｸ

校正付き内蔵RC発振器

非ｱｲﾄﾞﾙ
外部ｸﾛｯｸ

外部用発振器
校正付き内蔵RC発振器
3ms

ﾊﾟﾜｰﾀﾞｳﾝからのｳｫｯﾁﾄﾞｯｸﾞ起動復帰

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

21

6.8. ｸﾛｯｸ出力緩衝部 (外部ｸﾛｯｸ出力)
このﾃﾞﾊﾞｲｽはｼｽﾃﾑ ｸﾛｯｸをCLKOﾋﾟﾝに出力できます。この出力を許可するには、CKOUTﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されなければなりません。この動作はﾁｯﾌﾟのｸﾛｯｸがｼｽﾃﾑ上の他の回路を駆動する時用です。このﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されると、I/Oﾋﾟﾝの標準動作は無視され、このｸﾛｯｸはﾘｾｯﾄ中も出力されます。CLKOがｸﾛｯｸ出力を扱うとき、校正付き内蔵RC発振器を含む何れのｸﾛｯｸ元も選択できます。ｼｽﾃﾑ ｸﾛｯｸ前置分周器が使われる場合、出力は分周したｼｽﾃﾑ ｸﾛｯｸです。

6.9. ｼｽﾃﾑ ｸﾛｯｸ前置分周器
このﾃﾞﾊﾞｲｽはｼｽﾃﾑ ｸﾛｯｸ前置分周器を持ち、ｼｽﾃﾑ ｸﾛｯｸはｸﾛｯｸ前置分周ﾚｼﾞｽﾀ(CLKPR)の設定によって分周できます。この特徴(機能)は必要とされる処理能力が低い時の消費電力削減に使えます。これは全ｸﾛｯｸ種別で使え、CPUと全同期周辺機能のｸﾛｯｸ周
波数に影響を及ぼします。clkCPU,clkFLASH,clkI/O,clkADCは表6-9.で示された値によって分周されます。
前置分周器設定間を切り替えるとき、ｼｽﾃﾑ ｸﾛｯｸ前置分周器は中間(経過途中)の周波数が直前の設定に対応するｸﾛｯｸ周波数または新規設定に対応するｸﾛｯｸ周波数のどちらよりも高くなく、ｸﾛｯｸ系で不具合が起きないことを保証します。
前置分周器として実行するﾘﾌﾟﾙ ｶｳﾝﾀは分周されないｸﾛｯｸ周波数で走行し、CPUのｸﾛｯｸ周波数より速いかもしれません。従って例
え(ｶｳﾝﾀ値が)読めるとしても、前置分周器の状態を決めることはできず、1から他へのｸﾛｯｸ分周値切り替えを行う正確な時間は必ずしも予測できません。CLKPS値が書かれる時から新規ｸﾛｯｸ周波数が活性(有効)になる前にT1+T2～T1+2×T2間かかります。この間
で2つの有効なｸﾛｯｸ端が生成されます。ここでのT1は直前のｸﾛｯｸ周期、T2は新規前置分周器設定に対応する周期です。
予期せぬｸﾛｯｸ周波数の変更を防ぐため、CLKPSﾋﾞｯﾄの変更は次の特別な書き込み手順に従わなければなりません。
① ｸﾛｯｸ分周値変更許可(CLKPCE)ﾋﾞｯﾄに1、CLKPR内の他の全ﾋﾞｯﾄに0を書きます。
② (次からの)4周期以内にCLKPCEﾋﾞｯﾄを0とする欲したCLKPS値を書きます。
前置分周器設定変更時、書き込み手続きが割り込まれないことを保証するため、割り込みは禁止されなければなりません。

6.10. PLL
このPLLはUSBｲﾝﾀｰﾌｪｰｽと高速ﾀｲﾏ単位部用の(96MHzまでの)内部高周波数ｸﾛｯｸを生成するのに使われ、PLL入力は外部低周
波数ｸﾛｯｸ(XTAL1ﾋﾟﾝからの外部ｸﾛｯｸ入力ﾋﾟﾝまたはｸﾘｽﾀﾙ発振器)から供給されます。

6.10.1. 内部PLL
このﾃﾞﾊﾞｲｽの内部PLLは公称8MHz入力から40MHzと96MHz間のｸﾛｯｸ周波数を生成します。
8MHzのPLL入力ｸﾛｯｸ元は、ｸﾛｯｸ元多重器出力から8MHzを生成する内部PLLｸﾛｯｸ前置分周器の出力です(PLLｲﾝﾀｰﾌｪｰｽについては「PLLCSR - PLL制御/状態ﾚｼﾞｽﾀ」をご覧ください)。
PLL出力信号はUSBと高速ﾀｲﾏ単位部へ配給される前にPLL後置分周器段に入ります。これらの単位部の各々は独立した分周比を選択することができます。
図6-6. PLLｸﾛｯｸ構成図
CKSEL3～0

PINDIVPINMUX

外部用発振器
内蔵RC発振器(8.0MHz)

PLLｸﾛｯｸ
前置分周器

01

PLLTM1,0

PLLE
1/1.5

固定化
検出器

XTAL1
XTAL2

PLOCK

10
01

clkTMR

11

PLL

1/2
1
0

clk(8MHz)ｼｽﾃﾑ ｸﾛｯｸ前置分周器へ
PDIV3～0clkUSB

PLLUSB

6.11. ｸﾛｯｸ切り替え方法
6.11.1. 外部ｸﾛｯｸから校正付き内蔵RC発振器への切り替え
if (Usb_supend_detected())(
Usb_ack_suspend();Usb_freeze_clock();
Disable_pll();
Enable_RC_clock();
while (!RC_clock_ready());
Select_RC_clock();
Disable_external_clock();)// if (UDINT.SUSPI==1)// UDINT.SUPI=0;// USBCON.FRZCLK=1;// PLLCSR.PLLE=0;// CLKSEL0.RCE=1;// while (CLKSTA.RCON!=1);// CLKSEL0.CLKS=0;// CLKSEL0.EXTE=0;

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]22

6.11.2. 校正付き内蔵RC発振器から外部ｸﾛｯｸへの切り替え
if (Usb_wake_up_detected())(
Usb_ack_wake_up();
Enable_external_clock();
while (!External_clock_ready());
Select_External_clock();
Enable_pll();
Disable_RC_clock();
while (!Pll_ready());
Usb_unfreeze_clock();)// if (UDINT.WAKEUPI==1)// UDINT.WAKEUPI=0;// CLKSEL0.EXTE=1;// while (CLKSTA.EXTON!=1);// CLKSEL0.CLKS=1;// PLLCSR.PLLE=1;// CLKSEL0.RCE=0;// while (PLLCSR.PLOCK!=1);// USBCON.FRZCLK=0;

6.12. ｸﾛｯｸ関係用ﾚｼﾞｽﾀ
6.12.1. CLKSEL0 - ｸﾛｯｸ選択ﾚｼﾞｽﾀ0 (Clock selection Register 0)
ﾋﾞｯﾄ
($C5)
Read/Write
初期値

7

6

5

RCSUT1 RCSUT0 EXSUT1
R/W
0

R/W
0

R/W
0

4

3

2

1

0

EXSUT0

RCE

EXTE

-

CLKS

R/W
0

R/W
内容参照

R/W
内容参照

R
0

R/W
内容参照

CLKSEL0● ﾋﾞｯﾄ7,6 - RCSUT1,0 : 校正付き内蔵RC発振器用SUT値 (SUT for RC oscillator)

これら2ﾋﾞｯﾄは校正付き内蔵RC発振器用SUT値です。ﾋｭｰｽﾞ ﾋﾞｯﾄによってRC発振器が選択されている場合、そのSUTﾋｭｰｽﾞがこれらのﾋﾞｯﾄ内に複写されます。この付加起動時間はﾘｾｯﾄ後だけ使われ、ｸﾛｯｸ切り替え後に使われないため、ﾌｧｰﾑｳｪｱでの変更は無効です。
● ﾋﾞｯﾄ5,4 - EXSUT1,0 : 外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器用SUT値 (SUT for External Clock/Low Power Crystal Oscillator)

これら2ﾋﾞｯﾄは外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器用SUT値です。ﾋｭｰｽﾞ ﾋﾞｯﾄによって外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器が選択されている場合、そのSUTﾋｭｰｽﾞがこれらのﾋﾞｯﾄ内に複写されます。ﾌｧｰﾑｳｪｱは新しい値を書くことによって、これらのﾋﾞｯﾄを変更できます。この値は外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器の次の開始で使われます。
● ﾋﾞｯﾄ3 - RCE : 校正付き内蔵RC発振器許可 (Enable RC Oscillator)

校正付き内蔵RC発振器を許可するにはRCEﾋﾞｯﾄが論理1を書かれなければなりません。校正付き内蔵RC発振器を禁止するには
RCEﾋﾞｯﾄが論理0を書かれなければなりません。
● ﾋﾞｯﾄ2 - EXTE : 外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器許可 (Enable External Clock/Low Power Crystal Oscillator)

外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器を許可するにはEXTEﾋﾞｯﾄが論理1を書かれなければなりません。外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用
低電力発振器を禁止するにはEXTEﾋﾞｯﾄが論理0を書かれなければなりません。
● ﾋﾞｯﾄ0 - CLKS : ｸﾛｯｸ選択 (Clock Selector)

CPUｸﾛｯｸとして外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器を選択するにはCLKSﾋﾞｯﾄが論理1を書かれなければなりません。CPUｸﾛｯｸ
として校正付き内蔵RC発振器を選択するにはCLKSﾋﾞｯﾄが論理0を書かれなければなりません。ﾘｾｯﾄ後、ﾋｭｰｽﾞ ﾋﾞｯﾄ設定によって外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器が選択されているなら、CLKSﾋﾞｯﾄがﾊｰﾄﾞｳｪｱによって設定(1)されます。
ﾌｧｰﾑｳｪｱは選択に先立ってｸﾛｯｸが正しく開始されているかを調べなければなりません。

6.12.2. CLKSEL1 - ｸﾛｯｸ選択ﾚｼﾞｽﾀ1 (Clock selection Register 1)
ﾋﾞｯﾄ
($C6)
Read/Write
初期値

7

6

5

4

3

2

1

0

RCCKSEL3 RCCKSEL2 RCCKSEL1 RCCKSEL0 EXCKSEL3 EXCKSEL2 EXCKSEL1 EXCKSEL0 CLKSEL1
R/W
0

R/W
0

R/W
1

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

● ﾋﾞｯﾄ7～4 - RCCKSEL3～0 : 校正付き内蔵RC発振器用CKSEL値 (CKSEL for RC oscillator)

校正付き内蔵RC発振器用ｸﾛｯｸ設定。ﾘｾｯﾄ後、本ﾚｼﾞｽﾀ内のこの部分は校正付き内蔵RC発振器に対応する値'0010'が格納されます。校正付き内蔵RC発振器への切り替え前のﾌｧｰﾑｳｪｱによるこの値の変更は、校正付き内蔵RC発振器が開始しなくなるため禁止されます。
● ﾋﾞｯﾄ3～0 - EXCKSEL3～0 : 外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器用CKSEL値 (CKSEL for External Clock/Low Power Crystal Oscillator)

外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器用ｸﾛｯｸ設定。ﾘｾｯﾄ後、ﾋｭｰｽﾞ ﾋﾞｯﾄによって外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器が選択されているなら、本ﾚｼﾞｽﾀ内のこの部分はそのﾋｭｰｽﾞ設定が格納されます。ﾌｧｰﾑｳｪｱはｸﾛｯｸ切り替え後、起動時間を変更するためにこれを修正できます。
EXCKSEL3～0構成設定については18頁の表6-1. ｸﾛｯｸ元選択をご覧ください。校正付き内蔵RC発振器、ｸﾘｽﾀﾙ用低電力発振器、
外部ｸﾛｯｸ信号だけが許されます。
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]23

6.12.3. CLKSTA - ｸﾛｯｸ状態ﾚｼﾞｽﾀ (Clock Status Register)
ﾋﾞｯﾄ
($C7)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

-

-

RCON

EXTON

R
0

R
0

R
0

R
0

R
0

R
0

R
内容参照

R
内容参照

CLKSTA● ﾋﾞｯﾄ7～2 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ1 - RCON : 校正付き内蔵RC発振器ON (RC Oscillator On)

校正付き内蔵RC発振器が走行中なら、本ﾋﾞｯﾄはﾊｰﾄﾞｳｪｱによって設定(1)されます。校正付き内蔵RC発振器が停止なら、本ﾋﾞｯﾄはﾊｰﾄﾞｳｪｱによって解除(0)されます。
● ﾋﾞｯﾄ0 - EXTON : 外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器ON (External Clock/Low Power Crystal Oscillator On)

外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器が走行中なら、本ﾋﾞｯﾄはﾊｰﾄﾞｳｪｱによって設定(1)されます。外部ｸﾛｯｸ信号/ｸﾘｽﾀﾙ用低電力発振器が停止なら、本ﾋﾞｯﾄはﾊｰﾄﾞｳｪｱによって解除(0)されます。

6.12.4. CLKPR - ｸﾛｯｸ前置分周ﾚｼﾞｽﾀ (Clock Prescale Register)
ﾋﾞｯﾄ
($61)
Read/Write
初期値

7

6

5

4

3

2

1

0

CLKPCE---CLKPS3

CLKPS2

CLKPS1

CLKPS0

R/W
0

R
0

R
0

R
0

R/W
内容参照

R/W
内容参照

R/W
内容参照

R/W
内容参照

CLKPR

● ﾋﾞｯﾄ7 - CLKPCE : ｸﾛｯｸ分周値変更許可 (Clock Prescaler Change Enable)

CLKPSﾋﾞｯﾄの変更を許可するためにCLKPCEﾋﾞｯﾄは論理1を書かれなければなりません。CLKPCEﾋﾞｯﾄは同時にCLKPRの他の全ﾋﾞｯﾄが0を書かれる時だけ更新されます。CLKPCEは書き込み後4ｸﾛｯｸ周期またはCLKPSﾋﾞｯﾄ書き込み時、ﾊｰﾄﾞｳｪｱによって解除(0)されます。この制限時間(4ｸﾛｯｸ周期)内のCLKPCEﾋﾞｯﾄ再書き込みは制限時間の延長もCLKPCEﾋﾞｯﾄの解除(0)も行いません。
● ﾋﾞｯﾄ3～0 - CLKPS3～0 : ｸﾛｯｸ分周値選択 (Clock Prescaler Select Bits 3～0)

これらのﾋﾞｯﾄは選択したｸﾛｯｸ元と内部ｼｽﾃﾑ ｸﾛｯｸ間の分周値を定義します。これらのﾋﾞｯﾄは応用の必要条件に合わせた各種ｸﾛｯｸ
周波数を実行時に書けます。分周値が使われると、分周器はMCUへの主ｸﾛｯｸを分周し、全ての同期周辺機能の速度が減じられます。分周値は下表で与えられます。
CKDIV8ﾋｭｰｽﾞがCLKPSﾋﾞｯﾄの初期値を決めます。CKDIV8が非ﾌﾟﾛｸﾞﾗﾑ(1)にされると、CLKPSﾋﾞｯﾄは'0000'にﾘｾｯﾄされます。
CKDIV8がﾌﾟﾛｸﾞﾗﾑ(0)されると、CLKPSﾋﾞｯﾄは起動時に8分周を与える'0011'にﾘｾｯﾄされます。現在の動作条件でﾃﾞﾊﾞｲｽの最高周波数より高い周波数のｸﾛｯｸ元を選択した場合、この機能が使われるべきです。CKDIV8ﾋｭｰｽﾞ設定に拘らず、どの値もCLKPSﾋﾞｯﾄへ書けることに注意してください。応用ｿﾌﾄｳｪｱは現在の動作条件でﾃﾞﾊﾞｲｽの最高周波数より高い周波数のｸﾛｯｸ元を選択した場合、充分な分周値が選択されることを保証しなければなりません。このﾃﾞﾊﾞｲｽはCKDIV8ﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)で出荷されます。

表6-9. ｸﾛｯｸ前置分周器選択
CLKPS3001
CLKPS2
CLKPS10101
CLKPS0
0
1
0
1
0
1
0
1
2
8
32
128
分周値(数)
1
4
16
64

1
0

1

0
0
256

1
1

0

0
0
1
(予約)

1

1
0

1

6.12.5. PLLCSR - PLL制御/状態ﾚｼﾞｽﾀ (PLL Control and Status Register)ﾋﾞｯﾄ$29 ($49)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

PINDIV

-

-

PLLE

PLOCK

R
0

R
0

R
0

R/W
0

R
0

R
0

R/W
0

R
0

PLLCSR● ﾋﾞｯﾄ7～5 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読めます。
● ﾋﾞｯﾄ4 - PINDIV : PLL入力前置分周器選択(1:1,1:2) (PLL Input Prescaler)

このﾋﾞｯﾄは8または16MHz入力のどちらかからPLL用の8MHz入力ｸﾛｯｸを生成するためのPLL入力前置分周器の構成設定を可能にします。
8MHzｸﾛｯｸ元使用時、このﾋﾞｯﾄはPLLを許可する前に0を設定しなければなりません(1:1)。
16MHzｸﾛｯｸ元使用時、このﾋﾞｯﾄはPLLを許可する前に1を設定しなければなりません(1:2)。
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]24

● ﾋﾞｯﾄ3,2 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読めます。
● ﾋﾞｯﾄ1 - PLLE : PLL許可 (PLL Enable)

PLLEが設定(1)されると、PLLが開始されます。PLLEﾋﾞｯﾄがPINMUX(PLL周波数制御(PLLFRQ)ﾚｼﾞｽﾀ参照)と共に設定(1)されると、校正付き内蔵RC発振器が自動的に許可されることに注意してください。ﾊﾟﾜｰﾀﾞｳﾝ動作へ移行する前に、内蔵RC発振器を停止して余分な消費を避けるため、PLLは禁止されなければなりません。
● ﾋﾞｯﾄ0 - PLOCK : PLL固定化検出 (PLL Lock Detector)

PLOCKﾋﾞｯﾄが設定(1)されると、PLLは基準ｸﾛｯｸに固定化されます。PLL許可後、PLLが固定化するのにms単位でかなり多くの時間がかかります。PLOCKを解除(0)するにはPLL許可(PLLE)ﾋﾞｯﾄを解除(0)してください。

6.12.6. PLLFRQ - PLL周波数制御ﾚｼﾞｽﾀ (PLL Frequecy Control Register)ﾋﾞｯﾄ$32 ($52)
Read/Write
初期値

7

6

5

4

PINMUX PLLUSB PLLTM1 PLLTM0
R/W
0

R/W
0

R/W
0

R/W
0

3

2

1

0

PDIV3

PDIV2

PDIV1

PDIV0

R/W
0

R/W
1

R/W
0

R/W
0

PLLFRQ● ﾋﾞｯﾄ7 - PINMUX : PLL入力多重器 (PLL Input Mutiplexer)

このﾋﾞｯﾄはPLLのｸﾛｯｸ入力を選びます。
・ PINMUX=0: PLL入力は供給元として主ｼｽﾃﾑ ｸﾛｯｸを持つPLL前置分周器に接続されます。
・ PINMUX=1: PLL入力は校正付き8MHz内蔵RC発振器に直接続されます。この動作はｸﾘｽﾀﾙなし、または8/16MHzと異なる値のｸﾘ
ｽﾀﾙの使用に於いて、USB低速(Low-speed)動作種別での動作を可能にします。
● ﾋﾞｯﾄ6 - PLLUSB : USB周辺機能用PLL後置分周器選択 (PLL Postscaler for USB Peripheral)

このﾋﾞｯﾄはPLL出力周波数とUSB部入力周波数間の分周係数を選びます。
・ PLLUSB=0: 分周なし、直結。(PLL出力=48MHzの場合)
・ PLLUSB=1: PLL周波数は2分周され、USB部へ送られます。(PLL出力=96MHzの場合)● ﾋﾞｯﾄ5,4 - PLLTM1,0 : 高速ﾀｲﾏ用PLL後置分周器選択 (PLL Postscaler for High Speed Timer)

これらのﾋﾞｯﾄはPLL出力周波数と高速ﾀｲﾏ入力周波数間の分周係数に関して符号化します。
分周係数1.5はｸﾛｯｸ内にいくらかの震え(ｼﾞｯﾀ)を誘引しますが、平均ﾃﾞｭｰﾃｨ ｻｲｸﾙが50%なので誤差を無効に保つことに注意してください。より多くの詳細については図6-7.をご覧ください。
表6-10. 高速ﾀｲﾏ用後置分周器選択
PLLTM1 PLLTM0
分周数
高速ﾀｲﾏ ｸﾛｯｸ種別000 (切断)
同期ｸﾛｯｸ(CK)
0
1
1
1
0
1.5
非同期ｸﾛｯｸ(PCK)112

図6-7. 分周係数=1.5でのPLL後置分周器動作Fi
Fi÷1.5● ﾋﾞｯﾄ3～0 - PDIV3～0 : PLL固定化周波数 (PLL Lock Frequency)

これらのﾋﾞｯﾄは必要とする出力周波数値に従ってPLL内部VCO基準ｸﾛｯｸの構成設定を行います。
表6-11. PLL出力周波数選択
PDIV3
0
0
0
PDIV2
0
0
0
PDIV1
0
0
1
1
0
PDIV0
0
出力周波数(MHz) 不可 不可 不可
備考

0
0
1
1
40

0
1
0
0
48
既定

0
1
0
1
56

0
1
1
0
不可

0
1
1
1
72

1
0
0
0
80

1
0
0
1
88

1
0
1
0
96

1
1
1
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
0
1
不可 不可 不可 不可 不可

5Vでの最適なPLL構成設定はPLL出力周波数=96MHzで、64MHzの高速ﾀｲﾏ ｸﾛｯｸを生成するために1.5分周し、48MHzのUSBｸﾛｯ
ｸを生成するために2分周します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]25

7. 電力管理と休止形態
休止形態は応用でMCU内の未使用部を一時停止することを可能にし、それによって節電します。AVRは応用で必要な消費電力に仕立てることを使用者に許す様々な休止形態を提供します。
6つの休止形態の何れかへ移行するには休止形態制御ﾚｼﾞｽﾀ(SMCR)の休止許可(SE)ﾋﾞｯﾄが論理1を書かれ、SLEEP命令が実行されなければなりません。SMCRの休止種別選択(SM2～0)ﾋﾞｯﾄはSLEEP命令によって活性(有効)にされる休止形態(ｱｲﾄﾞﾙ、A/D変換
雑音低減、ﾊﾟﾜｰﾀﾞｳﾝ、ﾊﾟﾜｰｾｰﾌﾞ、ｽﾀﾝﾊﾞｲ、拡張ｽﾀﾝﾊﾞｲ)のどれかを選びます。一覧については表7-2.をご覧ください。MCUが休止
形態中に許可した割り込みが起こると、MCUは起動します。その時にMCUは起動時間に加えて4周期停止され、割り込みﾙｰﾁﾝを実
行し、そしてSLEEP命令の次の命令から実行を再開します。ﾃﾞﾊﾞｲｽが休止から起動するとき、ﾚｼﾞｽﾀ ﾌｧｲﾙとSRAMの内容は変えられません。休止形態中にﾘｾｯﾄが起こると、MCUは起動し、ﾘｾｯﾄ ﾍﾞｸﾀから実行します。
17頁の図6-1.はATmega16U4/32U4の各種ｸﾛｯｸ系統とその配給を示します。この図は適切な休止形態を選択することの手助けになります。

7.1. ｱｲﾄﾞﾙ動作
休止種別選択(SM2～0)ﾋﾞｯﾄが'000'を書かれるとき、SLEEP命令はMCUをｱｲﾄﾞﾙ動作へ移行させ、CPUを停止しますが、USB、SPI、
USART、ｱﾅﾛｸﾞ比較器、A/D変換器、2線直列ｲﾝﾀｰﾌｪｰｽ、ﾀｲﾏ/ｶｳﾝﾀ、ｳｫｯﾁﾄﾞｯｸﾞ、割り込み機構の継続動作を許します。この休止
形態は基本的にclkCPUとclkFLASHを停止する一方、他のｸﾛｯｸに走行を許します。
ｱｲﾄﾞﾙ動作はMCUにﾀｲﾏ溢れやUSARTの送信完了などの内部割り込みだけでなく、外部で起動された割り込みからの起動も可能にします。ｱﾅﾛｸﾞ比較器割り込みからの起動が必要とされないなら、ｱﾅﾛｸﾞ比較器制御/状態ﾚｼﾞｽﾀ(ACSR)のｱﾅﾛｸﾞ比較器禁止(ACD)ﾋﾞｯﾄを設定(1)することによってｱﾅﾛｸﾞ比較器を電源断にできます。これはｱｲﾄﾞﾙ動作での消費電力を削減します。A/D変換が許可されるなら、この動作に移行すると変換が自動的に始まります。

7.2. A/D変換雑音低減動作
SM2～0ﾋﾞｯﾄが'001'を書かれるとき、SLEEP命令はMCUをA/D変換雑音低減動作へ移行させ、CPUを停止しますが、A/D変換器、外部割り込み、2線直列ｲﾝﾀｰﾌｪｰｽのｱﾄﾞﾚｽ監視、ｳｫｯﾁﾄﾞｯｸﾞの(許可されていれば)継続動作を許します。この休止形態は基本的にclkI/O, clkCPU, clkFLASHを停止する一方、(clkUSBを含む)他のｸﾛｯｸに走行を許します。
これはA/D変換に対する雑音環境を改善し、より高い分解能の測定を可能にします。A/D変換器が許可されている場合、本動作に移行すると、変換が自動的に始まります。A/D変換完了割り込みからの他、外部ﾘｾｯﾄ、ｳｫｯﾁﾄﾞｯｸﾞ ｼｽﾃﾑ ﾘｾｯﾄ、ｳｫｯﾁﾄﾞｯｸﾞ割り込み、低電圧検出(BOD)ﾘｾｯﾄ、2線直列ｲﾝﾀｰﾌｪｰｽのｱﾄﾞﾚｽ一致割り込み、SPM/EEPROM操作可割り込み、INT6の外部ﾚﾍﾞﾙ割り込み、
INT3～0の外部割り込み、ﾋﾟﾝ変化割り込みだけが、A/D変換雑音低減動作からMCUを起動できます。

7.3. ﾊﾟﾜｰﾀﾞｳﾝ動作
休止種別選択(SM2～0)ﾋﾞｯﾄが'010'を書かれると、SLEEP命令はMCUをﾊﾟﾜｰﾀﾞｳﾝ動作へ移行させます。この動作では外部発振器が停止される一方、外部割り込み、2線直列ｲﾝﾀｰﾌｪｰｽのｱﾄﾞﾚｽ監視、ｳｫｯﾁﾄﾞｯｸﾞ機能は(許可されていれば)継続して動作します。外部
ﾘｾｯﾄ、ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ、低電圧検出(BOD)ﾘｾｯﾄ、2線直列ｲﾝﾀｰﾌｪｰｽのｱﾄﾞﾚｽ一致割り込み、INT6の外部ﾚﾍﾞﾙ割り込み、INT3～0の外部割り込み、ﾋﾟﾝ変化割り込み、USB非同期割り込み元(VBUSTIとWAKEUPI)だけがMCUを起動できます。この休止形態は基本的に生成した全てのｸﾛｯｸを停止し、非同期部の動作だけを許します。
ﾚﾍﾞﾙで起動した割り込みがﾊﾟﾜｰﾀﾞｳﾝ動作からの復帰に使われる場合、MCUを起動するためには変更したﾚﾍﾞﾙが一定時間保持されなければならないことに注意してください。詳細については38頁の「外部割り込み」を参照してください。
ﾊﾟﾜｰﾀﾞｳﾝ動作から起動するとき、起動条件が起きてから起動の効果が現れるまで遅延があります。これは停止されてしまっている後の再始動と安定になることをｸﾛｯｸに許します。この起動(遅延)時間は18頁の「ｸﾛｯｸ元」で記述されるように、ﾘｾｯﾄ遅延時間を定義するのと同じCKSELﾋｭｰｽﾞによって定義されます。

7.4. ﾊﾟﾜｰｾｰﾌﾞ動作
SM2～0ﾋﾞｯﾄが'011'を書かれると、SLEEP命令はMCUをﾊﾟﾜｰｾｰﾌﾞ動作へ移行させます。この動作はAT90USB64/128との共通性のために未だ存在しますが、本ﾃﾞﾊﾞｲｽにはﾀｲﾏ/ｶｳﾝﾀ2の非同期動作が存在しないので、この動作はﾊﾟﾜｰﾀﾞｳﾝ動作と同じです。

7.5. ｽﾀﾝﾊﾞｲ動作
外部ｸﾘｽﾀﾙ発振子/ｾﾗﾐｯｸ振動子ｸﾛｯｸ種別が選択され、SM2～0ﾋﾞｯﾄが'110'のとき、SLEEP命令はMCUをｽﾀﾝﾊﾞｲ動作へ移行させます。この動作は(外部ｸﾘｽﾀﾙ用)発振器が走行(動作)を保たれる例外を除いてﾊﾟﾜｰﾀﾞｳﾝ動作と同じです。ﾃﾞﾊﾞｲｽはｽﾀﾝﾊﾞｲ動作から6ｸﾛｯｸ周期で起動します。

7.6. 拡張ｽﾀﾝﾊﾞｲ動作
外部ｸﾘｽﾀﾙ発振子/ｾﾗﾐｯｸ振動子ｸﾛｯｸ種別が選択され、SM2～0ﾋﾞｯﾄが'111'のとき、SLEEP命令はMCUを拡張ｽﾀﾝﾊﾞｲ動作へ移行させます。この動作はAT90USB64/128との共通性のために未だ存在しますが、本ﾃﾞﾊﾞｲｽにはﾀｲﾏ/ｶｳﾝﾀ2の非同期動作が存在しな
いので、この動作はｽﾀﾝﾊﾞｲ動作と同じです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]26

表7-1. 各休止形態に於ける動作ｸﾛｯｸ範囲と復帰起動要因
動作
動作ｸﾛｯｸ範囲
復帰起動要因 (割り込み)
発振器
休止種別
INTn,
TWI
SPM
USB
clk clk clk clk 主ｸﾛｯｸ ﾋﾟﾝ変化 ｱﾄﾞﾚｽ EEPROM A/D変換 ｳｫｯﾁ USB 非同期 その他
完了
ﾄﾞｯｸﾞ 同期系
I/O
CPU FLASH IO ADC 供給元
割り込み 一致 操作可
系
ｱｲﾄﾞﾙ
〇 〇
〇
〇
〇
〇
〇
〇
〇
③
〇
A/D変換雑音低減
〇
〇
②
〇
〇
〇
〇
〇
③
ﾊﾟﾜｰﾀﾞｳﾝ②〇〇③
ﾊﾟﾜｰｾｰﾌﾞ②〇〇③
ｽﾀﾝﾊﾞｲ (注1)
〇
②
〇
〇
③
拡張ｽﾀﾝﾊﾞｲ (注1)
〇
②
〇
〇
③
注1: ｸﾛｯｸ元として外部ｸﾘｽﾀﾙ発振子またはｾﾗﾐｯｸ振動子が選択された場合だけの推奨です。
② INT6についてはﾚﾍﾞﾙ割り込みだけです。
③ USB非同期系割り込みはVBUSTI、WAKEUPIです。

7.7. 電力削減
電力削減ﾚｼﾞｽﾀ(PRRn)は消費電力を削減するために個別周辺機能へのｸﾛｯｸを停止する方法を提供します。周辺機能は現状で固定化され、I/Oﾚｼﾞｽﾀは読み込みも書き込みもできません。ｸﾛｯｸを停止している時に周辺機能によって使われていた資源は占有されたままなので、その周辺機能は殆どの場合、ｸﾛｯｸを停止する前に禁止されるべきです。周辺機能部の起動は電力削減ﾚｼﾞｽﾀ(PRRn)のﾋﾞｯﾄを解除(0)することによって行い、その周辺機能部を停止前と同じ状態にします。
周辺機能部の停止は全体に亘る重要な消費電力の削減のために活動動作とｱｲﾄﾞﾙ動作で使えます。その他の休止形態ではｸﾛｯｸが予め停止されます。

7.8. 消費電力の最小化
これらはAVRが制御するｼｽﾃﾑで消費電力の最小化を試みる時に考慮するためのそれぞれの検討点です。一般的に休止形態は可
能な限り多く使われるべきで、休止種別は動作するﾃﾞﾊﾞｲｽの機能が可能な限り少なくなるために選択されるべきです。必要とされない全ての機能は禁止されるべきです。特に次の機能部は最低可能消費電力の達成を試みるとき、特別な考慮を必要とするでしょう。

7.8.1. A/D変換器 (ADC)
許可したなら、A/D変換器は全休止形態で許可されます。節電するため、休止形態の何れかへ移行する前にA/D変換器は禁止されるべきです。A/D変換器がOFFそして再びONに切り替えられると、次の(最初の)変換は延長された(初回)変換になります。A/D変換器操作の詳細については194頁の「A/D変換器」を参照してください。

7.8.2. ｱﾅﾛｸﾞ比較器
ｱｲﾄﾞﾙ動作へ移行するとき、ｱﾅﾛｸﾞ比較器は使われないなら、禁止されるべきです。A/D変換雑音削減動作へ移行するとき、ｱﾅﾛｸﾞ
比較器は禁止されるべきです。その他の休止形態でのｱﾅﾛｸﾞ比較器は自動的に禁止されます。しかしｱﾅﾛｸﾞ比較器が入力として内部基準電圧を使う設定の場合、全休止形態でｱﾅﾛｸﾞ比較器は禁止されるべきです。さもなければ内部基準電圧は休止形態と無関係に許可されます。ｱﾅﾛｸﾞ比較器設定法の詳細については192頁の「ｱﾅﾛｸﾞ比較器」を参照してください。

7.8.3. 低電圧検出器 (BOD)
低電圧検出器(BOD)が応用で必要とされないなら、この単位部はOFFにされるべきです。低電圧検出器がBODLEVELﾋｭｰｽﾞによって許可されていると全休止形態で許可され、故に常時電力を消費します。これはより深い休止形態での総消費電流にとって重要な一因になります。低電圧検出器(BOD)設定法の詳細については31頁の「低電圧検出(BOD)」を参照してください。

7.8.4. 内部基準電圧
内部基準電圧は低電圧検出器(BOD)、ｱﾅﾛｸﾞ比較器、A/D変換器によって必要とされる時に許可されます。これら単位部が上の項目で記述されたように禁止されると、内部基準電圧は禁止され、電力を消費しません。再び許可する場合、この出力が使われる前に
使用者は基準電圧へ起動(安定時間)を与えなければなりません。基準電圧が休止形態でON保持される場合、この出力は直ちに使えます。起動時間の詳細については32頁の「内部基準電圧」を参照してください。

7.8.5. ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ
ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏが応用で必要とされないなら、この単位部はOFFにされるべきです。ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏが許可されていると全休止形態で許可され、故に常時電力を消費します。これはより深い休止形態での総消費電流にとって重要な一因になります。ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ
設定法の詳細については32頁の「ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ」を参照してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]27

7.8.6. ﾎﾟｰﾄ ﾋﾟﾝ
休止形態へ移行するとき、全てのﾎﾟｰﾄ ﾋﾟﾝは最小電力使用に設定されるべきです。最も重要なことはその時にﾋﾟﾝが抵抗性負荷を駆動しないのを保証することです。I/Oｸﾛｯｸ(clkI/O)とA/D変換ｸﾛｯｸ(clkADC)の両方が停止される休止形態ではﾃﾞﾊﾞｲｽの入力緩衝器が禁止されます。これは必要とされない時に入力論理回路によって電力が消費されないことを保証します。いくつかの場合で入力論
理回路は起動条件を検出するために必要とされ、その時は許可されます。どのﾋﾟﾝが許可されるかの詳細については43頁の「ﾃﾞｼﾞﾀﾙ
入力許可と休止形態」を参照してください。入力緩衝器が許可され、入力信号が浮いている状態のままか、またはｱﾅﾛｸﾞ信号電圧がVCC/2付近の場合、入力緩衝器は過大な電力を消費するでしょう。
ｱﾅﾛｸﾞ入力ﾋﾟﾝに対するﾃﾞｼﾞﾀﾙ入力緩衝器は常に禁止されるべきです。入力ﾋﾟﾝでのVCC/2付近のｱﾅﾛｸﾞ信号入力は活動動作でも重要な電流を引き起こし得ます。ﾃﾞｼﾞﾀﾙ入力緩衝器はﾃﾞｼﾞﾀﾙ入力禁止ﾚｼﾞｽﾀ(DIDR0,DIDR1,DIDR2)の書き込みによって禁止できます。詳細については193頁の「DIDR1 -ﾃﾞｼﾞﾀﾙ入力禁止ﾚｼﾞｽﾀ1」、205頁の「DIDR0 - ﾃﾞｼﾞﾀﾙ入力禁止ﾚｼﾞｽﾀ0」と「DIDR2 - ﾃﾞｼﾞﾀﾙ
入力禁止ﾚｼﾞｽﾀ2」を参照してください。

7.8.7. JTAGｲﾝﾀｰﾌｪｰｽと内蔵ﾃﾞﾊﾞｯｸﾞ機能 (OCD)
内蔵ﾃﾞﾊﾞｯｸﾞ機能がOCDENﾋｭｰｽﾞによって許可され、ﾁｯﾌﾟがﾊﾟﾜｰﾀﾞｳﾝまたはﾊﾟﾜｰｾｰﾌﾞの休止形態へ移行すると、主ｸﾛｯｸ元は許可に留まります。これらの休止形態では、これが総消費電流にとって重要な一因になります。これを避けるには3通りの方法があります。
● OCDENﾋｭｰｽﾞを禁止 (非ﾌﾟﾛｸﾞﾗﾑ(1)設定)● JTAGENﾋｭｰｽﾞを禁止 (非ﾌﾟﾛｸﾞﾗﾑ(1)設定)● MCU制御ﾚｼﾞｽﾀ(MCUCR)のJTAG禁止(JTD)ﾋﾞｯﾄへの1書き込み

7.9. 電力管理用ﾚｼﾞｽﾀ
7.9.1. SMCR - 休止形態制御ﾚｼﾞｽﾀ (Sleep Mode Control Register)
この休止形態制御ﾚｼﾞｽﾀは電力管理用の制御ﾋﾞｯﾄを含みます。
ﾋﾞｯﾄ$33 ($53)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

SM2

SM1

SM0

SE

R
0

R
0

R
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

SMCR

● ﾋﾞｯﾄ3～1 - SM2～0 : 休止種別選択 (Sleep Mode Select Bit 2, 1 and 0)

これらのﾋﾞｯﾄは表7-2.で示される利用可能な6つの休止形態の1つを選択します。

表7-2. 休止形態種別選択
SM2
SM1
SM0
休止形態種別0
ｱｲﾄﾞﾙ動作00
A/D変換雑音低減動作
001
0
ﾊﾟﾜｰﾀﾞｳﾝ動作
1
0
ﾊﾟﾜｰｾｰﾌﾞ動作
1
1
0
1
(予約)
0
0
(予約)
1
0
1
1
ｽﾀﾝﾊﾞｲ動作
10(注)
拡張ｽﾀﾝﾊﾞｲ動作 (注)1
11
注: (拡張)ｽﾀﾝﾊﾞｲ動作は外部ｸﾘｽﾀﾙ発振子またはｾﾗﾐｯｸ振動子での使用だけが推奨されます。

● ﾋﾞｯﾄ0 - SE : 休止許可 (Sleep Enable)

SLEEP命令が実行される時にMCUを休止形態へ移行させるには、休止許可(SE)ﾋﾞｯﾄが論理1を書かれなければなりません。MCUの目的外休止形態移行を避けるため、SLEEP命令実行直前に休止許可(SE)ﾋﾞｯﾄを設定(1)し、起動後直ちに解除(0)することが推奨されます。

7.9.2. PRR0 - 電力削減ﾚｼﾞｽﾀ0 (Power Reduction Register 0)
ﾋﾞｯﾄ
($64)
Read/Write
初期値

7

6

5

4

3

2

1

0

PRTWI

-

PRTIM0-PRTIM1

PRSPI

-

PRADC

R/W
0

R
0

R/W
0

R
0

R/W
0

R/W
0

R
0

R/W
0

PRR0

● ﾋﾞｯﾄ7 - PRTWI : 2線直列ｲﾝﾀｰﾌｪｰｽ電力削減 (Power Reduction TWI)

このﾋﾞｯﾄへの1書き込みはその部分へのｸﾛｯｸ停止によって2線直列ｲﾝﾀｰﾌｪｰｽ(TWI)を停止します。TWIの再起動時、TWIは正しい動作を保証するために再初期化されるべきです。
● ﾋﾞｯﾄ6 - Res : 予約 (Reserved)

このﾋﾞｯﾄは予約されており、常に0として読まれます。
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]28

● ﾋﾞｯﾄ5 - PRTIM0 : ﾀｲﾏ/ｶｳﾝﾀ0電力削減 (Power Reduction Timer/Counter0)

このﾋﾞｯﾄへの1書き込みはﾀｲﾏ/ｶｳﾝﾀ0部を停止します。ﾀｲﾏ/ｶｳﾝﾀ0が許可されると、停止前と同様に動作は継続します。
● ﾋﾞｯﾄ4 - Res : 予約 (Reserved)

このﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ3 - PRTIM1 : ﾀｲﾏ/ｶｳﾝﾀ1電力削減 (Power Reduction Timer/Counter1)

このﾋﾞｯﾄへの1書き込みはﾀｲﾏ/ｶｳﾝﾀ1部を停止します。ﾀｲﾏ/ｶｳﾝﾀ1が許可されると、停止前と同様に動作は継続します。
● ﾋﾞｯﾄ2 - PRSPI : 直列周辺ｲﾝﾀｰﾌｪｰｽ電力削減 (Power Reduction Serial Peripheral Interface)

このﾋﾞｯﾄへの1書き込みはその部分へのｸﾛｯｸ停止によって直列周辺ｲﾝﾀｰﾌｪｰｽ(SPI)を停止します。SPIの再起動時、SPIは正しい動作を保証するために再初期化されるべきです。
● ﾋﾞｯﾄ1 - Res : 予約 (Reserved)

このﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ0 - PRADC : A/D変換器電力削減 (Power Reduction ADC)

このﾋﾞｯﾄへの1書き込みはA/D変換器(ADC)を停止します。A/D変換器は停止前に禁止されなければなりません。A/D変換器停止
時、ｱﾅﾛｸﾞ比較器はADC入力切替器を使えません。
注: ｱﾅﾛｸﾞ比較器は193頁の「ACSR - ｱﾅﾛｸﾞ比較器制御/状態ﾚｼﾞｽﾀ」でのｱﾅﾛｸﾞ比較器禁止(ACD)ﾋﾞｯﾄの使用で禁止されます。(訳
注:共通性から本注追加)

7.9.3. PRR1 - 電力削減ﾚｼﾞｽﾀ1 (Power Reduction Register 1)
ﾋﾞｯﾄ
($65)
Read/Write
初期値

7

6

5

4

3

2

1

PRUSB

-

-

PRTIM4PRTIM3

-

-

R/W
0

R
0

R
0

R/W
0

R/W
0

R
0

R
0

0

PRUSART PRR1
R/W
0

● ﾋﾞｯﾄ7 - PRUSB : USB電力削減 (Power Reduction USB)

このﾋﾞｯﾄへの1書き込みはその部分へのｸﾛｯｸ停止によってUSBを停止します。USBの再起動時、USBは正しい動作を保証するために再初期化されるべきです。
● ﾋﾞｯﾄ6,5 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ4 - PRTIM4 : ﾀｲﾏ/ｶｳﾝﾀ4電力削減 (Power Reduction Timer/Counter4)

このﾋﾞｯﾄへの1書き込みはﾀｲﾏ/ｶｳﾝﾀ4部を停止します。ﾀｲﾏ/ｶｳﾝﾀ4が許可されると、停止前と同様に動作は継続します。
● ﾋﾞｯﾄ3 - PRTIM3 : ﾀｲﾏ/ｶｳﾝﾀ3電力削減 (Power Reduction Timer/Counter3)

このﾋﾞｯﾄへの1書き込みはﾀｲﾏ/ｶｳﾝﾀ3部を停止します。ﾀｲﾏ/ｶｳﾝﾀ3が許可されると、停止前と同様に動作は継続します。
● ﾋﾞｯﾄ2,1 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ0 - PRUSART : USART電力削減 (Power Reduction USART)

このﾋﾞｯﾄへの1書き込みはその部分へのｸﾛｯｸ停止によってUSARTを停止します。USARTの再起動時、USARTは正しい動作を保証するために再初期化されるべきです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

29

8. ｼｽﾃﾑ制御とﾘｾｯﾄ
8.1. AVRのﾘｾｯﾄ
ﾘｾｯﾄ中、全てのI/Oﾚｼﾞｽﾀはそれらの初期値に設定され、ﾌﾟﾛｸﾞﾗﾑはﾘｾｯﾄ ﾍﾞｸﾀから実行を開始します。ﾘｾｯﾄ ﾍﾞｸﾀに配置される命令
は、きっとﾘｾｯﾄ処理ﾙｰﾁﾝへのJMP(絶対分岐)命令でしょう。ﾌﾟﾛｸﾞﾗﾑが決して割り込み元を許可しないなら、割り込みﾍﾞｸﾀは使われず、これらの位置に通常のﾌﾟﾛｸﾞﾗﾑ ｺｰﾄﾞが配置できます。これはﾘｾｯﾄ ﾍﾞｸﾀが応用領域の一方、割り込みﾍﾞｸﾀがﾌﾞｰﾄ領域の場合やその逆も同様です。図8-1.の回路構成図はﾘｾｯﾄ論理回路を示します。249頁の表29-3.はﾘｾｯﾄ回路の電気的特性を定義します。
AVRのI/Oﾎﾟｰﾄはﾘｾｯﾄ元が有効になると直ちにそれらの初期状態にﾘｾｯﾄされます。これはどのｸﾛｯｸ元の走行も必要ありません。
全てのﾘｾｯﾄ元が無効にされてしまった後、遅延計数器(ﾀｲﾏ)が始動され、内部ﾘｾｯﾄを引き伸ばします。これは通常動作開始前に安定電圧へ達することを電源に許します。遅延ﾀｲﾏの遅延時間はSUTﾋｭｰｽﾞとCKSELﾋｭｰｽﾞを通して使用者によって定義されます。この遅延時間についての各種選択は18頁の「ｸﾛｯｸ元」で示されます。

8.2. ﾘｾｯﾄ元
ATmega16U4/32U4には次の6つのﾘｾｯﾄ元があります。
● 電源ONﾘｾｯﾄ ・・・・・ 供給電圧が電源ONﾘｾｯﾄ閾値電圧(VPOT)以下でMCUがﾘｾｯﾄされます。
● 外部ﾘｾｯﾄ ・・・・・・・・ RESETﾋﾟﾝが最小ﾊﾟﾙｽ幅以上Lowﾚﾍﾞﾙに保たれると、MCUがﾘｾｯﾄされます。
● ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ ・・・ ｳｫｯﾁﾄﾞｯｸﾞが許可され、ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏが終了すると、MCUがﾘｾｯﾄされます。
● 低電圧ﾘｾｯﾄ ・・・・・・ 低電圧検出が許可され、供給電圧(VCC)が低電圧検出電圧(VBOT)以下でMCUがﾘｾｯﾄされます。
● JTAG AVR ﾘｾｯﾄ ・・ JTAGｼｽﾃﾑの走査ﾁｪｰﾝの1つとしてﾘｾｯﾄ ﾚｼﾞｽﾀ内に論理1がある間中、MCUがﾘｾｯﾄされます。詳細については210頁の「IEEE 1149.1 (JTAG) 境界走査」を参照してください。
● USBﾘｾｯﾄ ・・・・・・・・ 使用者によってこの機能が許可されているなら、USBﾘｾｯﾄ条件の終了検出で、(USB制御器が許可で接続状態に留まることを除いて)MCUはﾘｾｯﾄされます。

BODLEVEL2～0
VCC

低電圧検出回路
電源ONﾘｾｯﾄ回路

30～60kΩｽﾊﾟｲｸ除去

RESET

ﾘｾｯﾄ回路

USBﾘｾｯﾄ検出

JTAGﾘｾｯﾄ ﾚｼﾞｽﾀ

WDT用RC発振器

ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ

ｼｽﾃﾑ用発振器

USBRF
JTRF
WDRF
BORF
EXTRF
PORF

MCU状態ﾚｼﾞｽﾀ(MCUSR)

8-bit Data Bus

図8-1. ﾘｾｯﾄ回路構成

計数器
ﾘｾｯﾄ

内部ﾘｾｯﾄS Q
R Q

SUT1,0

CK

時間経過

遅延計時器

CKSEL3～08.3. 電源ONﾘｾｯﾄ
電源ONﾘｾｯﾄ(POR)ﾊﾟﾙｽはﾁｯﾌﾟ上の検出回路によって生成されます。検出電圧は249頁の表29-3.で定義されます。POR信号は
VCCが検出電圧以下の時は必ず活性(有効)にされます。POR回路は供給電圧異常検出は勿論、始動ﾘｾｯﾄの起動にも使えます。
電源ONﾘｾｯﾄ回路はﾃﾞﾊﾞｲｽが電源投入からﾘｾｯﾄされることを保証します。電源ONﾘｾｯﾄ閾値電圧(VPOT)への到達はVCCの上昇後にﾃﾞﾊﾞｲｽがどのくらいﾘｾｯﾄを保つかを決める遅延計数器(ﾀｲﾏ)を起動します。VCCがこの検出電圧以下に低下すると、ﾘｾｯﾄ信号は
どんな遅延もなく再び有効にされます。
図8-2. 内蔵電源ONﾘｾｯﾄ (RESETはVCCに接続)
VCC
RESET
遅延ﾀｲﾏ
内部ﾘｾｯﾄ

VPOR

図8-3. 外部RESET信号による延長電源ONﾘｾｯﾄ

VPOT

VCC

VRST

RESET

tTOUT

遅延ﾀｲﾏ

VPOR

VPOT
VRST

tTOUT

内部ﾘｾｯﾄATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]30

8.4. 外部ﾘｾｯﾄ
外部ﾘｾｯﾄはRESETﾋﾟﾝのLowﾚﾍﾞﾙによって生成されます。例えｸ
ﾛｯｸが動いていなくても、最小ﾊﾟﾙｽ幅(249頁の表29-3.を参照)以
上のﾘｾｯﾄ ﾊﾟﾙｽはﾘｾｯﾄを生成します。短すぎるﾊﾟﾙｽはﾘｾｯﾄの生成が保証されません。印加された信号の上昇がﾘｾｯﾄ閾値電圧(V RST )に達すると(遅延ﾀｲﾏが起動され)、遅延ﾀｲﾏは遅延時間(tTOUT)経過後にMCUを始動します。

図8-4. 動作中の外部ﾘｾｯﾄ
VCC
VRST

RESET

tTOUT

遅延ﾀｲﾏ
内部ﾘｾｯﾄ8.5. 低電圧(ﾌﾞﾗｳﾝｱｳﾄ)検出ﾘｾｯﾄ
本ﾃﾞﾊﾞｲｽには固定化された起動(検出)電圧と比較することによって動作中のVCCを監視するﾁｯﾌﾟ上の低電圧検出(BOD)回路があります。BODの起動電圧はBODLEVELﾋｭｰｽﾞによって選択できます。起動電圧はｽﾊﾟｲｸ対策BODを保証するためにﾋｽﾃﾘｼｽを持ちます。検出電圧のﾋｽﾃﾘｼｽはVBOT+=VBOT+VHYST/2、VBOT=VBOT-VHYST/2と解釈すべきです。
BODが許可され、VCCが起動電圧以下の値に下降すると(図8-5.
のVBOT-)、低電圧ﾘｾｯﾄが直ちに有効とされます。VCCが起動電
圧以上に上昇すると(図8-5.のVBOT+)、(遅延ﾀｲﾏが起動されて)遅延ﾀｲﾏは遅延時間(tTOUT)経過後にMCUを始動します。
BOD回路は電圧が表8-2.で与えられるtBOD時間より長く起動電圧以下に留まる場合のみ、VCCでの低下を検出します。
表8-2. 低電圧検出(BOD)特性
ｼﾝﾎﾞﾙ
項目
最小 代表 最大 単位
VHYST 低電圧検出ﾋｽﾃﾘｼｽ電圧
50mVtBOD 最小低電圧検出時間
TBDµs

図8-5. 動作中の低電圧検出ﾘｾｯﾄ
VCC

VBOT+

VBOT-

RESET

tTOUT

遅延ﾀｲﾏ
内部ﾘｾｯﾄ

表8-1. BODLEVELﾋｭｰｽﾞ (VBOT) 設定
BODLEVEL2～0 000 001 010 011 100 101 110
111
最大4.5 3.7 3.6 2.8 2.6 2.4 2.2 低電圧検出
代表
4.3 3.5 3.4 2.6 2.4 2.2 2.0(BOD)
ﾘｾｯﾄ禁止最小
4.0 3.3 3.2 2.4 2.2 2.0 1.8
単位V8.6. ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ
ｳｫｯﾁﾄﾞｯｸﾞ時間経過時、(内部的に)1CK周期幅の短いﾘｾｯﾄ ﾊﾟﾙｽを生成します。このﾊﾟﾙｽの下降端で遅延ﾀｲﾏは遅延時間(tTOUT)の計時を始めます。ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ操作の詳細については32頁の「ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ」を参照してください。

図8-6. 動作中のｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ
VCC
RESET
ｳｫｯﾁﾄﾞｯｸﾞ
時間経過
遅延ﾀｲﾏ

1 CK周期

tTOUT

内部ﾘｾｯﾄ8.7. USBﾘｾｯﾄ
USB部が許可され、USBﾘｾｯﾄCPU機能許可で構成設定されている時にﾊﾞｽ上で有効なUSBﾘｾｯﾄ信号が検出された場合にCPUｺｱ
はﾘｾｯﾄされますが、USB制御器は許可で且つ接続状態に留まります。これはﾃﾞﾊﾞｲｽの信頼性強化に使われるかもしれません。

図8-7. 動作中のUSBﾘｾｯﾄ
VCC
RESET
D+
USB D遅延ﾀｲﾏ

USB通信

tUSBRSTmin

ﾘｾｯﾄ終了
USB通信

tTOUT

内部ﾘｾｯﾄATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

31

8.8. 内部基準電圧
ATmega16U4/32U4は内部基準電圧が特徴です。この基準電圧は低電圧検出(BOD)に使われ、A/D変換やｱﾅﾛｸﾞ比較器の入力としても使えます。

8.8.1. 基準電圧許可信号と起動時間
この基準電圧には使われるべき方法に影響を及ぼすかもしれない起動時間があります。この起動時間は表8-3.で与えられます。節
電のために、この基準電圧は常にONではありません。この基準電圧は次の状態中ONです。
1. 低電圧検出ﾘｾｯﾄ許可時 (BODLEVELﾋｭｰｽﾞのﾌﾟﾛｸﾞﾗﾑ(0)により)
2. ｱﾅﾛｸﾞ比較器基準電圧接続時 (ｱﾅﾛｸﾞ比較器制御/状態ﾚｼﾞｽﾀ(ACSR)の基準電圧入力選択(ACBG)=1)
3. A/D変換部動作許可時 (A/D変換制御/状態ﾚｼﾞｽﾀA(ADCSRA)のA/D動作許可(ADEN)=1)
従って低電圧検出(BOD)が許可されていないと、ACBGの設定(=1)またはA/D変換部許可(ADEN=1)後、使用者はｱﾅﾛｸﾞ比較器またはA/D変換器出力が使われる前に基準電圧へ起動時間を与えなければなりません。ﾊﾟﾜｰﾀﾞｳﾝ動作での消費電力を減らすため、使用者はﾊﾟﾜｰﾀﾞｳﾝ動作へ移行する前に基準電圧がOFFされるのを保証することで上の3つの状態を避けられます。
表8-3. 内部基準電圧特性
ｼﾝﾎﾞﾙ
VBG
基準電圧
tBG
起動時間
IBG
消費電流

項目

条件
VCC=2.7V
TA=25℃

最小
1.0

代表
1.1
40
10

最大
1.2
70

単位
V
µs
µA

8.9. ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ
図8-8. ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ構成図
ｳｫｯﾁﾄﾞｯｸﾞ
発振器(128kHz)R

ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ

ｳｫｯﾁﾄﾞｯｸﾞ前置分周器

OSC/2k
OSC/4k
OSC/8k
OSC/16k
OSC/32k
OSC/64k
OSC/128k
OSC/256k
OSC/512k
OSC/1024k

ATmega16U4/32U4には強化されたｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ(WDT)があります。
主な機能を次に示します。
・ 独立した内蔵発振器からのｸﾛｯｸ駆動
・ 3つの動作種別- 割り込み- ｼｽﾃﾑ ﾘｾｯﾄ
- 割り込みとｼｽﾃﾑ ﾘｾｯﾄ
・ 選択可能な16ms～8sの計時完了時間
・ 安全動作用のｳｫｯﾁﾄﾞｯｸﾞ常時ONﾊｰﾄﾞｳｪｱ ﾋｭｰｽﾞ

WDP0
ｳｫｯﾁﾄﾞｯｸﾞ ｸﾛｯｸ
WDP1
ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ(WDT)はﾁｯﾌﾟ上の独立した128kHz発振器の間隔で計WDP2選択器時するﾀｲﾏです。WDTは計数器が与えられた計時完了値に達した時
WDP3に割り込みまたはｼｽﾃﾑ ﾘｾｯﾄを与えます。通常動作では計時完了値
MCU
WDEへ達する前に計数器を再始動するために、ｼｽﾃﾑがｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ
ﾘｾｯﾄ
(WDR)命令を使う必要があります。ｼｽﾃﾑが計数器を再始動しなければ、割り込みまたはｼｽﾃﾑ ﾘｾｯﾄが起こるでしょう。
WDIF
割り
割り込み動作種別では、ﾀｲﾏ計時完了時にWDTが割り込みを生じま込みWDIEす。この割り込みは休止形態からﾃﾞﾊﾞｲｽを起動するためや、一般的なｼｽﾃﾑ ﾀｲﾏとしても使えます。1つの例は或る動作に対して許された最大時間を制限することで、その動作が予測されたより長く走行する時に割り込みを生じます。ｼｽﾃﾑ ﾘｾｯﾄ動作種別ではﾀｲﾏ計時完了
時にWDTがﾘｾｯﾄを生じます。これは一般的にｺｰﾄﾞ外走行の場合の中断を防止するのに使われます。3つ目の動作種別は先に割り込みを生じ、その後にｼｽﾃﾑ ﾘｾｯﾄ動作種別に切り替えることで、他の2つの動作種別の組み合わせとなる、割り込み及びｼｽﾃﾑ ﾘｾｯﾄ
動作種別です。この動作種別は例えばｼｽﾃﾑ ﾘｾｯﾄに先立って重要なﾊﾟﾗﾒｰﾀを保存することによって安全な停止を許します。
ｳｫｯﾁﾄﾞｯｸﾞ常時ON(WDTON)ﾋｭｰｽﾞのﾌﾟﾛｸﾞﾗﾑ(0)はｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏをｼｽﾃﾑ ﾘｾｯﾄ動作種別に強制します。このﾋｭｰｽﾞのﾌﾟﾛｸﾞﾗﾑ(0)でｼｽﾃﾑ ﾘｾｯﾄ動作(WDE)ﾋﾞｯﾄと割り込み動作(WDIE)ﾋﾞｯﾄは各々、'1'と'0'に固定されます。
更にﾌﾟﾛｸﾞﾗﾑ保護を保証するためにｳｫｯﾁﾄﾞｯｸﾞ設定の変更は時間制限手順に従わなければなりません。ｼｽﾃﾑ ﾘｾｯﾄ許可(WDE)の解除と計時完了時間設定の変更についての手順は次のとおりです。
1. 同じ操作(命令)でｳｫｯﾁﾄﾞｯｸﾞ変更許可(WDCE)とWDEに論理1を書きます。WDEﾋﾞｯﾄの直前の値に拘らず、論理1がWDEに書かれなければなりません。
2. 次からの4ｸﾛｯｸ周期内に同じ操作(命令)で欲したWDEとｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ前置分周選択(WDP3～0)ﾋﾞｯﾄを書きますが、WDCEﾋﾞｯﾄは解除(0)されてです。これは1操作(命令)で行わなければなりません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]32

次のｺｰﾄﾞ例はｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏをOFFに切り替えるｱｾﾝﾌﾞﾘ言語とC言語の関数を示します。本例は(例えば全割り込み禁止によって)割り込みが制御され、それ故これらの関数実行中に割り込みが起きない前提です。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
WDT_OFF:
CLI
WDR
IN
R16,MCUSR
ANDI
R16,~(1<<WDRF)
OUT
MCUSR,R16LDS
R16,WDTCSR
ORI
R16,(1<<WDCE)|(1<<WDE)STSWDTCSR,R16
LDI
R16,(0<<WDE)STSWDTCSR,R16
SEI
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void WDT_off(void){__disable_interrupt();__watchdog_reset();MCUSR &= ~(1<<WDRF);
WDTCSR |= (1<<WDCE)|(1<<WDE);
WDTCSR = 0x00;__enable_interrupt();};全割り込み禁止;ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ ﾘｾｯﾄ
;MCUSR値を取得;WDRF論理0値を取得;ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ ﾌﾗｸﾞ(WDRF)解除;現WDTCSR値を取得(他ﾋﾞｯﾄ保護用);WDCEとWDE論理1値を設定;WDCEとWDEに論理1書き込み;WDE論理0値を取得;ｳｫｯﾁﾄﾞｯｸﾞ禁止;全割り込み許可;呼び出し元へ復帰/* 全割り込み禁止 *//* ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ ﾘｾｯﾄ *//* ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ ﾌﾗｸﾞ(WDRF)解除 *//* WDCEとWDEに論理1書き込み *//* ｳｫｯﾁﾄﾞｯｸﾞ禁止 *//* 全割り込み許可 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
注: ｳｫｯﾁﾄﾞｯｸﾞが偶然に許可されると(例えばﾎﾟｲﾝﾀの逸脱や低電圧(ﾌﾞﾗｳﾝｱｳﾄ)状態)、ﾃﾞﾊﾞｲｽはﾘｾｯﾄし、ｳｫｯﾁﾄﾞｯｸﾞは許可に留まります。ｺｰﾄﾞがｳｫｯﾁﾄﾞｯｸﾞ操作の初期設定をしなければ、これは計時完了の無限繰り返しを引き起こすかもしれません。この状態を避けるため、応用ｿﾌﾄｳｪｱは例えｳｫｯﾁﾄﾞｯｸﾞが使われなくても、初期化ﾙｰﾁﾝでWDRFﾌﾗｸﾞとWDE制御ﾋﾞｯﾄを常に解除(0)すべきです。
次のｺｰﾄﾞ例はｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏの計時完了値変更用のｱｾﾝﾌﾞﾘ言語とC言語の関数を示します。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
WDT_PRS:
CLI
WDR
LDS
R16,WDTCSR
ORI
R16,(1<<WDCE)|(1<<WDE)STSWDTCSR,R16
LDI
R16,(1<<WDE)|(1<<WDP2)|(1<<WDP0)STS
WDTCSR,R16
SEI
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void WDT_off(void){__disable_interrupt();__watchdog_reset();WDTCSR |= (1<<WDCE)|(1<<WDE);
WDTCSR = (1<<WDE)|(1<<WDP2)|(1<<WDP0);__enable_interrupt();};全割り込み禁止;ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ ﾘｾｯﾄ
;現WDTCSR値を取得(他ﾋﾞｯﾄ保護用);WDCEとWDE論理1値を設定;WDCEとWDEに論理1書き込み;WDE=1,計時間隔=0.5s値を取得;0.5s監視間隔ﾘｾｯﾄ動作開始;全割り込み許可;呼び出し元へ復帰/* 全割り込み禁止 *//* ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ ﾘｾｯﾄ *//* WDCEとWDEに論理1書き込み *//* 0.5s監視間隔ﾘｾｯﾄ動作開始 *//* 全割り込み許可 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
注: ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ前置分周選択(WDP3～0)ﾋﾞｯﾄの変更がより短い計時完了周期に変わってしまう結果になり得るため、ｳｫｯﾁﾄﾞｯｸﾞ
ﾀｲﾏはWDPﾋﾞｯﾄのどんな変更にも先立ってﾘｾｯﾄ(WDR命令)されるべきです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]33

8.10. ﾘｾｯﾄ関係用ﾚｼﾞｽﾀ
8.10.1. MCUSR - MCU状態ﾚｼﾞｽﾀ (MCU Status Register)
MCU状態ﾚｼﾞｽﾀは、どのﾘｾｯﾄ元がMCUﾘｾｯﾄを起こしたかの情報を提供します。
ﾋﾞｯﾄ$34 ($54)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

USBRF

JTRF

WDRF

BORF

EXTRF

PORF

R
0

R
0

R/W
内容参照

R/W
内容参照

R/W
内容参照

R/W
内容参照

R/W
内容参照

R/W
内容参照

MCUSR

● ﾋﾞｯﾄ7,6 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。これらのﾋﾞｯﾄを設定(1)してはなりません。
● ﾋﾞｯﾄ5 - USBRF : USBﾘｾｯﾄ ﾌﾗｸﾞ (USB Reset Flag)

このﾋﾞｯﾄはUSBﾘｾｯﾄが起こると設定(1)されます。このﾋﾞｯﾄは電源ONﾘｾｯﾄまたは、このﾌﾗｸﾞへの論理0書き込みによってﾘｾｯﾄ(0)されます。
● ﾋﾞｯﾄ4 - JTRF : JTAG ﾘｾｯﾄ ﾌﾗｸﾞ (JTAG Reset Flag)

このﾋﾞｯﾄはﾘｾｯﾄがJTAG命令AVR_RESETで選択されたJTAG ﾘｾｯﾄ ﾚｼﾞｽﾀ内の論理1によって引き起こされると設定(1)されます。このﾋﾞｯﾄは電源ONﾘｾｯﾄまたは、このﾌﾗｸﾞへの論理0書き込みによってﾘｾｯﾄ(0)されます。
● ﾋﾞｯﾄ3 - WDRF : ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ ﾌﾗｸﾞ (Watchdog Reset Flag)

このﾋﾞｯﾄはｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄが起こると設定(1)されます。このﾋﾞｯﾄは電源ONﾘｾｯﾄまたは、このﾌﾗｸﾞへの論理0書き込みによってﾘｾｯﾄ(0)されます。
● ﾋﾞｯﾄ2 - BORF : 低電圧ﾘｾｯﾄ ﾌﾗｸﾞ (Brown-Out Reset Flag)

このﾋﾞｯﾄは低電圧ﾘｾｯﾄが起こると設定(1)されます。このﾋﾞｯﾄは電源ONﾘｾｯﾄまたは、このﾌﾗｸﾞへの論理0書き込みによってﾘｾｯﾄ(0)されます。
● ﾋﾞｯﾄ1 - EXTRF : 外部ﾘｾｯﾄ ﾌﾗｸﾞ (External Reset Flag)

このﾋﾞｯﾄは外部ﾘｾｯﾄが起こると設定(1)されます。このﾋﾞｯﾄは電源ONﾘｾｯﾄまたは、このﾌﾗｸﾞへの論理0書き込みによってﾘｾｯﾄ(0)されます。
● ﾋﾞｯﾄ0 - PORF : 電源ONﾘｾｯﾄ ﾌﾗｸﾞ (Power-on Reset Flag)

このﾋﾞｯﾄは電源ONﾘｾｯﾄが起こると設定(1)されます。このﾋﾞｯﾄはこのﾌﾗｸﾞへの論理0書き込みによってのみﾘｾｯﾄ(0)されます。
ﾘｾｯﾄ条件の確認にﾘｾｯﾄ ﾌﾗｸﾞを使うため、使用者はﾌﾟﾛｸﾞﾗﾑ内で可能な限り早くMCUSRを読み、そして解除(0)すべきです。別のﾘｾｯﾄが起こる前にこのﾚｼﾞｽﾀが解除(0)されると、そのﾘｾｯﾄ元はﾘｾｯﾄ ﾌﾗｸﾞを調べることによって得られます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]34

8.10.2. WDTCSR - ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ制御ﾚｼﾞｽﾀ (Watchdog Timer Control Register)
ﾋﾞｯﾄ
($60)
Read/Write
初期値

7

6

5

4

3

2

1

0

WDIF

WDIE

WDP3

WDCE

WDE

WDP2

WDP1

WDP0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
不定

R/W
0

R/W
0

R/W
0

WDTCSR● ﾋﾞｯﾄ7 - WDIF : ｳｫｯﾁﾄﾞｯｸﾞ割り込み要求ﾌﾗｸﾞ (Watchdog Interrupt Flag)

ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏが割り込みに設定され、ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏで計時完了が起こると、本ﾋﾞｯﾄが設定(1)されます。対応する割り込み処理ﾍﾞｸﾀを実行すると、WDIFはﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにWDIFはこのﾌﾗｸﾞへの論理1書き込みによっても解除(0)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄとｳｫｯﾁﾄﾞｯｸﾞ割り込み許可(WDIE)が設定(1)されていれば、ｳｫｯﾁﾄﾞｯｸﾞ計時完了割り込みが実行されます。
● ﾋﾞｯﾄ6 - WDIE : ｳｫｯﾁﾄﾞｯｸﾞ割り込み許可 (Watchdog Interrupt Enable)

このﾋﾞｯﾄが1を書かれ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ｳｫｯﾁﾄﾞｯｸﾞ割り込みが許可されます。この設定(=1)との組み合わせでｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ許可(WDE)ﾋﾞｯﾄが解除(0)されると、割り込み動作種別になり、ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏで計時完了が起こると、対応する割り込みが実行されます。
WDEが設定(1)されると、ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏは割り込み及びｼｽﾃﾑ ﾘｾｯﾄ動作種別になります。ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏでの最初の計時完了がｳｫｯﾁﾄﾞｯｸﾞ割り込み要求(WDIF)ﾌﾗｸﾞを設定(1)します。対応する割り込みﾍﾞｸﾀの実行はﾊｰﾄﾞｳｪｱによってWDIEとWDIFを自動的に解除(0)します(ｳｫｯﾁﾄﾞｯｸﾞはｼｽﾃﾑ ﾘｾｯﾄ動作になります)。これは割り込みを使う間のｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ保護を維持するのに有用です。割
り込み及びｼｽﾃﾑ ﾘｾｯﾄ動作種別に留まるには、各割り込み後にWDIEが設定(1)されなければなりません。然しながら、ｳｫｯﾁﾄﾞｯｸﾞ ｼｽ
ﾃﾑ ﾘｾｯﾄ動作種別の安全機能に危険を及ぼすかもしれないため、これは割り込み処理ﾙｰﾁﾝ自身内で行われるべきではありません。次の計時完了に先立って割り込みが実行されない場合、ｼｽﾃﾑ ﾘｾｯﾄが適用(実行)されます。
表8-4. ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ設定
WDTON WDE
WDIE
1
0
0
1
0
1
1
1
0
1
1
1
0
x
x

動作種別
計時完了での動作
停止
なし
割り込み
割り込み
ｼｽﾃﾑ ﾘｾｯﾄ
ﾘｾｯﾄ
割り込み及びｼｽﾃﾑ ﾘｾｯﾄ 割り込み、その後ｼｽﾃﾑ ﾘｾｯﾄ動作種別
ｼｽﾃﾑ ﾘｾｯﾄ
ﾘｾｯﾄ

(訳注)
左表のWDTONﾋｭｰｽﾞ値はﾌﾟ
ﾛｸﾞﾗﾑ=0, 非ﾌﾟﾛｸﾞﾗﾑ=1で表記しています。従って原書の表と逆論理になっています。

● ﾋﾞｯﾄ4 - WDCE : ｳｫｯﾁﾄﾞｯｸﾞ変更許可 (Watchdog Change Enable)

このﾋﾞｯﾄはｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ許可(WDE)と前置分周器ﾋﾞｯﾄの変更用の時間制限手順で使われます。WDEﾋﾞｯﾄの解除(0)や前置分周器ﾋﾞｯﾄ変更のため、WDCEは設定(1)されなければなりません。
一旦1を書かれると、4ｸﾛｯｸ周期後にﾊｰﾄﾞｳｪｱがWDCEを解除(0)します。
● ﾋﾞｯﾄ3 - WDE : ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ許可 (Watchdog System Reset Enable)

WDEはMCU状態ﾚｼﾞｽﾀ(MCUSR)のｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ ﾌﾗｸﾞ(WDRF)によって無効にされます。これはWDRFが設定(1)されると、WDEが常に設定(1)されることを意味します。WDEを解除(0)するにはWDRFが先に解除(0)されなければなりません。この特徴は失敗を引き起こす状態中の複数ﾘｾｯﾄと失敗後の安全な起動を保証します。
● ﾋﾞｯﾄ5,2～0 - WDP3～0 : ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ前置分周選択 (Watchdog Timer Prescaler 3,2,1 and 0)

このWDP3～0ﾋﾞｯﾄはｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏが走行する時のｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏの前置分周を決めます。各種前置分周値と対応する計時完了
周期は下表で示されます。
表8-5. ｳｫｯﾁﾄﾞｯｸﾞ前置分周選択
WDP3
0
1
WDP2
0
1
0
1
WDP1
0
1
0
1
0
1
0
1
WDP0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
WDT発振周期数 2k
4k
8k
16k 32k 64k 128k 256k 512k 1024k(予約)
代表的計時完了
16ms 32ms 64ms 0.125s 0.25s 0.5s 1.0s 2.0s 4.0s 8.0s
周期 (VCC=5V)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]35

9. 割り込み
この項はATmega16U4/32U4によって実行される割り込み操作の詳細を記述します。AVR割り込み操作の一般説明については9頁の「ﾘｾｯﾄと割り込みの扱い」を参照してください。

9.1. ATmega16U4/32U4の割り込みﾍﾞｸﾀ
表9-1. ﾘｾｯﾄと割り込みのﾍﾞｸﾀ
ﾍﾞｸﾀ番号
ﾌﾟﾛｸﾞﾗﾑ ｱﾄﾞﾚｽ (注2)
発生元
備考
1
$0000
(注1) ﾘｾｯﾄ
電源ON, WDT, BOD等の各種ﾘｾｯﾄ
2
$0002
INT0
外部割り込み要求0
3
$0004
INT1
外部割り込み要求1
4
$0006
INT2
外部割り込み要求2
5
$0008
INT3
外部割り込み要求3
6$000AReserve
(予約)
7
$000C
Reserve
(予約)
8
$000E
INT6
外部割り込み要求69$0010
Reserve
(予約)
10
$0012
PCINT0 (PCI0)
ﾋﾟﾝ変化0群割り込み要求
11
$0014
USB一般
USB一般割り込み要求
12$0016
USBｴﾝﾄﾞﾎﾟｲﾝﾄ
USBｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み要求
13$0018
ｳｫｯﾁﾄﾞｯｸﾞ WDT
ｳｫｯﾁﾄﾞｯｸﾞ計時完了
14$001A
Reserve
(予約)
15
$001C
Reserve
(予約)
16
$001E
Reserve
(予約)
17
$0020
ﾀｲﾏ/ｶｳﾝﾀ1 CAPT
ﾀｲﾏ/ｶｳﾝﾀ1捕獲発生
18$0022
ﾀｲﾏ/ｶｳﾝﾀ1 COMPA
ﾀｲﾏ/ｶｳﾝﾀ1比較A一致
19$0024
ﾀｲﾏ/ｶｳﾝﾀ1 COMPB
ﾀｲﾏ/ｶｳﾝﾀ1比較B一致
20$0026
ﾀｲﾏ/ｶｳﾝﾀ1 COMPC
ﾀｲﾏ/ｶｳﾝﾀ1比較C一致
21$0028
ﾀｲﾏ/ｶｳﾝﾀ1 OVF
ﾀｲﾏ/ｶｳﾝﾀ1溢れ
22$002A
ﾀｲﾏ/ｶｳﾝﾀ0 COMPA
ﾀｲﾏ/ｶｳﾝﾀ0比較A一致
23$002C
ﾀｲﾏ/ｶｳﾝﾀ0 COMPB
ﾀｲﾏ/ｶｳﾝﾀ0比較B一致
24$002E
ﾀｲﾏ/ｶｳﾝﾀ0 OVF
ﾀｲﾏ/ｶｳﾝﾀ0溢れ
25$0030
SPI STC
SPI 転送完了
26$0032
USART RXUSART 受信完了
27$0034
USART UDRE
USART 送信緩衝部空き
28$0036
USART TX
USART 送信完了
29$0038
ｱﾅﾛｸﾞ比較器 ANA_COMP
ｱﾅﾛｸﾞ比較器出力遷移
30$003A
A/D変換器 ADC
A/D変換完了
31$003C
EEPROM EE_RDY
EEPROM 操作可
32$003E
ﾀｲﾏ/ｶｳﾝﾀ3 CAPT
ﾀｲﾏ/ｶｳﾝﾀ3捕獲発生
33$0040
ﾀｲﾏ/ｶｳﾝﾀ3 COMPA
ﾀｲﾏ/ｶｳﾝﾀ3比較A一致
34$0042
ﾀｲﾏ/ｶｳﾝﾀ3 COMPB
ﾀｲﾏ/ｶｳﾝﾀ3比較B一致
35$0044
ﾀｲﾏ/ｶｳﾝﾀ3 COMPC
ﾀｲﾏ/ｶｳﾝﾀ3比較C一致
36$0046
ﾀｲﾏ/ｶｳﾝﾀ3 OVF
ﾀｲﾏ/ｶｳﾝﾀ3溢れ
37$0048
2線直列ｲﾝﾀｰﾌｪｰｽ TWI
2線直列ｲﾝﾀｰﾌｪｰｽ状態変化
38$004A
SPM命令 SPM_RDY
SPM命令操作可
39$004C
ﾀｲﾏ/ｶｳﾝﾀ4 COMPA
ﾀｲﾏ/ｶｳﾝﾀ4比較A一致
40$004E
ﾀｲﾏ/ｶｳﾝﾀ4 COMPB
ﾀｲﾏ/ｶｳﾝﾀ4比較B一致
41$0050
ﾀｲﾏ/ｶｳﾝﾀ4 COMPD
ﾀｲﾏ/ｶｳﾝﾀ4比較D一致
42$0052
ﾀｲﾏ/ｶｳﾝﾀ4 OVF
ﾀｲﾏ/ｶｳﾝﾀ4溢れ
43$0054
ﾀｲﾏ/ｶｳﾝﾀ4 FPF
ﾀｲﾏ/ｶｳﾝﾀ4障害保護
注1: BOOTRSTﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されると、ﾃﾞﾊﾞｲｽはﾘｾｯﾄでﾌﾞｰﾄ ﾛｰﾀﾞ ｱﾄﾞﾚｽへ飛びます。215頁の「ﾌﾞｰﾄ ﾛｰﾀﾞ支援 - 書き込み
中読み出し可能な自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ」をご覧ください。
注2: MCU制御ﾚｼﾞｽﾀ(MCUCR)の割り込みﾍﾞｸﾀ選択(IVSEL)ﾋﾞｯﾄが設定(1)されると、割り込みﾍﾞｸﾀはﾌﾞｰﾄ ﾌﾗｯｼｭ領域先頭(部)へ
移動されます。そして各割り込みﾍﾞｸﾀのｱﾄﾞﾚｽは、この表のｱﾄﾞﾚｽがﾌﾞｰﾄ ﾌﾗｯｼｭ領域の先頭ｱﾄﾞﾚｽに加算されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]36

本表はBOOTRST(ﾋｭｰｽﾞ)とIVSEL(割り込みﾍﾞｸﾀ
選択ﾋﾞｯﾄ)の様々な組み合わせに対するﾘｾｯﾄと割り込みﾍﾞｸﾀの配置を示します。ﾌﾟﾛｸﾞﾗﾑが決して割り込み元を許可しないのなら、割り込みﾍﾞｸﾀは使われず、これらの位置に通常のﾌﾟﾛｸﾞﾗﾑ ｺｰﾄﾞが置けます。これはﾘｾｯﾄ ﾍﾞｸﾀが応用領域の一方、割り込みﾍﾞｸﾀがﾌﾞｰﾄ領域、またはその逆の場
合でも同様です。

表9-2. ﾘｾｯﾄと割り込みﾍﾞｸﾀの配置
ﾘｾｯﾄ ﾍﾞｸﾀ ｱﾄﾞﾚｽ
BOOTRST IVSEL
割り込みﾍﾞｸﾀ先頭ｱﾄﾞﾚｽ
$0000
0
$0002
非ﾌﾟﾛｸﾞﾗﾑ(1)$0000
1
ﾌﾞｰﾄ領域先頭ｱﾄﾞﾚｽ＋$0002
0
ﾌﾞｰﾄ領域先頭ｱﾄﾞﾚｽ$0002
ﾌﾟﾛｸﾞﾗﾑ(0)1
ﾌﾞｰﾄ領域先頭ｱﾄﾞﾚｽ ﾌﾞｰﾄ領域先頭ｱﾄﾞﾚｽ＋$0002
注: ﾌﾞｰﾄ領域先頭ｱﾄﾞﾚｽは225頁の表27-8.で示されます。

9.1.1. 応用領域とﾌﾞｰﾄ領域間の割り込みﾍﾞｸﾀ移動
MCU制御ﾚｼﾞｽﾀ(MCUCR)は割り込みﾍﾞｸﾀ表の配置を制御します。

9.2. ﾍﾞｸﾀ移動用ﾚｼﾞｽﾀ
9.2.1. MCUCR - MCU制御ﾚｼﾞｽﾀ (MCU Control Register)ﾋﾞｯﾄ$35 ($55)
Read/Write
初期値

7

6

5

4

3

2

1

0

JTD

-

-

PUD

-

-

IVSEL

IVCE

R/W
0

R
0

R
0

R/W
0

R
0

R
0

R/W
0

R/W
0

MCUCR

● ﾋﾞｯﾄ1 - IVSEL : 割り込みﾍﾞｸﾀ選択 (Interrupt Vector Select)

IVSELﾋﾞｯﾄが解除(0)されると、割り込みﾍﾞｸﾀはﾌﾗｯｼｭ ﾒﾓﾘの先頭に配置されます。このﾋﾞｯﾄが設定(1)されると、割り込みﾍﾞｸﾀはﾌﾗｯ
ｼｭ ﾒﾓﾘのﾌﾞｰﾄ ﾛｰﾀﾞ領域の始まりへ移動されます。ﾌﾞｰﾄ ﾌﾗｯｼｭ領域先頭の実際のｱﾄﾞﾚｽはBOOTSZﾋｭｰｽﾞによって決定されます。
詳細については217頁の「ﾌﾞｰﾄ ﾛｰﾀﾞ支援 - 書き込み中読み出し可能な自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ」章を参照してください。割り込みﾍﾞｸﾀ表の予期せぬ変更を防ぐため、IVSELﾋﾞｯﾄの変更は特別な書き込み手順に従わなければなりません。
1. 割り込みﾍﾞｸﾀ変更許可(IVCE)ﾋﾞｯﾄに1を書きます。
2. 4周期内に、欲した値をIVSELに書き、同時に0をIVCEへ書きます。
この手順が実行される間、割り込みは自動的に禁止されます。割り込みはIVCEが設定(1)される周期で禁止され、後続のIVSELに書く命令の後まで禁止されたままです。IVSELが書かれなければ、割り込みは4周期間禁止されたままです。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄはこの自動禁止によって影響されません。
注: 割り込みﾍﾞｸﾀがﾌﾞｰﾄ ﾛｰﾀﾞ領域に配置され、BLB02ﾌﾞｰﾄ施錠ﾋﾞｯﾄがﾌﾟﾛｸﾞﾗﾑ(0)されると、応用領域から実行する間中、割り込みが禁止されます。割り込みﾍﾞｸﾀが応用領域に配置され、BLB12ﾌﾞｰﾄ施錠ﾋﾞｯﾄがﾌﾟﾛｸﾞﾗﾑ(0)されると、ﾌﾞｰﾄ ﾛｰﾀﾞ領域から実行する
間中、割り込みが禁止されます。ﾌﾞｰﾄ施錠ﾋﾞｯﾄの詳細については215頁の「ﾌﾞｰﾄ ﾛｰﾀﾞ支援 - 書き込み中読み出し可能な自己ﾌﾟ
ﾛｸﾞﾗﾐﾝｸﾞ」を参照してください。
● ﾋﾞｯﾄ0 - IVCE : 割り込みﾍﾞｸﾀ変更許可 (Interrupt Vector Change Enable)

IVCEﾋﾞｯﾄは割り込みﾍﾞｸﾀ選択(IVSEL)ﾋﾞｯﾄの変更を許可するために論理1を書かれなければなりません。IVCEはIVSELが書かれる
時、またはIVCEが書かれた後の4周期後、ﾊｰﾄﾞｳｪｱによって解除(0)されます。上記IVSELで説明されるようにIVCEﾋﾞｯﾄの設定(1)は割り込みを(一時的に)禁止します。以下のｺｰﾄﾞ例をご覧ください。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
MOVE_IVT:
IN
R16,MCUCR
MOV
R17,R16
ORI
R16,(1<<IVCE)OUT
MCUCR,R16
ORI
R17,(1<<IVSEL)OUTMCUCR,R17
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void Move_interrupts(void){uchr temp;
temp = MCUCR;
MCUCR = temp|(1<<IVCE);MCUCR = temp|(1<<IVSEL);};現MCUCR値取得;現MCUCR値複写;IVCE論理1値を取得;IVCEに論理1書き込み;IVSEL論理1値を取得;ﾌﾞｰﾄ領域へ割り込みﾍﾞｸﾀを移動;呼び出し元へ復帰/* 一時定数定義 *//* 現MCUCR値取得 *//* IVCEに論理1書き込み *//* ﾌﾞｰﾄ領域へ割り込みﾍﾞｸﾀを移動 */ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]37

10. 外部割り込み
外部割り込みはINT6,3～0ﾋﾟﾝまたはPCINT0～7ﾋﾟﾝの何れかによって起動されます。許可したなら、例えINT6,3～0またはPCINT0～7ﾋﾟﾝが出力として設定されても割り込みが起動することに注目してください。この特徴はｿﾌﾄｳｪｱ割り込みの生成方法を提供します。
ﾋﾟﾝ変化割り込みPCI0は許可したPCINT0～7の何れかが切り替わると起動します。ﾋﾟﾝ変化割り込み許可ﾚｼﾞｽﾀ0(PCMSK0)は、どのﾋﾟ
ﾝがﾋﾟﾝ変化割り込み要因となるかを制御します。PCINT0～7のﾋﾟﾝ変化割り込みは非同期に検知されます。これはそれらの割り込みがｱｲﾄﾞﾙ動作以外の休止形態からもﾃﾞﾊﾞｲｽを起動するのに使えることを意味します。
INT7～0割り込みは上昇端または下降端(含む両端)、またはLowﾚﾍﾞﾙによって起動できます。これは外部割り込み制御ﾚｼﾞｽﾀ(EICRA(INT3～0)とEICRB(INT6))の詳述で示される設定です。外部割り込みがﾚﾍﾞﾙ起動として設定かつ許可されると、そのﾋﾟﾝがLowに保持される限り、割り込みは(継続的に)起動します。INT6の上昇端または下降端割り込みの認知は17頁の「ｸﾛｯｸ系統とその配給」で記述されるI/Oｸﾛｯｸの存在を必要とすることに注意してください。Lowﾚﾍﾞﾙ割り込みとINT3～0のｴｯｼﾞ割り込みは非同期に検知されます。これはそれらの割り込みがｱｲﾄﾞﾙ動作以外の休止形態からもﾃﾞﾊﾞｲｽを起動するのに使えることを意味します。I/Oｸﾛｯｸ
はｱｲﾄﾞﾙ動作を除く全休止形態で停止されます。
ﾚﾍﾞﾙ起動割り込みがﾊﾟﾜｰﾀﾞｳﾝ動作からの起動に使われる場合、この必要としたﾚﾍﾞﾙはﾚﾍﾞﾙ割り込みを起動する完全な起動復帰のため、MCUに対して充分長く保持されなければならないことに注意してください。このﾚﾍﾞﾙが起動時間の最後に先立って消滅すると、MCUは今までどおり起動しますが、割り込みが生成されません。起動時間は17頁の「ｼｽﾃﾑ ｸﾛｯｸとｸﾛｯｸ選択」で示されるように
SUTﾋｭｰｽﾞとCKSELﾋｭｰｽﾞで定義されます。

10.1. ﾋﾟﾝ変化割り込みﾀｲﾐﾝｸﾞ (訳注:共通性から本項追加)
ﾋﾟﾝ変化割り込みの例は図10-1.で示されます。
図10-1. ﾋﾟﾝ変化割り込みﾀｲﾐﾝｸﾞ
PCINTn

D

Q

A

D

Q

B

E

PCMSKmのPCINTn

clk
～

本数分合成

clk

C

D

Q

D

D

Q

E

D

PCIFm

Q

PCINTn
A: ﾗｯﾁ
B: 遅延
C: 変化
D: 遅延
E: 遅延
PCIFm

10.2. 外部割り込み用ﾚｼﾞｽﾀ
10.2.1. EICRA - 外部割り込み制御ﾚｼﾞｽﾀA (External Interrupt Control Register A)
外部割り込み制御ﾚｼﾞｽﾀAは割り込み条件制御ﾋﾞｯﾄを含みます。
ﾋﾞｯﾄ
($69)
Read/Write
初期値

7

6

5

4

3

2

1

0

ISC31

ISC30

ISC21

ISC20

ISC11

ISC10

ISC01

ISC00

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

EICRA

● ﾋﾞｯﾄ7～0 - ISC31,0～ISC01,0 : 外部割り込み3～0条件制御 (External Interrupt3～0 Sense Control Bits)

外部割り込み3～0はｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄと外部割り 表10-1. 外部割り込み3～0 割り込み条件
込み許可ﾚｼﾞｽﾀ(EIMSK)の対応する割り込み許可ﾋﾞｯﾄが設定(1)される場合のIN
ISCn1 ISCn0
割り込み発生条件
T3～0外部ﾋﾟﾝによって活性(有効)にされます。割り込みを活性にする外部INT30
INTnﾋﾟﾝのLowﾚﾍﾞﾙ
0～0ﾋﾟﾝのｴｯｼﾞとﾚﾍﾞﾙは右表で定義されます。INT3～0のｴｯｼﾞは非同期に記録さINTnﾋﾟﾝの論理変化(両端)01れます。下表で与えられた最小ﾊﾟﾙｽ幅より広いINT3～0のﾊﾟﾙｽは割り込みを生成します。より短いﾊﾟﾙｽは割り込みの発生が保証されません。Lowﾚﾍﾞﾙ割り込み
1
INTnﾋﾟﾝの下降端0が選択される場合、Lowﾚﾍﾞﾙは割り込みを生成するために現在実行している命
INTnﾋﾟﾝの上昇端
1
1
令の完了まで保たれなければなりません。許可したなら、ﾚﾍﾞﾙで起動する割り込
注: n=3～0
みはそのﾋﾟﾝがLowを保持される限り、割り込み要求を(連続的に)生成します。
ISCn 1,0 ﾋﾞｯﾄ変更時、割り込みはEIMSKで
ISCnﾋﾞｯﾄ変更時、割り込みが起き得ます。従って最初にEIMSKの割り込み許可
割り込み許可ﾋﾞｯﾄの解除(0)によって禁止さﾋﾞｯﾄを解除(0)することでINTn割り込みを禁止することが推奨されます。その後れなければなりません。さもなければﾋﾞｯﾄがISCnﾋﾞｯﾄは変更できます。最後にINTn割り込み要求ﾌﾗｸﾞは割り込みが再び許可変更される時に割り込みが起き得ます。
される前に外部割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(EIFR)の外部割り込みn要求(INTFn)ﾌ
ﾗｸﾞに論理1を書くことにより解除(0)されるべきです。
表10-2. 非同期外部割り込み特性

ｼﾝﾎﾞﾙ

tINT

項目
非同期外部割り込み最小ﾊﾟﾙｽ幅

最小 代表 最大 単位50nsATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]38

10.2.2. EICRB - 外部割り込み制御ﾚｼﾞｽﾀB (External Interrupt Control Register B)
ﾋﾞｯﾄ
($6A)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

ISC61

ISC60

-

-

-

-

R
0

R
0

R/W
0

R/W
0

R
0

R
0

R
0

R
0

EICRB

● ﾋﾞｯﾄ7,6 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読めます。
● ﾋﾞｯﾄ5,4 - ISC61,0 : 外部割り込み6条件制御 (External Interrupt6 Sense Control Bits)

外部割り込み6はｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄと外部割り込み
許可ﾚｼﾞｽﾀ(EIMSK)の対応する割り込み許可ﾋﾞｯﾄが設定(1)される場合のINT6外部ﾋﾟﾝによって活性(有効)にされます。割り込みを活性にする外部INT6ﾋﾟﾝのｴｯ
ｼﾞとﾚﾍﾞﾙは右表で定義されます。INT6ﾋﾟﾝの値はｴｯｼﾞ検知前に採取されています。ｴｯｼﾞまたは論理変化割り込みが選択される場合、1ｸﾛｯｸ周期よりも長く留まるﾊﾟﾙｽは割り込みを生成します。より短いﾊﾟﾙｽは割り込みの発生が保証されません。ｼｽﾃﾑ ｸﾛｯｸ前置分周器が許可される場合、CPUｸﾛｯｸ周波数がXTAL周
波数よりも低くできることを考慮してください。Lowﾚﾍﾞﾙ割り込みが選択される場
合、Lowﾚﾍﾞﾙは割り込みを生成するために現在実行している命令の完了まで保たれなければなりません。許可したなら、ﾚﾍﾞﾙで起動する割り込みはそのﾋﾟﾝがLowを保持される限り割り込み要求を(連続的に)生成します。

表10-3. 外部割り込み6 割り込み条件
ISC61 ISC60
割り込み発生条件
0
INT6ﾋﾟﾝのLowﾚﾍﾞﾙ0
INT6ﾋﾟﾝの論理変化(両端)011INT6ﾋﾟﾝの下降端
0INT6ﾋﾟﾝの上昇端
11
注: ISC6 1,0 ﾋﾞｯﾄ変更時、割り込みはEIMSKで割り込み許可ﾋﾞｯﾄの解除(0)により禁止されなければなりません。さもなければﾋﾞｯﾄが変更される時に割り込みが起き得ます。

● ﾋﾞｯﾄ3～0 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読めます。

10.2.3. EIMSK - 外部割り込み許可ﾚｼﾞｽﾀ (External Interrupt Mask Register)ﾋﾞｯﾄ$1D ($3D)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

INT6

-

-

INT3

INT2

INT1

INT0

R
0

R/W
0

R
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

EIMSK

● ﾋﾞｯﾄ6,3～0 - INT6,INT3～INT0 : 外部割り込み6,3～0 許可 (External Interrupt Request 6,3～0 Enable)

ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)され、INT6,3～0ﾋﾞｯﾄが1を書かれると、対応する外部ﾋﾟﾝ割り込みが許可されます。外部割り込み制御ﾚｼﾞｽﾀ(EICRAとEICRB)の割り込み条件制御n(ISCn1,ISCn0)ﾋﾞｯﾄはその外部割り込みが上昇端、下降端、両端、またはLowﾚﾍﾞﾙのどれで活性(有効)にされるかを定義します。例えそのﾋﾟﾝが出力として設定されても、そのﾋﾟﾝの動きは割り込
み要求を引き起こします。これはｿﾌﾄｳｪｱ割り込みを生成する方法を提供します。

10.2.4. EIFR - 外部割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ (External Interrupt Flag Register)ﾋﾞｯﾄ$1C ($3C)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

INTF6

-

-

INTF3

INTF2

INTF1

INTF0

R
0

R/W
0

R
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

EIFR

● ﾋﾞｯﾄ6,3～0 - INTF6,INTF3～INTF0 : 外部割り込み6,3～0要求ﾌﾗｸﾞ (External Interrupt Flag6,3～0)

INT6,3～0ﾋﾟﾝ上のｴｯｼﾞまたは論理変化が割り込み要求を起動すると、INTF6,3～0が設定(1)になります。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄと外部割り込み許可ﾚｼﾞｽﾀ(EIMSK)の対応する割り込み許可(INT6,3～0)ﾋﾞｯﾄが設定(1)なら、MCUは対応する割
り込みﾍﾞｸﾀへ飛びます。このﾌﾗｸﾞは割り込みﾙｰﾁﾝが実行されると解除(0)されます。代わりにこのﾌﾗｸﾞは論理1を書くことによっても解除(0)できます。INT6,3～0がﾚﾍﾞﾙ割り込みとして設定されると、このﾌﾗｸﾞは常に解除(0)されます。INT3～0割り込み禁止で休止形態へ移行すると、これらのﾋﾟﾝの入力緩衝部が禁止されることに注意してください。これはINTF3～0ﾌﾗｸﾞを設定(1)する内部信号の論理変化を起こすかもしれません。より多くの情報については43頁の「ﾃﾞｼﾞﾀﾙ入力許可と休止形態」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]39

10.2.5. PCICR - ﾋﾟﾝ変化割り込み制御ﾚｼﾞｽﾀ (Pin Change Interrupt Control Register)
ﾋﾞｯﾄ
($68)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

-

-

-

PCIE0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R/W
0

PCICR

● ﾋﾞｯﾄ7～1 - Res : 予約 (Reserved) (訳注:共通性から本項追加)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ0 - PCIE0 : ﾋﾟﾝ変化0群割り込み許可 (Pin Change Interrupt Enable 0)

ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)され、PCIE0ﾋﾞｯﾄが設定(1)されると、ﾋﾟﾝ変化0群割り込みが許可されます。
許可したPCINT0～7ﾋﾟﾝの何れかの変化が割り込みを起こします。このﾋﾟﾝ変化割り込み要求に対応する割り込みはPCI0割り込みﾍﾞｸ
ﾀから実行されます。PCINT0～7ﾋﾟﾝはﾋﾟﾝ変化割り込み許可ﾚｼﾞｽﾀ0(PCMSK0)によって個別に許可されます。

10.2.6. PCIFR - ﾋﾟﾝ変化割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ (Pin Change Interrupt Flag Register)ﾋﾞｯﾄ$1B ($3B)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

-

-

-

PCIF0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R/W
0

PCIFR

● ﾋﾞｯﾄ7～1 - Res : 予約 (Reserved) (訳注:共通性から本項追加)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ0 - PCIF0 : ﾋﾟﾝ変化0群割り込み要求ﾌﾗｸﾞ (Pin Change Interrupt Flag 0)

PCINT0～7ﾋﾟﾝの何れかの論理変化が割り込み要求を起動すると、PCIF0が設定(1)になります。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄとﾋﾟﾝ変化割り込み制御ﾚｼﾞｽﾀ(PCICR)のﾋﾟﾝ変化0群割り込み許可(PCIE0)ﾋﾞｯﾄが設定(1)なら、MCUは対応する割り込み
ﾍﾞｸﾀへ飛びます。このﾌﾗｸﾞは割り込み処理ﾙｰﾁﾝが開始されると解除(0)されます。代わりにこのﾌﾗｸﾞは論理1を書くことによっても解除(0)できます。

10.2.7. PCMSK0 - ﾋﾟﾝ変化割り込み許可ﾚｼﾞｽﾀ0 (Pin Change Enable Mask 0～7)
ﾋﾞｯﾄ
($6B)
Read/Write
初期値

7

6

5

4

3

2

1

0

PCINT7PCINT6

PCINT5

PCINT4

PCINT3

PCINT2

PCINT1

PCINT0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

PCMSK0● ﾋﾞｯﾄ7～0 - PCINT7～PCINT0 : ﾋﾟﾝ変化割り込み7～0許可 (Pin Change Enable Mask 7～0)

各PCINT0～7ﾋﾞｯﾄは対応するI/Oﾋﾟﾝでﾋﾟﾝ変化割り込みが許可されるかどうかを選びます。PCINT0～7とﾋﾟﾝ変化割り込み制御ﾚｼﾞｽ
ﾀ(PCICR)のPCIE0が設定(1)なら、対応するI/Oﾋﾟﾝのﾋﾟﾝ変化割り込みが許可されます。PCINT0～7が解除(0)されると、対応するI/O
ﾋﾟﾝのﾋﾟﾝ変化割り込みは禁止されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]40

11. 入出力ﾎﾟｰﾄ
11.1. 序説
全てのAVRのﾎﾟｰﾄは標準ﾃﾞｼﾞﾀﾙI/Oﾎﾟｰﾄとして使われる時に真の読み-変更-書き 図11-1. 入出力ﾋﾟﾝ等価回路(ﾘｰﾄﾞ ﾓﾃﾞｨﾌｧｲ ﾗｲﾄ)を機能的に持ちます。これはSBIとCBI命令で他のどのﾋﾟﾝの方
VCC
VCC
向をも無意識に変更することなく、1つのﾎﾟｰﾄ ﾋﾟﾝの方向を変更できることを意味します。(出力として設定されていれば)駆動値を変更、または(入力として設定されていれば)ﾌﾟﾙｱｯﾌﾟ抵抗を許可/禁止する時にも同じく適用されます。各出力緩衝部は論理回路
高い吐き出し(ｿｰｽ)と吸い込み(ｼﾝｸ)の両能力で対称的な駆動特性を持ちます。こRpu
Cpinのﾋﾟﾝ駆動部はLED(表示器)を直接駆動するのに充分な強さです。全てのﾎﾟｰﾄ ﾋﾟﾝ
Pxn
は個別に選択可能な、供給電圧で抵抗値が変化しないﾌﾟﾙｱｯﾌﾟ抵抗を持っていま
詳細については「標準ﾃﾞｼﾞﾀﾙI/O」図
す。全てのI/Oﾋﾟﾝは図11-1.で示されるようにVCCとGNDの両方に保護ﾀﾞｲｵｰﾄﾞがあをご覧くださいります。各値の完全な一覧については248頁の「電気的特性」を参照してください。
本項内の全てのﾚｼﾞｽﾀとﾋﾞｯﾄの参照は一般形で記されます。小文字の'x'はﾎﾟｰﾄ番
号文字、小文字の'n'はﾋﾞｯﾄ番号を表します。けれどもﾌﾟﾛｸﾞﾗﾑ内でﾚｼﾞｽﾀやﾋﾞｯﾄ定義に使う時は正確な形式(例えば、ここで一般に記されたPORTxnがﾎﾟｰﾄBのﾋﾞｯﾄ3に対してはPORTB3)が使われなければなりません。物理的なI/Oﾚｼﾞｽﾀとﾋﾞｯﾄ位置は53頁の「I/O
ﾎﾟｰﾄ用ﾚｼﾞｽﾀ」で一覧されます。
各々1つの出力ﾚｼﾞｽﾀ(PORTx)、方向ﾚｼﾞｽﾀ(DDRx)、入力ﾚｼﾞｽﾀ(PINx)の各ﾎﾟｰﾄに対して、3つI/Oﾒﾓﾘ ｱﾄﾞﾚｽ位置が割り当てられます。入力ﾚｼﾞｽﾀのI/O位置は読むだけで、一方出力ﾚｼﾞｽﾀと方向ﾚｼﾞｽﾀは読み書き(両方)です。けれどもPINxﾚｼﾞｽﾀのﾋﾞｯﾄへの論理
1書き込みは、出力ﾚｼﾞｽﾀの対応ﾋﾞｯﾄ値を(1/0)反転する結果になります。加えてMCU制御ﾚｼﾞｽﾀ(MCUCR)のﾌﾟﾙｱｯﾌﾟ禁止(PUD)ﾋﾞｯﾄが設定(1)されると、全ﾎﾟｰﾄで全ﾋﾞｯﾄに対してﾌﾟﾙｱｯﾌﾟ機能を禁止します。
標準ﾃﾞｼﾞﾀﾙI/OとしてのI/Oﾎﾟｰﾄの使用は次の「標準ﾃﾞｼﾞﾀﾙ入出力としてのﾎﾟｰﾄ」で記述されます。多くのﾎﾟｰﾄ ﾋﾟﾝはﾃﾞﾊﾞｲｽの周辺機能用の交換機能と多重化されます。ﾎﾟｰﾄ ﾋﾟﾝとの各交換機能のｲﾝﾀｰﾌｪｰｽ法は44頁の「交換ﾎﾟｰﾄ機能」で記述されます。交換機
能の完全な記述については個別機能部項目を参照してください。
ﾎﾟｰﾄ ﾋﾟﾝのいくつかの交換機能の許可は、そのﾎﾟｰﾄ内の他のﾋﾟﾝの標準ﾃﾞｼﾞﾀﾙ入出力としての使用に影響しないことに注意してください。

11.2. 標準ﾃﾞｼﾞﾀﾙ入出力としてのﾎﾟｰﾄ
このﾎﾟｰﾄは任意の内部ﾌﾟﾙｱｯﾌﾟ付き双方向I/Oﾎﾟｰﾄです。図11-2.はここで属にPxnと呼ばれるI/Oﾎﾟｰﾄ ﾋﾟﾝの1つの機能説明を示します。
図11-2. 標準ﾃﾞｼﾞﾀﾙ入出力回路構成
VCC
RDx:DDRx読み

8-bit Data Bus

DDxn:方向ﾗｯﾁ
WDx:DDRx書き

PUD:ﾌﾟﾙｱｯﾌﾟ禁止
D

Q
R

RESET:ﾘｾｯﾄ
RRx:ﾎﾟｰﾄxﾗｯﾁ読み

1
0

D

WPx:PINx書き
WRx:PORTx書きQ

Pxn

PORTxn:出力ﾗｯﾁ

R

SLEEP:休止制御

RESET:ﾘｾｯﾄ
RPx:ﾎﾟｰﾄxﾋﾟﾝ読み

同期化回路
Q

D

Q

PINxn:入力ﾚｼﾞｽﾀ

D
E

clkI/O:I/Oｸﾛｯｸ
注: WRx, WPx WDx, RRx, RPx, RDxは同一ﾎﾟｰﾄ内の全ﾋﾟﾝで共通です。
clkI/O,SLEEP, PUDは全ﾎﾟｰﾄで共通です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

41

11.2.1. ﾋﾟﾝの設定
各ﾎﾟｰﾄ ﾋﾟﾝは3つのﾚｼﾞｽﾀ ﾋﾞｯﾄDDxn、PORTxn、PINxnから成ります。53頁の「I/Oﾎﾟｰﾄ用ﾚｼﾞｽﾀ」で示されるように、DDxnﾋﾞｯﾄはDDRx
I/Oｱﾄﾞﾚｽ、PORTxnﾋﾞｯﾄはPORTx I/Oｱﾄﾞﾚｽ、PINxﾋﾞｯﾄはPINx I/Oｱﾄﾞﾚｽでｱｸｾｽされます。
DDRxﾚｼﾞｽﾀ内のDDxnﾋﾞｯﾄはそのﾋﾟﾝの方向を選択します。DDxnが論理1を書かれるとPxnは出力ﾋﾟﾝとして設定されます。DDxnが論理0を書かれるとPxnは入力ﾋﾟﾝとして設定されます。
そのﾋﾟﾝが入力ﾋﾟﾝとして設定される時にPORTxnが論理1を書かれると、ﾌﾟﾙｱｯﾌﾟ抵抗が活性(有効)にされます。ﾌﾟﾙｱｯﾌﾟ抵抗をOFFに切り替えるにはPORTxnが論理0を書かれるか、またはそのﾋﾟﾝが出力ﾋﾟﾝとして設定されなければなりません。ﾎﾟｰﾄ ﾋﾟﾝは例えｸﾛｯｸが動いていなくても、ﾘｾｯﾄ条件が活性(有効)になるとHi-Zにされます。
そのﾋﾟﾝが出力ﾋﾟﾝとして設定される時にPORTxnが論理1を書かれると、そのﾎﾟｰﾄ ﾋﾟﾝはHigh(1)に駆動されます。そのﾋﾟﾝが出力ﾋﾟﾝとして設定される時にPORTxnが論理0を書かれると、そのﾎﾟｰﾄ ﾋﾟﾝはLow(0)に駆動されます。

11.2.2. ﾋﾟﾝの出力交互切り替え
PINxnへの論理1書き込みはDDRxnの値に拘らず、PORTxnの値を反転切り替えします。SBI命令がﾎﾟｰﾄ内の1ﾋﾞｯﾄの反転切り替えに使えることに注目してください。

11.2.3. 入出力間の切り替え
Hi-Z入力(DDxn=0, PORTxn=0)とHigh出力(DDxn=1, PORTxn=1)間の切り替え時、ﾌﾟﾙｱｯﾌﾟ許可入力(DDxn=0, PORTxn=1)またはLow出力(DDxn=1, PORTxn=0)のどちらかの中間状態が生じるに違いありません。通常、高ｲﾝﾋﾟｰﾀﾞﾝｽ環境は強力なHigh(吐き出し)
駆動部とﾌﾟﾙｱｯﾌﾟ間の違いに気付かないので、ﾌﾟﾙｱｯﾌﾟが許可された状態は十分受け入れられます。この事例でないなら、全ﾎﾟｰﾄの全ﾌﾟﾙｱｯﾌﾟを禁止するために、MCU制御ﾚｼﾞｽﾀ(MCUCR)のﾌﾟﾙｱｯﾌﾟ禁止(PUD)ﾋﾞｯﾄが設定(1)できます。
ﾌﾟﾙｱｯﾌﾟ入力とLow出力間の切り替えは同じ問題を発生します。使用者は中間状態としてHi-Z入力(DDxn=0, PORTxn=0)またはHigh
出力(DDxn=1, PORTxn=1)のどちらかを使わなければなりません。
表11-1.はﾋﾟﾝ値に対する制御信号の一覧を示します。
表11-1. ﾎﾟｰﾄ ﾋﾟﾝの設定
DDxn
PORTxn PUD (MCUCR)
0
X
0
0
0
1
0
1
1
1
X
0
X
1
1

入出力
入力
入力
入力
出力
出力

ﾌﾟﾙｱｯﾌﾟ抵抗
なし
あり
なし
なし
なし

備考
高ｲﾝﾋﾟｰﾀﾞﾝｽ (Hi-Z)
Pxnに外部からLowを入力すると吐き出し電流が流れます。
高ｲﾝﾋﾟｰﾀﾞﾝｽ (Hi-Z)
Low (吸い込み)出力
High (吐き出し)出力

11.2.4. ﾋﾟﾝ値の読み込み
DDxn方向ﾋﾞｯﾄの設定に関係なく、ﾎﾟｰﾄ ﾋﾟﾝはPINxnﾚｼﾞｽ
ﾀ ﾋﾞｯﾄを通して読めます。図11-2.で示されるようにPINxn
ﾚｼﾞｽﾀ ﾋﾞｯﾄと先行するﾗｯﾁは同期化回路を構成します。
これは物理ﾋﾟﾝが内部ｸﾛｯｸのｴｯｼﾞ付近で値を変える場
合の未定義状態(ﾒﾀ ｽﾃｰﾌﾞﾙ)を避けるために必要とされますが、それは遅延も持ち込みます。図11-3.は外部的に加えられたﾋﾟﾝ値を読む時の同期化ﾀｲﾐﾝｸﾞ図を示します。伝播遅延の最小と最大は各々tpd,minとtpd,maxで示されます。
(図11-3.で)ｼｽﾃﾑ ｸﾛｯｸの最初の下降端直後から始まるｸ
ﾛｯｸ周期を考察してください。このﾗｯﾁはｸﾛｯｸがLowの時に閉じ、ｸﾛｯｸがHighの時に同期ﾗｯﾁ信号の斜線部分で示されるように通過(ﾄﾗﾝｽﾍﾟｱﾚﾝﾄ)となります。この信号値
はｼｽﾃﾑ ｸﾛｯｸがLowになる時に保持(ﾗｯﾁ)されます。それが続くｸﾛｯｸの上昇端でPINxnﾚｼﾞｽﾀに取り込まれます。2つの矢印tpd,minとtpd,maxによって示されるように、ﾋﾟﾝ上の単一信号遷移は出現時点に依存して0.5～1.5ｼｽ
ﾃﾑ ｸﾛｯｸ周期遅らされます。
ｿﾌﾄｳｪｱが指定したﾋﾟﾝ値を読み戻す時は、図11-4.で示されるようにNOP命令が挿入されなければなりません。
OUT命令はｼｽﾃﾑ ｸﾛｯｸの上昇端で同期ﾗｯﾁを設定します。この場合、同期化回路を通過する遅延時間(tpd)は1ｼｽﾃﾑ ｸﾛｯｸ周期です。

図11-3. 外部供給ﾋﾟﾝ値読み込み時の同期化ｼｽﾃﾑ ｸﾛｯｸ
実行命令

XXX

XXX

IN R16,PINx

XXX

以前の値

入力値

同期ﾗｯﾁ
PINxn
R16値

tpd,max

tpd,min

図11-4. ﾌﾟﾛｸﾞﾗﾑで設定したﾋﾟﾝ値読み戻し時の同期化ｼｽﾃﾑ ｸﾛｯｸ
実行命令

OUT PORTxNOP

IN R16,PINx

XXX

以前の値

入力値

同期ﾗｯﾁ
PINxn
R16値

tpd

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

42

次のｺｰﾄﾞ例はﾎﾟｰﾄBﾋﾟﾝの0と1をHigh出力、2と3をLow出力、6と7をﾌﾟﾙｱｯﾌﾟ指定として4～7を入力に設定する方法を示します。結果のﾋﾟﾝ値が再び読み戻されますが、前記で検討されたように、いくつかのﾋﾟﾝへ直前に指定された値を読み戻すことができるように
NOP命令が挿入されます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例～
LDI
R16,(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0)
LDI
R17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)OUTPORTB,R16OUT
DDRB,R17NOP
IN
R16,PINB～
C言語ﾌﾟﾛｸﾞﾗﾑ例
unsigned char i;～
PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);__no_operation();i = PINB;～;;ﾌﾟﾙｱｯﾌﾟとHigh値を取得;出力ﾋﾞｯﾄ値を取得;ﾌﾟﾙｱｯﾌﾟとHigh値を設定;入出力方向を設定;同期化遅延対処;ﾋﾟﾝ値読み戻し;/* *//* ﾌﾟﾙｱｯﾌﾟとHigh値を設定 *//* 入出力方向を設定 *//* 同期化遅延対処 *//* ﾋﾟﾝ値読み戻し *//* */注: ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑについてはﾌﾟﾙｱｯﾌﾟがﾋﾟﾝ0,1,6,7に設定されてから、ﾋﾞｯﾄ0と1の強力なHigh駆動部としての再定義、ﾋﾞｯﾄ2と3のLow駆動部としての定義、方向ﾋﾞｯﾄが正しく設定されるまでの時間を最小とするために2つの一時ﾚｼﾞｽﾀが使われます。

11.2.5. ﾃﾞｼﾞﾀﾙ入力許可と休止形態
図11-2.で示されるようにﾃﾞｼﾞﾀﾙ入力信号はｼｭﾐｯﾄ ﾄﾘｶﾞの入力をGNDにｸﾗﾝﾌﾟできます。この図でSLEEPと印された信号は入力信号のいくつかが開放のまま、またはVCC/2付近のｱﾅﾛｸﾞ信号電圧を持つ場合の高消費電力を避けるため、ﾊﾟﾜｰﾀﾞｳﾝ動作、ﾊﾟﾜｰｾｰﾌﾞ
動作、ｽﾀﾝﾊﾞｲ動作、拡張ｽﾀﾝﾊﾞｲ動作でMCU休止制御器によって設定(1)されます。
SLEEPは外部割り込みﾋﾟﾝとして許可されたﾎﾟｰﾄ ﾋﾟﾝに対しては無視されます。外部割り込み要求が許可されないなら、SLEEPは他のﾋﾟﾝについてと同様に有効です。SLEEPは44頁の「交換ﾎﾟｰﾄ機能」で記載されるように様々な他の交換機能によっても無視されます。
外部割り込みが許可されていない"上昇端、下降端または論理変化(両端)割り込み"として設定された非同期外部割り込みﾋﾟﾝに論理1が存在すると、上で言及した休止形態から(復帰)再開する時に、これらの休止形態に於けるｸﾗﾝﾌﾟが要求された論理変化を生ずるので、対応する外部割り込み要求ﾌﾗｸﾞが設定(1)されます。

11.2.6. 未接続ﾋﾟﾝ
いくつかのﾋﾟﾝが未使用にされる場合、それらのﾋﾟﾝが定義されたﾚﾍﾞﾙを持つのを保証することが推奨されます。例え上記のような深い休止形態で多くのﾃﾞｼﾞﾀﾙ入力が禁止されるとしても、ﾃﾞｼﾞﾀﾙ入力が許可される他の全ての動作(ﾘｾｯﾄ、活動動作、ｱｲﾄﾞﾙ動作)で消費電流削減のため、浮き状態入力は避けられるべきです。
未使用ﾋﾟﾝの定義されたﾚﾍﾞﾙを保証する最も簡単な方法は内部ﾌﾟﾙｱｯﾌﾟを許可することです。この場合、ﾘｾｯﾄ中のﾌﾟﾙｱｯﾌﾟは禁止されます。ﾘｾｯﾄ中の低消費電力が重要なら、外部ﾌﾟﾙｱｯﾌﾟまたはﾌﾟﾙﾀﾞｳﾝを使うことが推奨されます。未使用ﾋﾟﾝを直接GNDまたはVCCに接続することは、ﾋﾟﾝが偶然に出力として設定されると過電流を引き起こす可能性があるため推奨されません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

43

11.3. 交換ﾎﾟｰﾄ機能
多くのﾎﾟｰﾄ ﾋﾟﾝには標準ﾃﾞｼﾞﾀﾙ入出力に加え交換機能があります。図11-5.は単純化された図11-2.でのﾎﾟｰﾄ ﾋﾟﾝ制御信号が交換機能により、どう重複できるかを示します。この重複信号は全てのﾎﾟｰﾄ ﾋﾟﾝに存在する訳ではありませんが、この図はAVRﾏｲｸﾛ ｺﾝﾄ
ﾛｰﾗ系統の全ﾎﾟｰﾄ ﾋﾟﾝに適用できる一般的な記述として取り扱います。
図11-5. 交換ﾎﾟｰﾄ機能入出力回路構成
PUOExn:ﾌﾟﾙｱｯﾌﾟ値交換許可
PUOVxn:ﾌﾟﾙｱｯﾌﾟ値交換値
PUD:ﾌﾟﾙｱｯﾌﾟ禁止

RDx:DDRx読み

8-bit Data Bus

DDxn:方向ﾗｯﾁ
WDx:DDRx書きD

DDOExn:方向値交換許可
DDOVxn:方向値交換値

Q
R

1
0

VCC

1
0

RESET:ﾘｾｯﾄ
RRx:ﾎﾟｰﾄxﾗｯﾁ読み

PTOExn:出力切替許可

PVOExn:出力値交換許可
PVOVxn:出力値交換値

10

D

WPx:PINx書き
WRx:PORTx書き

Q
R

RESET:ﾘｾｯﾄ
RPx:ﾎﾟｰﾄxﾋﾟﾝ読み

PORTxn:出力ﾗｯﾁ
DIEOExn:ﾃﾞｼﾞﾀﾙ入力許可交換許可
DIEOVxn:ﾃﾞｼﾞﾀﾙ入力許可交換値
SLEEP:休止制御
同期化回路
Q

D

PINxn:入力ﾚｼﾞｽﾀ

Q

1
0

Pxn

1
0

D
E

clkI/O:I/Oｸﾛｯｸ
DIxn:ﾃﾞｼﾞﾀﾙ入力
AIOxn:ｱﾅﾛｸﾞ入出力
注: WRx, WPx, WDx, RRx, RPx, RDxは同一ﾎﾟｰﾄ内の全ﾋﾟﾝで共通です。
clkI/O,SLEEP, PUDは全ﾎﾟｰﾄで共通です。他の信号は各ﾋﾟﾝ固有です。
表11-2.は重複(交換)信号の機能一覧を示します。図11-5.で示すﾋﾟﾝとﾎﾟｰﾄは次表で示されません。重複(交換)信号は交換機能を持つ機能部で内部的に生成されます。
表11-2. 交換機能用交換信号の一般定義
信号略名
信号名
意味
1で、ﾌﾟﾙｱｯﾌﾟ許可はPUOV信号で制御され、0の場合、DDxn=0, PORTxn=1, PUD=0でﾌﾟ
PUOE
ﾌﾟﾙｱｯﾌﾟ値交換許可
ﾙｱｯﾌﾟが許可されます。
PUOV
ﾌﾟﾙｱｯﾌﾟ値交換値
PUOE=1時、DDxn, PORTxn, PUDの値に関係なく、ﾌﾟﾙｱｯﾌﾟの有(1)/無(0)を指定します。
DDOE
方向値交換許可
1で、出力駆動部はDDOV信号で制御され、0の場合、DDxnﾚｼﾞｽﾀ値で制御されます。
DDOV
方向値交換値
DDOE=1時、DDxnﾚｼﾞｽﾀ値に関係なく、出力駆動部のON(1)/OFF(0)を制御します。
1で出力駆動部がONなら、ﾎﾟｰﾄ値はPVOV信号で制御されます。出力駆動部がONで0のPVOE
出力値交換許可場合、ﾎﾟｰﾄ値はPORTxnﾚｼﾞｽﾀ値で制御されます。
PVOV
出力値交換値
PVOE=1時、PORTxnﾚｼﾞｽﾀ値に関係なく、ﾎﾟｰﾄ値を制御(1/0)します。
PTOE
出力切替許可PTOE=1時、PORTxnﾚｼﾞｽﾀ値が反転します。
1で、ﾃﾞｼﾞﾀﾙ入力許可はDIEOV信号で制御され、0の場合、MCUの状態(活動動作、休止
DIEOE ﾃﾞｼﾞﾀﾙ入力許可交換許可形態)によって決定されます。
DIEOE=1時、MCUの状態(活動動作、休止形態)に関係なく、ﾃﾞｼﾞﾀﾙ入力を許可(1)/禁止
OIEOV ﾃﾞｼﾞﾀﾙ入力許可交換値(0)します。
交換機能用ﾃﾞｼﾞﾀﾙ入力です。この信号は図上でｼｭﾐｯﾄ ﾄﾘｶﾞ出力に接続されていますが、DI
ﾃﾞｼﾞﾀﾙ入力
これは同期化前となります。この信号はｸﾛｯｸとしての使用を除き、各交換機能自身が同期化します。
AIO
ｱﾅﾛｸﾞ入出力
交換機能用ｱﾅﾛｸﾞ入出力です。この信号はﾋﾟﾝに直接接続され、双方向使用ができます。
次節は交換機能に関連する重複(交換)信号と各ﾎﾟｰﾄの交換機能を簡単に記述します。更に先の詳細については交換機能の記述を参照してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

44

11.3.1. ﾎﾟｰﾄBの交換機能
ﾎﾟｰﾄBﾋﾟﾝの交換機能は下で示されます。
表11-3. ﾎﾟｰﾄBﾋﾟﾝの交換機能
ﾎﾟｰﾄ ﾋﾟﾝ交換機能
OC0A(ﾀｲﾏ/ｶｳﾝﾀ0 比較A一致/PWM出力)
OC1C(ﾀｲﾏ/ｶｳﾝﾀ1 比較C一致/PWM出力)
PB7RTS(USART送信要求出力)
PCINT7 (ﾋﾟﾝ変化割り込み7入力)
OC1B(ﾀｲﾏ/ｶｳﾝﾀ1 比較B一致/PWM出力)
OC4B(ﾀｲﾏ/ｶｳﾝﾀ4 比較B一致/PWM出力)
PB6
ADC13 (A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ13)
PCINT6 (ﾋﾟﾝ変化割り込み6入力)
OC1A(ﾀｲﾏ/ｶｳﾝﾀ1 比較A一致/PWM出力)
OC4B(ﾀｲﾏ/ｶｳﾝﾀ4 比較B一致/PWM補完出力)
PB5
ADC12 (A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ12)
PCINT5 (ﾋﾟﾝ変化割り込み5入力)
ADC11 (A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ11)
PB4
PCINT4 (ﾋﾟﾝ変化割り込み4入力)

ﾎﾟｰﾄ ﾋﾟﾝ

交換機能

PB3

PDO
(直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ﾃﾞｰﾀ出力)MISO(SPI 主側ﾃﾞｰﾀ入力/従側ﾃﾞｰﾀ出力)
PCINT3 (ﾋﾟﾝ変化割り込み3入力)

PB2

PDI
(直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ﾃﾞｰﾀ入力)
MOSI(SPI 主側ﾃﾞｰﾀ出力/従側ﾃﾞｰﾀ入力)
PCINT2 (ﾋﾟﾝ変化割り込み2入力)

PB1

SCK
(SPI 直列ｸﾛｯｸ 主側出力/従側入力)
PCINT1 (ﾋﾟﾝ変化割り込み1入力)

PB0

SS(SPI 従装置選択入力)
PCINT0 (ﾋﾟﾝ変化割り込み0入力)

交換ﾋﾟﾝの設定は次のとおりです。
・ OC0A/OC1C/RTS/PCINT7 - ﾎﾟｰﾄB ﾋﾞｯﾄ7 : PB7
OC0A : ﾀｲﾏ/ｶｳﾝﾀ0の比較A一致出力。PB7ﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ0の比較A一致用外部出力として扱えます。この機能を扱うため、このﾋﾟﾝは出力として設定(DDB7=1)されなければなりません。このOC0Aﾋﾟﾝはﾀｲﾏ機能のPWM動作用出力ﾋﾟﾝでもあります。
OC1C : ﾀｲﾏ/ｶｳﾝﾀ1の比較C一致出力。PB7ﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ1の比較C一致用外部出力として扱えます。この機能を扱うため、このﾋﾟﾝは出力として設定(DDB7=1)されなければなりません。このOC1Cﾋﾟﾝはﾀｲﾏ機能のPWM動作用出力ﾋﾟﾝでもあります。
RTS : 強化されたUSARTによって使われるRTS(Request To Send)受信部流れ制御出力信号。
PCINT7 : ﾋﾟﾝ変化割り込み7入力。PB7ﾋﾟﾝは外部割り込み元としても扱えます。
・ OC1B/OC4B/ADC13/PCINT6 - ﾎﾟｰﾄB ﾋﾞｯﾄ6 : PB6
OC1B : ﾀｲﾏ/ｶｳﾝﾀ1の比較B一致出力。PB6ﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ1の比較B一致用外部出力として扱えます。この機能を扱うため、このﾋﾟﾝは出力として設定(DDB6=1)されなければなりません。このOC1Bﾋﾟﾝはﾀｲﾏ機能のPWM動作用出力ﾋﾟﾝでもあります。
OC4B : ﾀｲﾏ/ｶｳﾝﾀ4の比較B一致出力。このﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ4単位部からの高速PWM信号生成に使うことができます。この機能を扱うには、このﾋﾟﾝが出力として設定(DDB6=1)されなければなりません。
ADC13 : A/D変換ﾁｬﾈﾙ13入力。
PCINT6 : ﾋﾟﾝ変化割り込み6入力。PB6ﾋﾟﾝは外部割り込み元としても扱えます。
・ OC1A/OC4B/ADC12/PCINT5 - ﾎﾟｰﾄB ﾋﾞｯﾄ5 : PB5
OC1A : ﾀｲﾏ/ｶｳﾝﾀ1の比較A一致出力。PB5ﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ1の比較A一致用外部出力として扱えます。この機能を扱うため、このﾋﾟﾝは出力として設定(DDB5=1)されなければなりません。このOC1Aﾋﾟﾝはﾀｲﾏ機能のPWM動作用出力ﾋﾟﾝでもあります。
OC4B : ﾀｲﾏ/ｶｳﾝﾀ4の比較B一致出力。このﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ4単位部からのOC4B(PB6)補完用高速PWM信号生成に使うことができます。この機能を扱うには、このﾋﾟﾝが出力として設定(DDB5=1)されなければなりません。
ADC12 : A/D変換ﾁｬﾈﾙ12入力。
PCINT5 : ﾋﾟﾝ変化割り込み5入力。PB5ﾋﾟﾝは外部割り込み元としても扱えます。
・ ADC11/PCINT4 - ﾎﾟｰﾄB ﾋﾞｯﾄ4 : PB4
ADC11 : A/D変換ﾁｬﾈﾙ11入力。
PCINT4 : ﾋﾟﾝ変化割り込み4入力。PB4ﾋﾟﾝは外部割り込み元としても扱えます。
・ PDO/MISO/PCINT3 - ﾎﾟｰﾄB ﾋﾞｯﾄ3 : PB3
PDO : 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ﾃﾞｰﾀ出力。直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞの間、このﾋﾟﾝはATmega16U4/32U4からのﾃﾞｰﾀ出力線として使われます。
MISO : SPI用の主装置ﾃﾞｰﾀ入力、従装置ﾃﾞｰﾀ出力。SPIが主装置として許可されると、このﾋﾟﾝはﾎﾟｰﾄB方向ﾚｼﾞｽﾀ(DDRB)のDDB3の設定に拘らず、入力として設定されます。SPIが従装置として許可されると、このﾋﾟﾝのﾃﾞｰﾀ方向はDDB3によって制御されます。このﾋﾟﾝがSPIによって入力を強制されるとき、ﾌﾟﾙｱｯﾌﾟは未だﾎﾟｰﾄB出力ﾚｼﾞｽﾀ(PORTB)のPORTB3によって制御できます。
PCINT3 : ﾋﾟﾝ変化割り込み3入力。PB3ﾋﾟﾝは外部割り込み元としても扱えます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

45

・ PDI/MOSI/PCINT2 - ﾎﾟｰﾄB ﾋﾞｯﾄ2 : PB2
PDI : 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ﾃﾞｰﾀ入力。直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞの間、このﾋﾟﾝはATmega16U4/32U4へのﾃﾞｰﾀ入力線として使われます。
MOSI : SPI用の主装置ﾃﾞｰﾀ出力、従装置ﾃﾞｰﾀ入力。SPIが従装置として許可されると、このﾋﾟﾝはﾎﾟｰﾄB方向ﾚｼﾞｽﾀ(DDRB)のDDB2設定に拘らず、入力として設定されます。SPIが主装置として許可されると、このﾋﾟﾝのﾃﾞｰﾀ方向はDDB2によって制御されます。このﾋﾟﾝがSPIによって入力を強制されるとき、ﾌﾟﾙｱｯﾌﾟは未だﾎﾟｰﾄB出力ﾚｼﾞｽﾀ(PORTB)のPORTB2によって制御できます。
PCINT2 : ﾋﾟﾝ変化割り込み2入力。PB2ﾋﾟﾝは外部割り込み元としても扱えます。
・ SCK/PCINT1 - ﾎﾟｰﾄB ﾋﾞｯﾄ1 : PB1
SCK : SPI用の主装置ｸﾛｯｸ出力、従装置ｸﾛｯｸ入力。SPIが従装置として許可されると、このﾋﾟﾝはﾎﾟｰﾄB方向ﾚｼﾞｽﾀ(DDRB)のDDB1設定に拘らず、入力として設定されます。SPIが主装置として許可されると、このﾋﾟﾝのﾃﾞｰﾀ方向はDDB1によって制御されます。このﾋﾟﾝがSPIによって入力を強制されるとき、ﾌﾟﾙｱｯﾌﾟは未だﾎﾟｰﾄB出力ﾚｼﾞｽﾀ(PORTB)のPORTB1によって制御できます。
PCINT1 : ﾋﾟﾝ変化割り込み1入力。PB1ﾋﾟﾝは外部割り込み元としても扱えます。
・ SS/PCINT0 - ﾎﾟｰﾄB ﾋﾞｯﾄ0 : PB0
SS : SPI従装置選択入力。SPIが従装置として許可されると、このﾋﾟﾝはDDRBのDDB0設定に拘らず、入力として設定されます。従装置としてこのﾋﾟﾝがLowに駆動されると、SPI(機能)が活性化(有効に)されます。SPIが主装置として許可されると、このﾋﾟﾝのﾃﾞｰﾀ方向はDDB0によって制御されます。このﾋﾟﾝがSPIによって入力を強制される時にﾌﾟﾙｱｯﾌﾟは未だPORTBのPORTB0によって制御できます。
PCINT0 : ﾋﾟﾝ変化割り込み0入力。PB0ﾋﾟﾝは外部割り込み元としても扱えます。
表11-4.と表11-5.はﾎﾟｰﾄBの交換機能を44頁の図11-5.で示される交換信号に関連付けます。SPI主装置入力とSPI従装置出力がMISOを構成し、一方MOSIはSPI主装置出力とSPI従装置入力に分けられます。
表11-4. ﾎﾟｰﾄB7～4の交換機能用交換信号
信号名

PB7/OC0A/OC1C/
RTS/PCINT7

PB6/OC1B/OC4B/
ADC13/PCINT6PB5/OC1A/OC4B/
ADC12/PCINT5PB4/ADC11/PCINT4

PUOE
PUOV
DDOE
DDOV
PVOE
PVOV
PTOE
DIEOE
DIEOV
DI
AIO

0
0
0
0
OC0A許可|OC1C許可
OC0A/OC1C
PCIE0･PCINT7
1
PCINT7入力-

00
0
0
OC1B許可|OC4B許可
OC1B/OC4B
PCIE0･PCINT6
1
PCINT6入力
ADC13入力

00
0
0
OC1A許可|OC4B許可
OC1A/OC4B
PCIE0･PCINT5
1
PCINT5入力
ADC12入力

0
0
0
0
0
0
PCIE0･PCINT4
1
PCINT4入力
ADC11入力

PB1/SCK/PCINT1
SPE･MSTRPORTB1･PUD
SPE･MSTR
0
SPE･MSTR
SCK出力
PCIE0･PCINT1
1
SCK/PCINT1入力-

PB0/SS/PCINT0
SPE･MSTRPORTB0･PUD
SPE･MSTR00
0
PCIE0･PCINT01
SPI SS/PCINT0入力-

表11-5. ﾎﾟｰﾄB3～0の交換機能用交換信号
信号名
PB3/PDO/MISO/PCINT3 PB2/PDI/MOSI/PCINT2
PUOE
SPE･MSTR
SPE･MSTRPUOVPORTB3･PUD
PORTB2･PUD
DDOE
SPE･MSTR
SPE･MSTR
DDOV
0
0
PVOE
SPE･MSTR
SPE･MSTRPVOVSPI従装置出力
SPI主装置出力
PTOE
DIEOE
PCIE0･PCINT3
PCIE0･PCINT2
DIEOV
1
1
DI
SPI主装置/PCINT3入力
SPI従装置/PCINT2入力
AIO-

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]46

11.3.2. ﾎﾟｰﾄCの交換機能
ﾎﾟｰﾄCの交換機能は下で示されます。
表11-6. ﾎﾟｰﾄCﾋﾟﾝの交換機能
ﾎﾟｰﾄ ﾋﾟﾝ交換機能
ﾎﾟｰﾄ ﾋﾟﾝICP3(ﾀｲﾏ/ｶｳﾝﾀ3 捕獲起動入力)
OC3A
PC6
PC7
OC4A
(ﾀｲﾏ/ｶｳﾝﾀ4 比較A一致/PWM出力)
OC4A
CLKO
(ｼｽﾃﾑ ｸﾛｯｸ出力)

交換機能(ﾀｲﾏ/ｶｳﾝﾀ3 比較A一致/PWM出力)(ﾀｲﾏ/ｶｳﾝﾀ4 比較A一致/PWM補完出力)

交換ﾋﾟﾝの設定は次のとおりです。
・ ICP3/OC4A/CLKO - ﾎﾟｰﾄC ﾋﾞｯﾄ7 : PC7
ICP3 : ﾀｲﾏ/ｶｳﾝﾀ3が正しく構成設定されたなら、このﾋﾟﾝは捕獲起動入力機能として扱うことができます。
OC4A : ﾀｲﾏ/ｶｳﾝﾀ4の比較A一致出力。このﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ4単位部からの高速PWM信号生成に使うことができます。この機能を扱うには、このﾋﾟﾝが出力として設定(DDC7=1)されなければなりません。
CLKO : 対応する(CKOUT)ﾋｭｰｽﾞが許可(ﾌﾟﾛｸﾞﾗﾑ(0))されると、このﾋﾟﾝは内部ﾏｲｸﾛ ｺﾝﾄﾛｰﾗ動作周波数を出力します。ｼｽﾃﾑ ｸﾛｯ
ｸ前置分周器が使われた場合、それはこの出力周波数に影響を及ぼします。
・ OC3A/OC4A - ﾎﾟｰﾄC ﾋﾞｯﾄ6 : PC6
OC3A : ﾀｲﾏ/ｶｳﾝﾀ3の比較A一致出力。このﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ3単位部からのPWM信号生成に使うことができます。この機能を扱うには、このﾋﾟﾝが出力として設定(DDC6=1)されなければなりません。
OC4A : ﾀｲﾏ/ｶｳﾝﾀ4の比較A一致出力。このﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ4部署からのOC4A(PC7)補完用高速PWM信号生成に使うことができます。この機能を扱うには、このﾋﾟﾝが出力として設定(DDC6=1)されなければなりません。
下表はﾎﾟｰﾄCの交換機能を44頁の図11-5.で示される交換信号に関連付けます。
表11-7. ﾎﾟｰﾄC7,6の交換機能用交換信号
信号名
PC7/ICP3/OC4A/CLKO
PUOE
0
PUOV
0
DDOE
0
DDOV
0
PVOE
OC4A許可
PVOV
OC4A
PTOE
DIEOE
0
DIEOV
0
DI
ICP3入力AIO-

PC6/OC3A/OC4A
00
00
OC3A許可|OC4A許可
OC3A/OC4A
00-

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]47

11.3.3. ﾎﾟｰﾄDの交換機能
ﾎﾟｰﾄDﾋﾟﾝの交換機能は下で示されます。
表11-8. ﾎﾟｰﾄDﾋﾟﾝの交換機能
ﾎﾟｰﾄ ﾋﾟﾝ交換機能
T0(ﾀｲﾏ/ｶｳﾝﾀ0 外部ｸﾛｯｸ入力)
PD7
OC4D(ﾀｲﾏ/ｶｳﾝﾀ4 比較D一致/PWM出力)
ADC10 (A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ10)
T1(ﾀｲﾏ/ｶｳﾝﾀ1 外部ｸﾛｯｸ入力)
PD6
OC4D(ﾀｲﾏ/ｶｳﾝﾀ4 比較D一致/PWM補完出力)
ADC9(A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ9)
XCK(USART 外部ｸﾛｯｸ入出力)
PD5CTS(USART 送信許可入力)
PD4

ICP1
ADC8

(ﾀｲﾏ/ｶｳﾝﾀ1 捕獲起動入力)(A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ8)

ﾎﾟｰﾄ ﾋﾟﾝ

交換機能

PD3

INT3
TXD

(外部割り込み3 入力)(USART 送信ﾃﾞｰﾀ出力)

PD2

INT2
RXD

(外部割り込み2 入力)(USART 受信ﾃﾞｰﾀ入力)

INT1
SDA
INT0
SCL
OC0B

(外部割り込み1 入力)(2線直列ﾊﾞｽ ﾃﾞｰﾀ入出力)(外部割り込み0 入力)(2線直列ﾊﾞｽ ｸﾛｯｸ入出力)(ﾀｲﾏ/ｶｳﾝﾀ0 比較B一致/PWM出力)

PD1
PD0

交換ﾋﾟﾝの設定は次のとおりです。
・ T0/OC4D/ADC10 - ﾎﾟｰﾄD ﾋﾞｯﾄ7 : PD7
T0 : ﾀｲﾏ/ｶｳﾝﾀ0の外部ｸﾛｯｸ入力ﾋﾟﾝです。
OC4D : ﾀｲﾏ/ｶｳﾝﾀ4の比較D一致出力。このﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ4単位部からの高速PWM信号生成に使うことができます。この機能を扱うには、このﾋﾟﾝが出力として設定(DDD7=1)されなければなりません。
ADC10 : A/D変換ﾁｬﾈﾙ10入力。
・ T1/OC4D/ADC9 - ﾎﾟｰﾄD ﾋﾞｯﾄ6 : PD6
T1 : ﾀｲﾏ/ｶｳﾝﾀ1の外部ｸﾛｯｸ入力ﾋﾟﾝです。
OC4D : ﾀｲﾏ/ｶｳﾝﾀ4の比較D一致出力。このﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ4単位部からのOC4D(PD7)補完用高速PWM信号生成に使うことができます。この機能を扱うには、このﾋﾟﾝが出力として設定(DDD6=1)されなければなりません。
ADC9 : A/D変換ﾁｬﾈﾙ9入力。
・ XCK/CTS - ﾎﾟｰﾄD ﾋﾞｯﾄ5 : PD5
XCK : USARTの外部ｸﾛｯｸ入出力。ﾎﾟｰﾄD方向ﾚｼﾞｽﾀ(DDRD)のDDD5は、このｸﾛｯｸが入力(DDD5=0)または出力(DDD5=1)のどち
らかを制御します。XCKﾋﾟﾝはUSARTが同期種別で動作する時だけ活動します(有効です)。
CTS : 強化されたUSARTによって使われるCTS(Clear To Send)送信部流れ制御入力信号。
・ ICP1 - ﾎﾟｰﾄD ﾋﾞｯﾄ4 : PD4
ICP1 : ﾀｲﾏ/ｶｳﾝﾀ1の捕獲起動入力。PD4ﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ1用捕獲起動入力ﾋﾟﾝとして動作できます。
ADC8 : A/D変換ﾁｬﾈﾙ8入力。
・ INT3/TXD - ﾎﾟｰﾄD ﾋﾞｯﾄ3 : PD3
INT3 : 外部割り込み3入力。PD3ﾋﾟﾝはMCUへの外部割り込み元として扱えます。
TXD : 送信ﾃﾞｰﾀ(USART用ﾃﾞｰﾀ出力ﾋﾟﾝ)。USART送信部が許可されると、このﾋﾟﾝはﾎﾟｰﾄD方向ﾚｼﾞｽﾀ(DDRD)のDDD3の値に拘らず出力として設定されます。
・ INT2/RXD - ﾎﾟｰﾄD ﾋﾞｯﾄ2 : PD2
INT2 : 外部割り込み2入力。PD2ﾋﾟﾝはMCUへの外部割り込み元として扱えます。
RXD : 受信ﾃﾞｰﾀ(USART用ﾃﾞｰﾀ入力ﾋﾟﾝ)。USART受信部が許可されると、このﾋﾟﾝはDDRDのDDD2の値に拘らず、入力として設定されます。USARTがこのﾋﾟﾝを入力に強制するとき、ﾌﾟﾙｱｯﾌﾟは未だPORTD2ﾋﾞｯﾄによって制御できます。
・ INT1/SDA - ﾎﾟｰﾄD ﾋﾞｯﾄ1 : PD1
INT1 : 外部割り込み1入力。PD1ﾋﾟﾝはMCUへの外部割り込み元として扱えます。
SDA : 2線直列ｲﾝﾀｰﾌｪｰｽ ﾃﾞｰﾀ。2線直列ｲﾝﾀｰﾌｪｰｽを許可するために2線直列ｲﾝﾀｰﾌｪｰｽ制御ﾚｼﾞｽﾀ(TWCR)の2線直列ｲﾝﾀｰ
ﾌｪｰｽ動作許可(TWEN)ﾋﾞｯﾄが設定(1)されると、PD1は(通常の)ﾎﾟｰﾄから切り離されて、2線直列ｲﾝﾀｰﾌｪｰｽ用直列ﾃﾞｰﾀ入出
力ﾋﾟﾝになります。この動作では入力信号上の50nsより短いｽﾊﾟｲｸ(瞬間雑音)を消去するためのｽﾊﾟｲｸ除去器があり、ｽﾘｭｰ
ﾚｰﾄ(上昇/下降速度)制限付きｵｰﾌﾟﾝ ﾄﾞﾚｲﾝ駆動部によって駆動されます。このﾋﾟﾝが2線直列ｲﾝﾀｰﾌｪｰｽによって使われる
とき、ﾌﾟﾙｱｯﾌﾟは未だPORTD1によって制御できます(訳注:共通性から本行追加)。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]48

・ INT0/SCL/OC0B - ﾎﾟｰﾄD ﾋﾞｯﾄ0 : PD0
INT0 : 外部割り込み0入力。PD0ﾋﾟﾝはMCUへの外部割り込み元として扱えます。
SCL : 2線直列ｲﾝﾀｰﾌｪｰｽ ｸﾛｯｸ。2線直列ｲﾝﾀｰﾌｪｰｽを許可するために2線直列ｲﾝﾀｰﾌｪｰｽ制御ﾚｼﾞｽﾀ(TWCR)の2線直列ｲﾝﾀｰ
ﾌｪｰｽ動作許可(TWEN)ﾋﾞｯﾄが設定(1)されると、PD0は(通常の)ﾎﾟｰﾄから切り離されて、2線直列ｲﾝﾀｰﾌｪｰｽ用直列ｸﾛｯｸ入出
力ﾋﾟﾝになります。この動作では入力信号上の50nsより短いｽﾊﾟｲｸ(瞬間雑音)を消去するためのｽﾊﾟｲｸ除去器があり、ｽﾘｭｰ
ﾚｰﾄ(上昇/下降速度)制限付きｵｰﾌﾟﾝ ﾄﾞﾚｲﾝ駆動部によって駆動されます。このﾋﾟﾝが2線直列ｲﾝﾀｰﾌｪｰｽによって使われる
とき、ﾌﾟﾙｱｯﾌﾟは未だPORTD0ﾋﾞｯﾄによって制御できます(訳注:共通性から本行追加)。
OC0B : ﾀｲﾏ/ｶｳﾝﾀ0の比較B一致出力。このﾋﾟﾝはﾀｲﾏ/ｶｳﾝﾀ0単位部からのPWM信号生成に使うことができます。この機能を扱うには、このﾋﾟﾝが出力として設定(DDD0=1)されなければなりません。
2つの下表はﾎﾟｰﾄDの交換機能を44頁の図11-5.で示される交換信号に関連付けます。
表11-9. ﾎﾟｰﾄD7～4の交換機能用交換信号
信号名
PD7/T0/OC4D/ADC10
PD6/T1/OC4D/ADC9
PUOE
0
0
PUOV
0
0
DDOE
0
0
DDOV
0
0
PVOE
OC4D許可OC4D許可
PVOV
OC4D
OC4D
PTOE
DIEOE
0
0
DIEOV
0
0
DI
T0入力
T1入力
AIO
ADC10入力
ADC9入力PD5/XCK/CTS
00
XCK出力許可
1
XCK出力許可
XCK出力00
XCK/CTS入力-

PD4/ICP1/ADC8
0
0
0
0
0
0
0
0
ICP1入力ADC8入力表11-10. ﾎﾟｰﾄD3～0の交換機能用交換信号
信号名
PD3/INT3/TXD
PD2/INT2/RXD
PD1/INT1/SDA
PD0/INT0/SCL/OC0B
PUOE
TXEN
RXEN
TWEN
TWEN
0
PORTD1･PUD
PUOVPORTD2･PUD
PORTD0･PUD
DDOE
TXEN
RXEN
TWEN
TWEN
DDOV
1
0
SDA_出力
SCL_出力
TWEN
PVOE
TXEN
0
TWEN |OC0B許可
0
PVOV
TXD
0
OC0B
PTOE
INT3許可INT1許可DIEOE
INT2許可INT0許可
DIEOV
1
1
1
1
DI
INT3入力INT2入力/RXD
INT1入力
INT0入力
AIO
SDA入力
SCL入力
注: 許可されると、2線直列ｲﾝﾀｰﾌｪｰｽはPD0とPD1ﾋﾟﾝ出力のｽﾘｭｰﾚｰﾄ制御を許可します。これは図で示されていません。
加えて、ﾎﾟｰﾄ図で示されるAIO出力と2線直列ｲﾝﾀｰﾌｪｰｽ(TWI)部間にｽﾊﾟｲｸ除去器が接続されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]49

11.3.4. ﾎﾟｰﾄEの交換機能
ﾎﾟｰﾄEﾋﾟﾝの交換機能は下で示されます。
表11-11. ﾎﾟｰﾄEﾋﾟﾝの交換機能
ﾎﾟｰﾄ ﾋﾟﾝ交換機能
INT6(外部割り込み6 入力)
PE6
AIN0(ｱﾅﾛｸﾞ比較器非反転入力)

ﾎﾟｰﾄ ﾋﾟﾝ
PE2

交換機能
HWB

(ﾌﾞｰﾄ ﾛｰﾀﾞ強制実行入力)

交換ﾋﾟﾝの設定は次のとおりです。
・ INT6/AIN0 - ﾎﾟｰﾄE ﾋﾞｯﾄ6 : PE6
INT6 : 外部割り込み6入力。PE6ﾋﾟﾝはMCUへの外部割り込み元として扱えます。
AIN0 : ｱﾅﾛｸﾞ比較器の非反転入力。このﾋﾟﾝはｱﾅﾛｸﾞ比較器の非反転入力に直接接続されます。
・ HWB - ﾎﾟｰﾄE ﾋﾞｯﾄ2 : PE2
HWB : このﾋﾟﾝが外部ﾘｾｯﾄ ﾊﾟﾙｽ間にGNDに接続されると、ﾘｾｯﾄ後のﾌﾞｰﾄ ﾛｰﾀﾞ部実行を許します。このﾋﾟﾝのHWB動作はHWBE
ﾋｭｰｽﾞが許可されている時だけ活性(有効)です。(ﾘｾｯﾄを除き、)通常動作中、このﾋﾟﾝは汎用入出力として働きます。
下表はﾎﾟｰﾄEの交換機能を44頁の図11-5.で示される交換信号に関連付けます。
表11-12. ﾎﾟｰﾄE6,2の交換機能用交換信号
信号名
PE6/INT6/AIN0
PUOE
0
PUOV
0
DDOE
0
DDOV
0
PVOE
0
PVOV
0
PTOE
DIEOE
INT6許可DIEOV
1DI
INT6入力AIO
AIN0入力PE2/HWB
0
0
0
1
0
0
0
0
HWB入力
-

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]50

11.3.5. ﾎﾟｰﾄFの交換機能
ﾎﾟｰﾄFﾋﾟﾝには表11-13.に示されるようにA/D変換用ｱﾅﾛｸﾞ入力としての交換機能があります。ﾎﾟｰﾄFﾋﾟﾝのいくつかが出力として設定される場合、A/D変換実行中の時にそれらを切り替えないことが重要です。これは変換結果を不正にするかもしれません。JTAGｲﾝ
ﾀｰﾌｪｰｽが許可されると、ﾘｾｯﾄが起きてもPF7(TDI)、PF5(TMS)、PF4(TCK)ﾋﾟﾝのﾌﾟﾙｱｯﾌﾟ抵抗は活性(有効)にされます。
表11-13. ﾎﾟｰﾄFﾋﾟﾝの交換機能
ﾎﾟｰﾄ ﾋﾟﾝ
ADC7
PF7
TDI
ADC6
PF6
TDO
ADC5
PF5
TMS
ADC4
PF4
TCK
PF1
ADC1
PF0
ADC0

交換機能
(A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ7)(JTAG 検査ﾃﾞｰﾀ入力)(A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ6)(JTAG 検査ﾃﾞｰﾀ出力)(A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ5)(JTAG 検査種別選択入力)(A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ4)(JTAG ｸﾛｯｸ入力)(A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ1)(A/D変換ｱﾅﾛｸﾞ入力ﾁｬﾈﾙ0)

交換ﾋﾟﾝの設定は次のとおりです。
・ ADC7/TDI - ﾎﾟｰﾄF ﾋﾞｯﾄ7 : PF7
ADC7 : A/D変換ﾁｬﾈﾙ7入力。
TDI : JTAG検査ﾃﾞｰﾀ入力。命令ﾚｼﾞｽﾀまたはﾃﾞｰﾀ ﾚｼﾞｽﾀ(走査ﾁｪｰﾝ)に移動入力される直列入力ﾃﾞｰﾀです。JTAGｲﾝﾀｰﾌｪｰｽが許可されると、このﾋﾟﾝはI/Oﾋﾟﾝとして使えません。
・ ADC6/TDO - ﾎﾟｰﾄF ﾋﾞｯﾄ6 : PF6
ADC6 : A/D変換ﾁｬﾈﾙ6入力。
TDO : JTAG検査ﾃﾞｰﾀ出力。命令ﾚｼﾞｽﾀまたはﾃﾞｰﾀ ﾚｼﾞｽﾀから移動出力される直列出力ﾃﾞｰﾀです。JTAGｲﾝﾀｰﾌｪｰｽが許可され他場合、このﾋﾟﾝはI/Oﾋﾟﾝとして使えません。
TDOﾋﾟﾝはﾃﾞｰﾀが移動出力されるTAP状態への移行を除いてHi-Zにされます。
・ ADC5/TMS - ﾎﾟｰﾄF ﾋﾞｯﾄ5 : PF5
ADC5 : A/D変換ﾁｬﾈﾙ5入力。
TMS : JTAG検査種別選択。このﾋﾟﾝはTAP(検査入出力ﾎﾟｰﾄ)制御器状態機構を通しての操作に使われます。JTAGｲﾝﾀｰﾌｪｰｽが許可されると、このﾋﾟﾝはI/Oﾋﾟﾝとして使えません。
・ ADC4/TCK - ﾎﾟｰﾄF ﾋﾞｯﾄ4 : PF4
ADC4 : A/D変換ﾁｬﾈﾙ4入力。
TCK : JTAGｸﾛｯｸ。JTAG操作はTCKに同期します。JTAGｲﾝﾀｰﾌｪｰｽが許可されると、このﾋﾟﾝはI/Oﾋﾟﾝとして使えません。
・ ADC1 - ﾎﾟｰﾄF ﾋﾞｯﾄ1 : PF1
ADC1 : A/D変換ﾁｬﾈﾙ1入力。
・ ADC0 - ﾎﾟｰﾄF ﾋﾞｯﾄ0 : PF0
ADC0 : A/D変換ﾁｬﾈﾙ0入力。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]51

表11-14.と表11-15.はﾎﾟｰﾄFの交換機能を44頁の図11-5.で示される交換信号に関連付けます。
表11-14. ﾎﾟｰﾄF7～4の交換機能用交換信号
信号名
PF7/ADC7/TDI
PUOE
JTAGENPUOV
1DDOE
JTAGEN
DDOV
0
PVOE
0
PVOV
0
PTOE
DIEOE
JTAGEN
DIEOV
0
DI
AIO
ADC7入力/TDI入力

PF6/ADC/TDO
JTAGEN0
JTAGEN
IR移動+DR移動
JTAGENTDO
JTAGEN0
ADC6入力表11-15. ﾎﾟｰﾄF1,0の交換機能用交換信号
信号名
PF1/ADC1
PUOE
0
PUOV
0
DDOE
0
DDOV
0
PVOE
0
PVOV
0
PTOE
DIEOE
0
DIEOV
0
DI
AIO
ADC1入力PF0/ADC0
0
0
0
0
0
0
0
0
ADC0入力PF5/ADC5/TMS
JTAGEN
1
JTAGEN
0
0
0
JTAGEN0
ADC5入力/TMS入力

PF4/ADC4/TCK
JTAGEN
1
JTAGEN
0
0
0
JTAGEN0
ADC4入力/TCK入力

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]52

11.4. I/Oﾎﾟｰﾄ用ﾚｼﾞｽﾀ
11.4.1. MCUCR - MCU制御ﾚｼﾞｽﾀ (MCU Control Register)ﾋﾞｯﾄ$35 ($55)
Read/Write
初期値

7

6

5

4

3

2

1

0

JTD

-

-

PUD

-

-

IVSEL

IVCE

R/W
0

R
0

R
0

R/W
0

R
0

R
0

R/W
0

R/W
0

MCUCR

● ﾋﾞｯﾄ4 - PUD : ﾌﾟﾙｱｯﾌﾟ禁止 (Pull-up Disable)

このﾋﾞｯﾄが1を書かれると、例えDDxnとPORTxnﾚｼﾞｽﾀがﾌﾟﾙｱｯﾌﾟを許可(DDxn=0, PORTxn=1)に設定されていても、I/Oﾎﾟｰﾄのﾌﾟﾙｱｯ
ﾌﾟは禁止されます。この特徴についてより多くの詳細に関しては42頁の「ﾋﾟﾝの設定」をご覧ください。

11.4.2. PORTB - ﾎﾟｰﾄB出力ﾚｼﾞｽﾀ (Port B Data Register)ﾋﾞｯﾄ$05 ($25)
Read/Write
初期値

7

6

5

4

3

2

1

0

PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

PORTB

R/W
0

11.4.3. DDRB - ﾎﾟｰﾄB方向ﾚｼﾞｽﾀ (Port B Data Direction Register)ﾋﾞｯﾄ$04 ($24)
Read/Write
初期値

7

6

5

4

3

2

1

0

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

DDRB

11.4.4. PINB - ﾎﾟｰﾄB入力ﾚｼﾞｽﾀ (Port B Input Address)
ﾋﾞｯﾄ$03 ($23)
Read/Write
初期値

7

6

5

4

3

2

1

0

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

PINB

11.4.5. PORTC - ﾎﾟｰﾄC出力ﾚｼﾞｽﾀ (Port C Data Register)ﾋﾞｯﾄ$08 ($28)
Read/Write
初期値

7

6

PORTC7 PORTC6
R/W
0

R/W
0

5

4

3

2

1

0

-

-

-

-

-

-

R
0

R
0

R
0

R
0

R
0

R
0

PORTC

11.4.6. DDRC - ﾎﾟｰﾄC方向ﾚｼﾞｽﾀ (Port C Data Direction Register)ﾋﾞｯﾄ$07 ($27)
Read/Write
初期値

7

6

5

4

3

2

1

0

DDC7

DDC6

-

-

-

-

-

-

R/W
0

R/W
0

R
0

R
0

R
0

R
0

R
0

R
0

DDRC

11.4.7. PINC - ﾎﾟｰﾄC入力ﾚｼﾞｽﾀ (Port C Input Address)
ﾋﾞｯﾄ$06 ($26)
Read/Write
初期値

7

6

5

4

3

2

1

0

PINC7

PINC6

-

-

-

-

-

-

R/W
不定

R/W
不定

R
0

R
0

R
0

R
0

R
0

R
0

3

2

1

0

PINC

11.4.8. PORTD - ﾎﾟｰﾄD出力ﾚｼﾞｽﾀ (Port D Data Register)
ﾋﾞｯﾄ$0B ($2B)
Read/Write
初期値

7

6

5

4

PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD0 PORTD
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]53

11.4.9. DDRD - ﾎﾟｰﾄD方向ﾚｼﾞｽﾀ (Port D Data Direction Register)
ﾋﾞｯﾄ$0A ($2A)
Read/Write
初期値

7

6

5

4

3

2

1

0

DDD7

DDD6

DDD5

DDD4

DDD3

DDD2

DDD1

DDD0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

DDRD

11.4.10. PIND - ﾎﾟｰﾄD入力ﾚｼﾞｽﾀ (Port D Input Address)
ﾋﾞｯﾄ$09 ($29)
Read/Write
初期値

7

6

5

4

3

2

1

0

PIND7

PIND6

PIND5

PIND4

PIND3

PIND2

PIND1

PIND0

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

PIND

11.4.11. PORTE - ﾎﾟｰﾄE出力ﾚｼﾞｽﾀ (Port E Data Register)
ﾋﾞｯﾄ$0E ($2E)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

PORTE6---PORTE2

-

-

R
0

R/W
0

R
0

R
0

R
0

R/W
0

R
0

R
0

PORTE

11.4.12. DDRE - ﾎﾟｰﾄE方向ﾚｼﾞｽﾀ (Port E Data Direction Register)
ﾋﾞｯﾄ$0D ($2D)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

DDE6

-

-

-

DDE2

-

-

R
0

R/W
0

R
0

R
0

R
0

R/W
0

R
0

R
0

DDRE

11.4.13. PINE - ﾎﾟｰﾄE入力ﾚｼﾞｽﾀ (Port E Input Address)
ﾋﾞｯﾄ$0C ($2C)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

PINE6

-

-

-

PINE2

-

-

R/W
0

R/W
不定

R
0

R
0

R
0

R/W
不定

R
0

R
0

1

0

PINE

11.4.14. PORTF - ﾎﾟｰﾄF出力ﾚｼﾞｽﾀ (Port F Data Register)ﾋﾞｯﾄ$11 ($31)
Read/Write
初期値

7

6

5

4

PORTF7 PORTF6 PORTF5 PORTF4
R/W
0

R/W
0

R/W
0

R/W
0

3

2

-

-

R
0

R
0

PORTF1 PORTF0
R/W
0

PORTF

R/W
0

11.4.15. DDRF - ﾎﾟｰﾄF方向ﾚｼﾞｽﾀ (Port F Data Direction Register)ﾋﾞｯﾄ$10 ($30)
Read/Write
初期値

7

6

5

4

3

2

1

0

DDF7

DDF6

DDF5

DDF4

-

-

DDF1

DDF0

R/W
0

R/W
0

R/W
0

R/W
0

R
0

R
0

R/W
0

R/W
0

DDRF

11.4.16. PINF - ﾎﾟｰﾄF入力ﾚｼﾞｽﾀ (Port F Input Address)
ﾋﾞｯﾄ$0F ($2F)
Read/Write
初期値

7

6

5

4

3

2

1

0

PINF7

PINF6

PINF5

PINF4

-

-

PINF1

PINF0

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R
0

R
0

R/W
不定

R/W
不定

PINF

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]54

12. ﾀｲﾏ/ｶｳﾝﾀ0、ﾀｲﾏ/ｶｳﾝﾀ1、ﾀｲﾏ/ｶｳﾝﾀ3の前置分周器
ﾀｲﾏ/ｶｳﾝﾀ0、1、3は同じ前置分周器部を共用しますが、ﾀｲﾏ/ｶｳﾝﾀは異なる前置分周器設定ができます。以下の記述は言及した全てのﾀｲﾏ/ｶｳﾝﾀに適用されます。Tn (n=0,1,3)は一般名として使われます。

12.1. 内部ｸﾛｯｸ元
ﾀｲﾏ/ｶｳﾝﾀはｼｽﾃﾑ ｸﾛｯｸ(CSn2～0=001設定)によって直接的にｸﾛｯｸ駆動できます。これはｼｽﾃﾑ ｸﾛｯｸ周波数(fclk_I/O)と等しいﾀｲﾏ/ｶｳﾝﾀ最大ｸﾛｯｸ周波数での最高速動作を提供します。選択で前置分周器からの4つのﾀｯﾌﾟの1つがｸﾛｯｸ元として使えます。この前置分周したｸﾛｯｸは fclk_I/O/8, fclk_I/O/64, fclk_I/O/256, fclk_I/O/1024の何れかの周波数です。

12.2. 前置分周器ﾘｾｯﾄ
この前置分周器は自由走行で(換言するとﾀｲﾏ/ｶｳﾝﾀのｸﾛｯｸ選択論理回路と無関係に動作する)、Tnによって共用されます。前置
分周器はﾀｲﾏ/ｶｳﾝﾀのｸﾛｯｸ選択によって影響を及ぼされないため、前置分周器の状態は前置分周したｸﾛｯｸが使われる状況に対して密接に関係します。ﾀｲﾏ/ｶｳﾝﾀが許可され、前置分周器によってｸﾛｯｸ駆動される(CSn2～0=5～2)とき、前置分周加工の一例が生じます。ﾀｲﾏ/ｶｳﾝﾀが許可される時から最初の計数が起きるまでのｼｽﾃﾑ ｸﾛｯｸ周期数はNが前置分周値(8,64,256,1024)とすると、1～N+1 ｼｽﾃﾑ ｸﾛｯｸ周期になり得ます。
ﾌﾟﾛｸﾞﾗﾑ実行にﾀｲﾏ/ｶｳﾝﾀを同期することに対して前置分周器ﾘｾｯﾄを使うことが可能です。しかし、同じ前置分周器を共用する他のﾀｲﾏ/ｶｳﾝﾀも前置分周を使う場合、注意が必要とされなければなりません。前置分周器ﾘｾｯﾄはそれが接続される全ﾀｲﾏ/ｶｳﾝﾀについての前置分周器周期に影響を及ぼします。

12.3. 外部ｸﾛｯｸ元
Tnﾋﾟﾝに印加された外部ｸﾛｯｸ元はﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkTn)として使えます。このTnﾋﾟﾝはﾋﾟﾝ同期化論理回路によって全てのｼｽﾃﾑ ｸ
ﾛｯｸ周期に一度採取されます。この同期化(採取)された信号はその後にｴｯｼﾞ検出器を通して通過されます。図12-1.はTn同期化とｴｯｼﾞ検出器論理回路の機能等価構成図を示します。ﾚｼﾞｽﾀは内部ｼｽﾃﾑ ｸﾛｯｸ(clkI/O)の上昇端でｸﾛｯｸ駆動されます。ﾗｯﾁは内部ｼｽﾃﾑ ｸﾛｯｸのHigh区間で通過(Low区間で保持)です。
ｴｯｼﾞ検出器は上昇端(CSn2～0=111)または下降端(CSn2～0=110)の検出毎に1つのclkTnﾊﾟﾙｽを生成します。
図12-1. Tnﾋﾟﾝの採取等価構成図
同期化回路
Tn

D

Q

D

ｴｯｼﾞ (↑/↓)
Q

1
0

D

Tn_sync(ｸﾛｯｸ選択回路へ)

Q

E

clkI/O

ｴｯｼﾞ検出器

同期化とｴｯｼﾞ検出器論理回路はTnﾋﾟﾝへ印加されたｴｯｼﾞからｶｳﾝﾀが更新されるまでに2.5～3.5ｼｽﾃﾑ ｸﾛｯｸ周期の遅延をもたらします。
ｸﾛｯｸ入力の許可と禁止はTnが最低1ｼｽﾃﾑ ｸﾛｯｸ周期に対して安定してしまっている時に行われなければならず、さもなければ不正なﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ ﾊﾟﾙｽが生成される危険があります。
印加された外部ｸﾛｯｸの各半周期は正しい採取を保証するために1ｼｽﾃﾑ ｸﾛｯｸ周期より長くなければなりません。この外部ｸﾛｯｸは50%/50%ﾃﾞｭｰﾃｨ比で与えられるものとして、ｼｽﾃﾑ ｸﾛｯｸ周波数の半分未満( f EXTclk< fclk_I/O/2)であることが保証されなければなりま
せん。ｴｯｼﾞ検出器が採取を使うため、検出できる外部ｸﾛｯｸの最大周波数は採取周波数の半分です(ﾅｲｷｽﾄの標本化定理)。然しな
がら、発振元(ｸﾘｽﾀﾙ発振子、ｾﾗﾐｯｸ振動子、ｺﾝﾃﾞﾝｻ)公差によって引き起こされたｼｽﾃﾑ ｸﾛｯｸ周波数やﾃﾞｭｰﾃｨ比の変動のため、
外部ｸﾛｯｸ元の最大周波数は fclk_I/O/2.5未満が推奨されます。
外部ｸﾛｯｸ元は前置分周できません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]55

図12-2. ﾀｲﾏ/ｶｳﾝﾀ0,1,3の前置分周器部構成図

clkI/O

10ﾋﾞｯﾄ前置分周器

clkI/O/8
clkI/O/64
clkI/O/256
clkI/O/1024

R

PSRSYNC

同期化/ｴｯｼﾞ検出

T0

同期化/ｴｯｼﾞ検出

～

Tn

0

CS00
CS01
CS02

0

ﾀｲﾏ/ｶｳﾝﾀ0用
選択器

CSn0
CSn1
CSn2

clkT0

ﾀｲﾏ/ｶｳﾝﾀn用
選択器

clkTn

～

ﾀｲﾏ/ｶｳﾝﾀ0 ｸﾛｯｸ

ﾀｲﾏ/ｶｳﾝﾀn ｸﾛｯｸ

注: 入力ﾋﾟﾝの同期化/ｴｯｼﾞ検出論理回路は図12-1.で示されます。

12.4. 同期系ﾀｲﾏ/ｶｳﾝﾀ前置分周器用ﾚｼﾞｽﾀ
12.4.1. GTCCR - 一般ﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀ (General Timer/Counter Control Register)ﾋﾞｯﾄ$23 ($43)
Read/Write
初期値

7

6

5

4

3

2

1

TSM

-

-

-

-

-

-

R/W
0

R
0

R
0

R
0

R
0

R
0

R
0

0

PSRSYNC GTCCR
R/W
0● ﾋﾞｯﾄ7 - TSM : ﾀｲﾏ/ｶｳﾝﾀ同時動作 (Timer/Counter Synchronization Mode)

TSMﾋﾞｯﾄへの1書き込みはﾀｲﾏ/ｶｳﾝﾀ同期化動作を活性(有効)にします。この動作でPSRSYNCへ書かれる値は保持され、従って対応する前置分周器ﾘｾｯﾄ信号の有効を保持します。これは対応するﾀｲﾏ/ｶｳﾝﾀを停止し、設定中にそれらの1つが進行する危険なしに同じ値に設定できるのを保証します。TSMﾋﾞｯﾄが0を書かれると、PSRSYNCﾋﾞｯﾄはﾊｰﾄﾞｳｪｱによって解除(0)され、同時にﾀｲﾏ/ｶｳﾝ
ﾀが計数を始めます。
● ﾋﾞｯﾄ0 - PSRSYNC : 同期系ﾀｲﾏ/ｶｳﾝﾀ前置分周器ﾘｾｯﾄ (Prescaler Reset Timer/Counter 1,0)

このﾋﾞｯﾄが1のとき、ﾀｲﾏ/ｶｳﾝﾀ0、ﾀｲﾏ/ｶｳﾝﾀ1、ﾀｲﾏ/ｶｳﾝﾀ3の前置分周器はﾘｾｯﾄします。通常、TSMﾋﾞｯﾄが設定(1)されている場合を除き、このﾋﾞｯﾄはﾊｰﾄﾞｳｪｱによって直ちに解除(0)されます。ﾀｲﾏ/ｶｳﾝﾀ0、ﾀｲﾏ/ｶｳﾝﾀ1、ﾀｲﾏ/ｶｳﾝﾀ3は同じ前置分周器を共用し、この前置分周器のﾘｾｯﾄが全てのﾀｲﾏ/ｶｳﾝﾀに影響を及ぼすことに注意してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]56

13. 8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ0 (PWM付き)
ﾀｲﾏ/ｶｳﾝﾀ0は2つの独立した比較出力部とPWM支援付きの汎用8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ部です。それは正確なﾌﾟﾛｸﾞﾗﾑ実行ﾀｲﾐﾝｸﾞ(事象管理)、波形生成を許します。主な特徴は次に示されます。
・ 2つの独立した比較出力部
・ 2重緩衝の比較ﾚｼﾞｽﾀ・ 比較一致でのﾀｲﾏ/ｶｳﾝﾀ解除 (自動再設定)
・ 不具合なしで正しい位相のﾊﾟﾙｽ幅変調器 (PWM)
・ 可変PWM周期
・ 周波数発生器・ 3つの独立した割り込み (TOV0,OCF0A,OCF0B)

13.1. 概要
この8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀの簡単化した構成図は図13-1.で示されます。I/Oﾋﾟﾝの実際の配置については2頁の「ﾋﾟﾝ配置」を参照してくだ
さい。CPUがｱｸｾｽ可能な(I/OﾋﾞｯﾄとI/Oﾋﾟﾝを含む)I/Oﾚｼﾞｽﾀは赤文字(訳注:原文は太字)で示されます。ﾃﾞﾊﾞｲｽ仕様のI/Oﾚｼﾞｽﾀとﾋﾞｯﾄ位置は65頁の「8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ0用ﾚｼﾞｽﾀ」で一覧されます。
28頁の「PRR0 - 電力削減ﾚｼﾞｽﾀ」のPRTIM0ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ0部を許可するために0を書かれなければなりません(訳注:本行追加)。
図13-1. 8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ構成図
計数
方向
ﾘｾｯﾄ

制御回路
TOP

clkTn
BOTTOM

TOVn (割り込み要求)
ｸﾛｯｸ選択ｴｯｼﾞ検出器

Tn(前置分周器から)
TCNTn

=

=0
OCFnA (割り込み要求)

=

波形生成

OCnA

OCRnA
固定TOP値=

OCFnB (割り込み要求)
波形生成

OCnB

OCRnB
TCCRnA

TCCRnB

8-bit Data Bus

13.1.1. 関係ﾚｼﾞｽﾀ
ﾀｲﾏ/ｶｳﾝﾀ(TCNT0)と比較ﾚｼﾞｽﾀ(OCR0AとOCR0B)は8ﾋﾞｯﾄのﾚｼﾞｽﾀです。割り込み要求信号はﾀｲﾏ/ｶｳﾝﾀ0割り込み要求ﾚｼﾞｽﾀ(TIFR0)で全て見えます。全ての割り込みはﾀｲﾏ/ｶｳﾝﾀ0割り込み許可ﾚｼﾞｽﾀ(TIMSK0)で個別に遮蔽(禁止)されます。TIFR0とTIMSK0はこの図で示されません。
このﾀｲﾏ/ｶｳﾝﾀは内部的、前置分周器経由、またはT0ﾋﾟﾝの外部ｸﾛｯｸ元によってｸﾛｯｸ駆動されます。ｸﾛｯｸ選択論理部はﾀｲﾏ/ｶｳﾝ
ﾀが値を増加(または減少)するために使うｸﾛｯｸ元を制御します。ｸﾛｯｸ元が選択されないとき、ﾀｲﾏ/ｶｳﾝﾀは動きません。ｸﾛｯｸ選択論
理部からの出力はﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkT0)として参照されます。
2重緩衝化した比較ﾚｼﾞｽﾀ(OCR0AとOCR0B)はﾀｲﾏ/ｶｳﾝﾀ値と常に比較されます。この比較結果は比較出力(OC0AとOC0B)ﾋﾟﾝでPWMまたは可変周波数出力を作成するための波形生成器によって使えます。詳細については59頁の「比較出力部」をご覧ください。この比較一致発生は比較一致割り込み要求の発生に使える比較一致割り込み要求ﾌﾗｸﾞ(OCF0AとOCF0B)も設定(1)します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]57

13.1.2. 定義
本項でのﾚｼﾞｽﾀとﾋﾞｯﾄ参照の多くは一般形で書かれます。小文字の'n'はﾀｲﾏ/ｶｳﾝﾀ番号、この場合は0で置き換えます。小文字のxは比較出力部のﾁｬﾈﾙ名を表し、この場合はAまたはBです。然しながらﾌﾟﾛｸﾞﾗﾑでﾚｼﾞｽ
ﾀまたはﾋﾞｯﾄ定義に使用う時は正確な形式が使われなければなりません(例えばﾀｲﾏ/ｶｳﾝﾀ0のｶｳﾝﾀ値のｱｸｾｽに対してのTCNT0のように)。
表の定義は本資料を通して広範囲に渡って使われます。

表13-1. 用語定義
用語
意味
BOTTOM ﾀｲﾏ/ｶｳﾝﾀが$00に到達した時。
ﾀｲﾏ/ｶｳﾝﾀが$FF(255)に到達した時。
MAX
ﾀｲﾏ/ｶｳﾝﾀが指定された固定値($FF)
TOP
またはOCR0A値に到達した時。この指定(TOP)値は動作種別に依存します。

13.2. ﾀｲﾏ/ｶｳﾝﾀのｸﾛｯｸ
このﾀｲﾏ/ｶｳﾝﾀは内部または外部のｸﾛｯｸ元によってｸﾛｯｸ駆動できます。このｸﾛｯｸ元はﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀB(TCCR0B)に配置されたｸﾛｯｸ選択(CS02～0)ﾋﾞｯﾄによって制御されるｸﾛｯｸ選択論理回路で選択されます。ｸﾛｯｸ元と前置分周器の詳細については55頁の「ﾀｲﾏ/ｶｳﾝﾀ0、ﾀｲﾏ/ｶｳﾝﾀ1、ﾀｲﾏ/ｶｳﾝﾀ3の前置分周器」をご覧ください。

13.3. 計数器部
8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀの主な部分は設定可能な双方向ｶｳﾝﾀ部です。図13-2.は、このｶｳﾝﾀとその周辺環境の構成図を示します。
図13-2. ｶｳﾝﾀ部構成図
8-bit Data Bus

TCNTn(ﾀｲﾏ/ｶｳﾝﾀ)

TOVn (割り込み要求)

count
directionclear

ｸﾛｯｸ選択制御回路

BOTTOM

信号説明(内部信号)

clkTn

ｴｯｼﾞ検出器

Tn(前置分周器から)
TOP

count
direction
clear

TCNT0を1つ進めるまたは戻す信号。
進行方向(上昇または下降)選択信号。
TCNT0のﾘｾｯﾄ($00設定)信号。
clkTn
以降でclkT0として参照されるﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ信号。
TOP
TCNT0が最大値に到達したことを示す信号。
BOTTOM TCNT0が最小値($00)に到達したことを示す信号。

使った動作種別に依存して、ｶｳﾝﾀは各ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkT0)で解除($00)、増加(+1)、または減少(-1)されます。clkT0はｸﾛｯｸ選択(CS02～0)ﾋﾞｯﾄによって選択された内部または外部のｸﾛｯｸ元から生成できます。ｸﾛｯｸ元が選択されない(CS02～0=000)とき、ﾀｲﾏ/ｶｳ
ﾝﾀは停止されます。けれどもTCNT0値はﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkT0)が存在するしないに拘らず、CPUによってｱｸｾｽできます。CPU書
き込みは全てのｶｳﾝﾀ解除や計数動作を無視します(上位優先順位を持ちます)。
計数順序(方法)はﾀｲﾏ/ｶｳﾝﾀ0制御ﾚｼﾞｽﾀA(TCCR0A)に配置された波形生成種別(WGM01,0)ﾋﾞｯﾄとﾀｲﾏ/ｶｳﾝﾀ0制御ﾚｼﾞｽﾀB(TCC
R0B)に配置された波形生成種別(WGM02)ﾋﾞｯﾄの設定によって決定されます。これらはｶｳﾝﾀ動作(計数)方法とOC0A/OC0B比較出力に生成される方法間の接続に近いものです。進化した計数順序と波形生成についてより多くの詳細に関しては61頁の「動作種別」
をご覧ください。
ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV0)ﾌﾗｸﾞはWGM02～0ﾋﾞｯﾄによって選択された動作種別に従って設定(1)されます。TOV0はCPU割り込み発生に使えます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]58

13.4. 比較出力部
この8ﾋﾞｯﾄ比較器はTCNT0と比較ﾚｼﾞｽﾀ(OCR0AとOCR0B)を継続的に比較します。TCNT0がOCR0AまたはOCR0Bと等しければ比較器は一致を指示します。この一致は次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で比較割り込み要求ﾌﾗｸﾞ(OCF0AまたはOCF0B)を設定(1)します。
対応する割り込みが許可(I=1, OCIE0AまたはOCIE0B=1)されているならば、その比較割り込み要求ﾌﾗｸﾞは比較割り込みを発生します。比較割り込み要求ﾌﾗｸﾞは割り込みが実行されると自動的に解除(0)されます。代わりにこのﾌﾗｸﾞはこのI/Oﾋﾞｯﾄ位置に論理1を書くことによってｿﾌﾄｳｪｱでも解除(0)できます。波形生成器は波形 図13-3. 比較出力部構成図
生成種別(WGM02～0)ﾋﾞｯﾄと比較出力選択(COM0x1,0)ﾋﾞｯﾄに8-bit Data Bus
よって設定された動作種別に従った出力を生成するのにこの一致信号を使います。MAXとBOTTOM信号は動作種別(61頁の「動作種別」参照)のいくつかで両端値の特別な場合を扱うた
OCRnx緩衝部
TCNTn
め、波形生成器によって使われます。
図13-3.は比較出力部の構成図を示します。
OCR0xはﾊﾟﾙｽ幅変調(PWM)のどれかを使う時に2重緩衝化されます。標準動作と比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作については2重緩衝動作が禁止されます。2重緩衝動作は計数の流れのTOPまたはBOTTOMのどちらかに対してOCR0xﾚｼﾞｽﾀの更新を同期化します。この同期化は奇数長、非対称PWMﾊﾟﾙｽの発生を防ぎ、それによって不具合なしの出力を作成します。
OCR0xのｱｸｾｽは複雑なように思えますが決してそんなことはありません。2重緩衝動作が許可されるとCPUはOCR0x緩衝部をｱｸｾｽし、禁止されるとOCR0xﾚｼﾞｽﾀを直接ｱｸｾｽします。

OCRnx= (8ﾋﾞｯﾄ比較器)
OCFnx (割り込み要求)
TOP
BOTTOM
FOCnx

波形生成器
WGMn2～0

OCnx

COMnx1,0(訳注) ここでは比較nxﾚｼﾞｽﾀ全体をOCR0x、OCR0xを構成する緩衝部部分をOCR0x緩衝部、実際の比較に使われるﾚｼﾞｽﾀ本体部分をOCR0xﾚｼﾞｽﾀとして記述しています。他の部分での記述でも特に必要がある場合はこの記述方法を適用します。

13.4.1. 強制比較出力
非PWM波形生成動作での比較器の一致出力は、強制変更(FOC0x)ﾋﾞｯﾄに1を書くことによって強制(変更)できます。比較一致の強制は比較割り込み要求ﾌﾗｸﾞ(OCF0x)の設定(1)やﾀｲﾏ/ｶｳﾝﾀの再設定/解除を行いませんが、OC0xﾋﾟﾝは実際の比較一致が起きた
場合と同様に更新されます(COM0x1,0ﾋﾞｯﾄ設定がOC0xﾋﾟﾝの設定(1)、解除(0)、1/0交互のどれかを定義)。

13.4.2. TCNT0書き込みによる比較一致妨害
TCNT0への全てのCPU書き込みは、例えﾀｲﾏ/ｶｳﾝﾀが停止されていても、次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で起こるどんな比較一致をも妨げます。この特質はﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸが許可されている時に割り込みを起動することなく、TCNT0と同じ値に初期化されることを
OCR0xに許します。

13.4.3. 比較一致部の使用
どの動作種別でのTCNT0書き込みでも1ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期間、全ての比較一致を妨げるため、ﾀｲﾏ/ｶｳﾝﾀが走行中であるかな
いかに拘らず、比較出力部を使う場合、TCNT0を変更する時に危険を伴います。TCNT0に書かれた値がOCR0x値と同じ場合に比較一致は失われ(一致が発生せず)、不正な波形生成に終わります。同様にﾀｲﾏ/ｶｳﾝﾀが下降計数のとき、BOTTOMに等しいTCNT
0値を書いてはいけません。
OC0xの初期設定はﾎﾟｰﾄ ﾋﾟﾝに対するﾎﾟｰﾄ方向ﾚｼﾞｽﾀを出力に設定する前に行われるべきです。OC0x値を設定する一番簡単な方
法は標準動作で強制変更(FOC0x)ｽﾄﾛｰﾌﾞ ﾋﾞｯﾄを使うことです。波形生成動作種別間を変更する時でも、OC0x(内部)ﾚｼﾞｽﾀはその値を保ちます。
比較出力選択(COM0x1,0)ﾋﾞｯﾄが比較値(OCR0x)と共に2重緩衝されないことに気付いてください。COM0x1,0ﾋﾞｯﾄの変更は直ちに有効となります。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]59

13.5. 比較一致出力部
比較出力選択(COM0x1,0)ﾋﾞｯﾄは2つの機能を持ちます。波形生成器は次の比較一致での比較出力(OC0x)状態の定義にCOM0x1,0ﾋﾞｯﾄを使います。またCOM0x1,0ﾋﾞｯﾄはOC0xﾋﾟﾝ出力元を制御します。図13-4.はCOM0x1,0ﾋﾞｯﾄ設定によって影響を及ぼされる論
理回路の簡単化した図を示します。図のI/Oﾚｼﾞｽﾀ、I/Oﾋﾞｯﾄ、I/Oﾋﾟﾝは赤文字(訳注:原文は太字)で示されます。COM0x1,0ﾋﾞｯﾄによって影響を及ぼされる標準I/Oﾎﾟｰﾄ制御ﾚｼﾞｽﾀ(PORTとDDR)の部分だけが示されます。OC0xの状態を参照するとき、その参照は
OC0xﾋﾟﾝでなく内部OC0xﾚｼﾞｽﾀに対してです。ｼｽﾃﾑ ﾘｾｯﾄが起こると、OC0xﾚｼﾞｽﾀは'0'にﾘｾｯﾄされます。
図13-4. 比較一致出力回路図

OCnx
波形生成器

8-bit Data Bus

COMnx1
COMnx0
FOCnx

D

Q

PORT
D

1
0

OCnx

Q

DDR
D

Q

clkI/O
COM0x1,0ﾋﾞｯﾄのどちらかが設定(1)されると、標準I/Oﾎﾟｰﾄ機能は波形生成器からの比較出力(OC0x)によって無効にされます。けれ
どもOC0xﾋﾟﾝの方向(入出力)はﾎﾟｰﾄ ﾋﾟﾝに対するﾎﾟｰﾄ方向ﾚｼﾞｽﾀ(DDR)によって未だ制御されます。OC0xﾋﾟﾝに対するﾎﾟｰﾄ方向ﾚｼﾞ
ｽﾀのﾋﾞｯﾄ(DDR_OC0x)はOC0x値がﾋﾟﾝで見えるのに先立って出力として設定されなければなりません。このﾎﾟｰﾄの交換機能は波形生成種別と無関係です。
比較出力ﾋﾟﾝ論理回路の設計は出力が許可される前のOC0x状態の初期化を許します。いくつかのCOM0x1,0ﾋﾞｯﾄ設定が或る種の動作種別に対して予約されることに注意してください。65頁の「8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ0用ﾚｼﾞｽﾀ」をご覧ください。

13.5.1. 比較一致出力選択と波形生成波形生成器は標準、CTC、PWM動作でCOM0x1,0ﾋﾞｯﾄを違うふうに使います。全ての動作種別に対してCOM0x1,0=00設定は次の比較一致で実行すべきOC0xﾚｼﾞｽﾀの動きがないことを波形生成器へ告げます。非PWM動作での比較出力動作については65頁の表13-2.と表13-5.を参照してください。高速PWM動作については65頁の表13-3.と表13-6.、位相基準PWMについては65頁の表
13-4.と表13-7.を参照してください。
COM0x1,0ﾋﾞｯﾄの状態変更はこのﾋﾞｯﾄが書かれた後の最初の比較一致で有効になります。非PWM動作について、この動作は強制
変更(FOC0x)ｽﾄﾛｰﾌﾞ ﾋﾞｯﾄを使うことによって直ちに効果を得ることを強制できます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]60

13.6. 動作種別
動作種別、換言するとﾀｲﾏ/ｶｳﾝﾀと比較出力ﾋﾟﾝの動作は波形生成種別(WGM02～0)ﾋﾞｯﾄと比較出力選択(COM0x1,0)ﾋﾞｯﾄの組み合
わせによって定義されます。比較出力選択ﾋﾞｯﾄは計数順序(動作)に影響を及ぼしませんが、一方波形生成種別ﾋﾞｯﾄは影響を及ぼします。COM0x1,0ﾋﾞｯﾄは生成されるPWM出力が反転されるべきか、されないべきか(反転または非反転PWM)どちらかを制御します。
非PWM動作に対するCOM0x1,0ﾋﾞｯﾄは比較一致で出力が解除(0)、設定(1)、1/0交互のどれにされるべきかを制御します(60頁の「比較一致出力部」をご覧ください)。
ﾀｲﾐﾝｸﾞ情報の詳細については64頁の「ﾀｲﾏ/ｶｳﾝﾀ0のﾀｲﾐﾝｸﾞ」を参照してください。

13.6.1. 標準動作
最も単純な動作種別が標準動作(WGM02～0=000)です。この動作種別での計数方向は常に上昇(+)で、ｶｳﾝﾀ解除は実行されません。ｶｳﾝﾀは8ﾋﾞｯﾄ最大値(TOP=$FF)を通過すると単に範囲を超え、そして$00(BOTTOM)から再び始めます。通常動作でのﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV0)ﾌﾗｸﾞはTCNT0が$00になる時と同じﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。この場合のTOV0ﾌﾗｸﾞは設定(1)のみで解除(0)されないことを除いて第9ﾋﾞｯﾄのようになります。けれどもTOV0ﾌﾗｸﾞを自動的に解除(0)するﾀｲﾏ/ｶｳﾝﾀ0溢れ割り込みと組み合わせたﾀｲﾏ/ｶｳﾝﾀの分解能はｿﾌﾄｳｪｱによって増やせます。標準動作での考慮に特別な場合はなく、新しいｶｳﾝﾀ値は何時でも書けます。
比較出力部は与えられた或る時間に割り込みを生成するのに使えます。標準動作で波形を生成するのに比較出力を使うのは、それが大変多くのCPU時間を占有するため推奨されません。

13.6.2. 比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作
比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作(WGM02～0=010)ではOCR0Aがｶｳﾝﾀの分解能を操作するのに使われます。CTC動作ではｶｳﾝﾀ(TCNT0)値がOCR0Aと一致する時にｶｳﾝﾀは$00に解除されます。OCR0Aはｶｳﾝﾀに対するTOP値、従って分解能も定義します。
この動作種別はより大きい比較一致出力周波数の制御を許します。それは外部の出来事の計数操作も簡単にします。
CTC動作についてのﾀｲﾐﾝｸﾞ図は図13-5.で示されます。ｶｳﾝﾀ(TCNT0)値はTCNT0とOCR0A間で比較一致が起こるまで増加し、そしてその後にｶｳﾝﾀ(TCNT0)は解除($00)されます。
図13-5. CTC動作ﾀｲﾐﾝｸﾞ
OCFnx割り込み要求ﾌﾗｸﾞ設定(TOP値割り込み)

TOP
TCNTn

OCnx(交互)
周期

1

2

3

4

5

注: COMnx1,0=01
OCF0Aﾌﾗｸﾞを使うことにより、ﾀｲﾏ/ｶｳﾝﾀ値がTOP値に達する時毎に割り込みが生成できます。割り込みが許可されるなら、割り込み処理ﾙｰﾁﾝはTOP値を更新するのに使えます。けれども前置分周なしまたは低い前置分周値でｶｳﾝﾀが走行している時にBOTTOMと近い値にTOPを変更することは、CTC動作が2重緩衝機能を持たないために注意して行わなければなりません。OCR0Aに書かれた新しい値がTCNT0の現在値よりも低い(小さい)場合、ﾀｲﾏ/ｶｳﾝﾀは(その回の)比較一致を失います。その後もｶｳﾝﾀは比較一致が起こるのに先立って最大値($FF)へ、そして次に$00から始める計数をしなければならないでしょう。
CTC動作で波形出力を生成するため、OC0A出力は比較出力選択(COM0A1,0)ﾋﾞｯﾄを交互動作(=01)に設定することによって各比較一致での論理ﾚﾍﾞﾙ交互切り替えに設定できます。OC0A値はそのﾋﾟﾝに対するﾃﾞｰﾀ方向が出力(DDR_OC0A=1)に設定されない限りﾎﾟｰﾄ ﾋﾟﾝで見えないでしょう。生成された波形はOCR0Aが0($00)に設定される時に fOC0A= fclk_I/O/2の最大周波数を得ます。生成波形周波数は次式によって定義されます。
fOCnx =

fclk_I/O
2×N×(1＋OCRnx)

変数Nは前置分周数(1,8,64,256,1024)を表します。
標準動作と同じように、ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV0)ﾌﾗｸﾞはｶｳﾝﾀがMAXから$00へ計数するのと同じﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]61

13.6.3. 高速PWM動作
高速ﾊﾟﾙｽ幅変調(PWM)動作(WGM02～0=011または111)は高周波数PWM波形生成選択を提供します。高速PWMはそれが単一傾
斜(鋸波)動作であることによって他のPWM動作と異なります。ｶｳﾝﾀはBOTTOMからTOPまで計数し、その後BOTTOMから再び始めます。TOPはWGM02～0=011時に$FF、WGM02～0=111時にOCR0Aとして定義されます。非反転比較出力動作(COM0x1,0=10)での比較出力(OC0x)はTCNT0とOCR0x間の比較一致で解除(0)され、BOTTOMで設定(1)されます。反転出力動作(COM0x1,0=11)の出力は比較一致で設定(1)され、BOTTOMで解除(0)されます。この単一傾斜動作のため、高速PWM動作の動作周波数は両傾斜(三角波)動作を使う位相基準PWM動作よりも2倍高くできます。この高い周波数は電力調節、整流、D/A変換に対して高速PWM動作を都合よく適合させます。高い周波数は物理的に小さな外部部品(ｺｲﾙやｺﾝﾃﾞﾝｻ)を許し、従ってｼｽﾃﾑ総費用を削減します。
高速PWM動作でのﾀｲﾏ/ｶｳﾝﾀはﾀｲﾏ/ｶｳﾝﾀ値がTOP値と一致するまで増加されます。そしてﾀｲﾏ/ｶｳﾝﾀは(一致の)次のﾀｲﾏ/ｶｳﾝﾀ
ｸﾛｯｸ周期で解除($00)されます。高速PWM動作のﾀｲﾐﾝｸﾞ図は図13-6.で示されます。TCNT0値はﾀｲﾐﾝｸﾞ図で単一傾斜動作(鋸波)を表す折れ線ｸﾞﾗﾌとして示されます。この図は非反転と反転のPWM出力を含みます。細い赤線はOCR0x値を示し、TCNT0値との交点(接点)がTCNT0とOCR0x間の比較一致を示します(訳注:図補正に伴い本行若干変更)。比較割り込み要求ﾌﾗｸﾞ(OCF0x)はOCR0
x=TOPを除いて比較一致が起こると設定(1)されます(訳注:共通性のため本行追加)。
図13-6. 高速PWM動作ﾀｲﾐﾝｸﾞ
OCRnx更新、TOVn割り込み要求ﾌﾗｸﾞ設定

OCFnx割り込み要求ﾌﾗｸﾞ設定

OCRnx
TCNTn

OCnx(非反転)(COMnx1,0=10)
OCnx(反転)(COMnx1,0=11)
周期

1

2

3

4

5

6

7

ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV0)ﾌﾗｸﾞはｶｳﾝﾀがTOPに到達する時毎に設定(1)されます。割り込みが許可されるなら、その割り込み処理ﾙｰﾁ
ﾝは比較値を更新するのに使えます。
高速PWM動作での比較部はOC0xﾋﾟﾝでのPWM波形の生成を許します。COM0x1,0ﾋﾞｯﾄを'10'に設定することは非反転PWM出力を作成し、反転PWM出力はCOM0x1,0を'11'に設定することで生成できます。WGM02ﾋﾞｯﾄが設定(1)ならば、COM0A1,0ﾋﾞｯﾄの'01'設定
は比較一致での交互反転をOC0Aﾋﾟﾝに許します。この任意選択はOC0Bﾋﾟﾝに対して利用できません(65頁の表13-3.と表13-6.をご覧ください)。実際のOC0x値はﾎﾟｰﾄ ﾋﾟﾝに対するﾃﾞｰﾀ方向(DDR_OC0x)が出力として設定される場合だけ見えるでしょう。PWM波形
はTCNT0とOCR0x間の比較一致で、OC0x(内部)ﾚｼﾞｽﾀを設定(1)(または解除(0))と、ｶｳﾝﾀが解除($00,TOPからBOTTOMへ変更)されるﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期でOC0xﾚｼﾞｽﾀを解除(0)または設定(1)することによって生成されます。
PWM出力周波数は次式によって計算できます。
fOCnxPWM =fclk_I/O
N×(1+TOP)

変数Nは前置分周数(1,8,64,256,1024)を表します。
OCR0xの両端値は高速PWM動作でPWM波形出力を生成する時の特別な場合にあたります。OCR0xがBOTTOM($00)と等しく設定
されると、出力はTOP+1 ﾀｲﾏ/ｶｸﾝﾀ ｸﾛｯｸ周期毎の狭いｽﾊﾟｲｸ(ﾊﾟﾙｽ)になるでしょう。OCR0xがTOPに等しく設定されると、(COM0x1,0ﾋﾞｯﾄによって設定される出力極性に依存して)定常的なLowまたはHigh出力に終わるでしょう。
(訳補:WGM02～0=111の場合については、)高速PWM動作での(ﾃﾞｭｰﾃｨ比50%)周波数の波形出力は比較一致毎に論理反転する
OC0A設定(COM0A1,0=01)によって達成できます。生成された波形はOCR0Aが0($00)に設定される時に fOC0x= fclk_I/O/2の最大周波数でしょう。この特性は高速PWM動作で比較出力部の2重緩衝機能が許可されることを除いて、CTC動作でのOC0A交互出力(COM0A1,0=01)と同じです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]62

13.6.4. 位相基準PWM動作
位相基準ﾊﾟﾙｽ幅変調(PWM)動作(WGM02～0=001または101)は高分解能で正しい位相のPWM波形生成選択を提供します。位相基準PWM動作は両傾斜(三角波)動作を基準とします。ｶｳﾝﾀはBOTTOMからTOPへそして次にTOPからBOTTOMへを繰り返し計数します。TOPはWGM02～0=001時に$FF、WGM02～0=101時にOCR0Aとして定義されます。非反転比較出力動作(COM0x1,0=10)での比較出力(OC0x)は上昇計数中のTCNT0とOCR0xの比較一致で解除(0)され、下降計数中の比較一致で設定(1)されます。
反転出力動作(COM0x1,0=11)での動作は逆にされます。両傾斜(三角波)動作は単一傾斜(鋸波)動作よりも低い最大動作周波数になります。けれども両傾斜(三角波)動作の対称特性のため、これらの動作種別は電動機制御の応用に好まれます。

位相基準PWM動作でのｶｳﾝﾀはｶｳﾝﾀ値がTOPと一致するまで増加されます。ｶｳﾝﾀはTOPに達すると計数方向を変更します。この
TCNT0値は1ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期間TOPと等しくなります。位相基準PWM動作のﾀｲﾐﾝｸﾞ図は図13-7.で示されます。TCNT0値はﾀ
ｲﾐﾝｸﾞ図で両傾斜動作(三角波)を表す折れ線ｸﾞﾗﾌとして示されます。この図は非反転と反転のPWM出力を含みます。細い赤線はOCR0x値を示し、TCNT0値との交点(接点)がTCNT0とOCR0x間の比較一致を示します(訳注:図補正に伴い本行若干変更)。
図13-7. 位相基準PWM動作ﾀｲﾐﾝｸﾞ
OCFnx割り込み要求ﾌﾗｸﾞ設定

TOVn割り込み要求ﾌﾗｸﾞ設定

OCRnx
TCNTn

OCnx(非反転)(COMnx1,0=10)
OCnx(反転)(COMnx1,0=11)
周期

1

2

3

OCRnx更新

ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV0)ﾌﾗｸﾞはﾀｲﾏ/ｶｳﾝﾀがBOTTOMに到達する時毎に設定(1)されます。この割り込み要求ﾌﾗｸﾞはｶｳﾝﾀがBOTT
OM値に到達する毎に割り込みを発生するために使えます。

位相基準PWM動作での比較部はOC0xﾋﾟﾝでのPWM波形の生成を許します。COM0x1,0ﾋﾞｯﾄを'10'に設定することは非反転PWM出力を作成し、反転PWM出力はCOM0x1,0ﾋﾞｯﾄを'11'に設定することで生成できます。WGM02ﾋﾞｯﾄが設定(1)なら、COM0A1,0ﾋﾞｯﾄの'01'設定は比較一致での交互反転をOC0Aﾋﾟﾝに許します。この任意選択はOC0Bﾋﾟﾝに対して利用できません(65頁の表13-4.と表13-7.をご覧ください)。実際のOC0x値はそのﾎﾟｰﾄ ﾋﾟﾝに対するﾃﾞｰﾀ方向(DDR_OC0x)が出力として設定される場合だけ見えるでしょう。PWM波形はｶｳﾝﾀが増加する時のTCNT0とOCR0x間の比較一致でOC0x(内部)ﾚｼﾞｽﾀを設定(1)(または解除(0))と、ｶｳﾝﾀが減少する時のTCNT0とOCR0x間の比較一致でOC0xﾚｼﾞｽﾀを解除(0)(または設定(1))によって生成されます。位相基準PWMを使う時の出力に対するPWM周波数は次式によって計算できます。
fOCnxPCPWM =fclk_I/O
2×N×TOP

変数Nは前置分周数(1,8,64,256,1024)を表します。
OCR0xの両端値は位相基準PWM動作でPWM波形出力を生成する時の特別な場合にあたります。非反転PWM動作ではOCR0xが
BOTTOM($00)に等しく設定されると出力は定常的なLow、TOPに等しく設定されると定常的なHighになるでしょう。反転PWMに対する出力は逆の論理値になります。
図13-7.の第2周期のその出発点に於いて、例え比較一致がないとしても、OCnxにはHighからLowへの遷移があります。この遷移点
はBOTTOMを挟む対称を保証するためです。比較一致なしに遷移を生ずるのは2つの場合です。
●

図13-7.でのようにOCR0xはTOPからその値を変更します。OCR0x値がTOPのとき、OCnxﾋﾟﾝ値は下降計数での比較一致の結果と同じです(訳補: L→H、直前がHのため、常にH)。BOTTOMを挟む対称を保証するため、(変更直後の)TOP(位置)でのOCnx値
は上昇計数での比較一致の結果(H→L)と一致しなければなりません。

●

ﾀｲﾏ/ｶｳﾝﾀがOCR0x値よりも高い値から数え始め、そしてその理屈のために比較一致、それ故上昇途中で起こされるであろうOC
nxの変更を逃します。(訳補: 従って上記同様、TOP位置で(直前がHならば)H→L遷移が生じます。)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

63

13.7. ﾀｲﾏ/ｶｳﾝﾀのﾀｲﾐﾝｸﾞ
このﾀｲﾏ/ｶｳﾝﾀは同期設計で、従って以下の図でﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkT0)がｸﾛｯｸ許可信号として示されます。この図は割り込みﾌﾗｸﾞが設定(1)される時の情報を含みます。図13-8.は基本的なﾀｲﾏ/ｶｳﾝﾀ動作についてのﾀｲﾐﾝｸﾞ ﾃﾞｰﾀを含みます。この図は位相基
準PWM動作以外の全ての動作種別でのMAX値近辺の計数の流れを示します。
図13-8. 前置分周なし(1/1)のﾀｲﾏ/ｶｳﾝﾀ ﾀｲﾐﾝｸﾞ

clkI/O
clkTn (clkI/O/1)
TCNT0

MAX-1

MAX

BOTTOM

BOTTOM+1

BOTTOM

BOTTOM+1

TOVn

図13-9.は同じﾀｲﾐﾝｸﾞ ﾃﾞｰﾀを示しますが、前置分周器が許可されています。
図13-9. 前置分周器(fclk_I/O/8)のﾀｲﾏ/ｶｳﾝﾀ ﾀｲﾐﾝｸﾞ

clkI/O
clkTn (clkI/O/8)
TCNT0

MAX-1

MAX

TOVn

図13-10.はCTC動作とOCR0AがTOPのPWM動作を除く全動作種別でのOCF0Aと全動作種別でのOCF0Bの設定を示します。
図13-10. 前置分周器(fclk_I/O/8)のﾀｲﾏ/ｶｳﾝﾀ、OCF0x設定 ﾀｲﾐﾝｸﾞ

clkI/O
clkTn (clkI/O/8)
TCNT0

OCRnx-1

OCRnx

OCRnx

OCRnx+1

OCRnx+2

OCRnx値

OCFnx

図13-11.はOCR0AがTOPの高速PWM動作と、CTC動作でのTCNT0の解除とOCF0Aの設定を示します。
図13-11. 前置分周器(fclk_I/O/8)のﾀｲﾏ/ｶｳﾝﾀ、OCF0A設定 ﾀｲﾐﾝｸﾞ

clkI/O
clkTn (clkI/O/8)
TCNT0 (CTC)
OCRnx

TOP-1

TOP

BOTTOM

BOTTOM+1

TOP値

OCFnx

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]64

13.8. 8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ0用ﾚｼﾞｽﾀ
13.8.1. TCCR0A - ﾀｲﾏ/ｶｳﾝﾀ0制御ﾚｼﾞｽﾀA (Timer/Counter 0 Control Register A)
ﾋﾞｯﾄ$24 ($44)
Read/Write
初期値

7

6

5

4

COM0A1 COM0A0 COM0B1 COM0B0
R/W
0

R/W
0

R/W
0

R/W
0

3

2

1

0

-

-

WGM01

WGM00

R
0

R
0

R/W
0

R/W
0

TCCR0A● ﾋﾞｯﾄ7,6 - COM0A1,0 : 比較A出力選択 (Compare Match A Output Mode bit 1 and 0)

これらのﾋﾞｯﾄはOC0A比較出力ﾋﾟﾝの動作を制御します。COM0A1,0ﾋﾞｯﾄの1つまたは両方が1を書かれると、OC0A出力はそのI/Oﾋﾟ
ﾝの通常ﾎﾟｰﾄ機能を無効にし、そのI/Oﾋﾟﾝに接続されます。けれども出力駆動部を許可するため、OC0Aﾋﾟﾝに対応するﾎﾟｰﾄ方向ﾚｼﾞｽﾀ(DDR)のﾋﾞｯﾄが設定(1)されなければならないことに注意してください。
OC0Aがﾋﾟﾝに接続されるとき、COM0A1,0ﾋﾞｯﾄの機能はWGM02～0ﾋﾞｯﾄ設定に依存します。
表13-2.はWGM0 2～0 ﾋﾞｯﾄが標準動作またはCTC動作(つまり 表13-2. 非PWM動作比較A出力選択
PWM以外)に設定される時のCOM0A1,0ﾋﾞｯﾄ機能を示します。
COM0A1 COM0A0
意味
表13-3.はWGM02～0ﾋﾞｯﾄが高速PWM動作に設定される時のCO
0
標準ﾎﾟｰﾄ動作 (OC0A切断)
0
M0A1,0ﾋﾞｯﾄの機能を示します。
比較一致でOC0Aﾋﾟﾝ ﾄｸﾞﾙ(交互)出力01
表13-4.はWGM02～0ﾋﾞｯﾄが位相基準PWM動作に設定される時
1
比較一致でOC0Aﾋﾟﾝ Lowﾚﾍﾞﾙ出力
0のCOM0A1,0ﾋﾞｯﾄの機能を示します。
比較一致でOC0Aﾋﾟﾝ Highﾚﾍﾞﾙ出力
11
表13-3. 高速PWM動作比較A出力選択 (共通注意参照)
COM0A1 COM0A0
意味
00
標準ﾎﾟｰﾄ動作 (OC0A切断)
WGM02=0 : 標準ﾎﾟｰﾄ動作 (OC0A切断)
1
0
WGM02=1 : 比較一致でOC0Aﾋﾟﾝ ﾄｸﾞﾙ(交互)出力
比較一致でLow、BOTTOMでHighを
0
1
OC0Aﾋﾟﾝへ出力 (非反転動作)
比較一致でHigh、BOTTOMでLowを
1
1
OC0Aﾋﾟﾝへ出力 (反転動作)

表13-4. 位相基準PWM動作比較A出力選択 (共通注意参照)
COM0A1 COM0A0
意味
0
標準ﾎﾟｰﾄ動作 (OC0A切断)
0WGM02=0 : 標準ﾎﾟｰﾄ動作 (OC0A切断)
01
WGM02=1 : 比較一致でOC0Aﾋﾟﾝ ﾄｸﾞﾙ(交互)出力上昇計数時の比較一致でLow、下降計数
10時の比較一致でHighをOC0Aﾋﾟﾝへ出力
上昇計数時の比較一致でHigh、下降計数
11時の比較一致でLowをOC0Aﾋﾟﾝへ出力● ﾋﾞｯﾄ5,4 - COM0B1,0 : 比較B出力選択 (Compare Match B Output Mode bit 1 and 0)

これらのﾋﾞｯﾄはOC0B比較出力ﾋﾟﾝの動作を制御します。COM0B1,0ﾋﾞｯﾄの1つまたは両方が1を書かれると、OC0B出力はそのI/Oﾋﾟﾝの通常ﾎﾟｰﾄ機能を無効にし、そのI/Oﾋﾟﾝに接続されます。けれども出力駆動部を許可するため、OC0Bﾋﾟﾝに対応するﾎﾟｰﾄ方向ﾚｼﾞ
ｽﾀ(DDR)のﾋﾞｯﾄが設定(1)されなければならないことに注意してください。
OC0Bがﾋﾟﾝに接続されるとき、COM0B1,0ﾋﾞｯﾄの機能はWGM02～0ﾋﾞｯﾄ設定に依存します。
表13-5.はWGM0 2～0 ﾋﾞｯﾄが標準動作またはCTC動作(つまり 表13-5. 非PWM動作比較B出力選択
PWM以外)に設定される時のCOM0B1,0ﾋﾞｯﾄ機能を示します。
COM0B1 COM0B0
意味
表13-6.はWGM02～0ﾋﾞｯﾄが高速PWM動作に設定される時のCO
0
標準ﾎﾟｰﾄ動作 (OC0B切断)
0M0B1,0ﾋﾞｯﾄの機能を示します。
比較一致でOC0Bﾋﾟﾝ ﾄｸﾞﾙ(交互)出力01
表13-7.はWGM02～0ﾋﾞｯﾄが位相基準PWM動作に設定される時
1
比較一致でOC0Bﾋﾟﾝ Lowﾚﾍﾞﾙ出力
0のCOM0B1,0ﾋﾞｯﾄの機能を示します。
比較一致でOC0Bﾋﾟﾝ Highﾚﾍﾞﾙ出力
1
1
表13-6. 高速PWM動作比較B出力選択 (共通注意参照)
COM0B1 COM0B0
意味
0
標準ﾎﾟｰﾄ動作 (OC0B切断)
0
(予約)
0
1
比較一致でLow、BOTTOMでHighを
1
0
OC0Bﾋﾟﾝへ出力 (非反転動作)
比較一致でHigh、BOTTOMでLowを
1
1
OC0Bﾋﾟﾝへ出力 (反転動作)

表13-7. 位相基準PWM動作比較B出力選択 (共通注意参照)
COM0B1 COM0B0
意味
0
標準ﾎﾟｰﾄ動作 (OC0B切断)
0
(予約)
0
1
上昇計数時の比較一致でLow、下降計数
10時の比較一致でHighをOC0Bﾋﾟﾝへ出力
上昇計数時の比較一致でHigh、下降計数
11時の比較一致でLowをOC0Bﾋﾟﾝへ出力

共通注意: COM0x1が設定(1)され、対応するOCR0xがTOPと等しい時に特別な状態が起きます。この状態での比較一致は無視されますが、BOTTOMまたはTOPでの設定(1)または解除(0)は行われます。より多くの詳細については62頁の「高速PWM動作」または63頁の「位相基準PWM動作」をご覧ください。 (表13-3,4,6,7.各々での注:を纏めました。)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]65

● ﾋﾞｯﾄ3,2 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ1,0 - WGM01,0 : 波形生成種別 (Waveform Generation Mode bit 1 and 0)

ﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀB(TCCR0B)で得られるWGM02ﾋﾞｯﾄと組み合わせたこれらのﾋﾞｯﾄはｶｳﾝﾀの計数順序(方向)、最大ｶｳﾝﾀ(TOP)値の供給元、使われるべき波形生成のどの形式かを制御します(下表参照)。ﾀｲﾏ/ｶｳﾝﾀ部によって支援される動作種別は標準動作(ｶｳﾝﾀ)、比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作と2形式のﾊﾟﾙｽ幅変調(PWM)動作です。61頁の「動作種別」をご覧ください。
表13-8. 波形生成種別選択
番号 WGM02 WGM01 WGM00
0
0
0
0
1
0
0
1
2
0
1
0
3
0
1
1
4
0
0
1
5
1
0
1
6
1
1
0
7
1
1
1
注: MAX=$FF、BOTTOM=$00です。

ﾀｲﾏ/ｶｳﾝﾀ動作種別
標準動作
8ﾋﾞｯﾄ位相基準PWM動作
比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作
8ﾋﾞｯﾄ高速PWM動作(予約)
位相基準PWM動作(予約)
高速PWM動作

TOP値
$FF
$FF
OCR0A
$FF
OCR0A
OCR0A

OCR0x更新時
即時TOP
即時BOTTOMTOP
BOTTOM

TOV0設定時MAX
BOTTOMMAX
MAX
BOTTOM
TOP

13.8.2. TCCR0B - ﾀｲﾏ/ｶｳﾝﾀ0制御ﾚｼﾞｽﾀB (Timer/Counter0 Control Register B)
ﾋﾞｯﾄ$25 ($45)
Read/Write
初期値

7

6

5

4

3

2

1

0

FOC0A

FOC0B

-

-

WGM02

CS02

CS01

CS00

W
0

W
0

R
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

TCCR0B● ﾋﾞｯﾄ7 - FOC0A : OC0A強制変更 (Force Output Compare A)

FOC0AﾋﾞｯﾄはWGM02～0ﾋﾞｯﾄが非PWM動作を指示する時だけ有効です。
けれども将来のﾃﾞﾊﾞｲｽとの共通性を保証するため、PWM動作で扱う時にTCCR0Bが書かれる場合、このﾋﾞｯﾄは0に設定されなければなりません。FOC0Aﾋﾞｯﾄに論理1を書くと、波形生成部で直ちに比較一致が強制されます。OC0A出力はCOM0A1,0ﾋﾞｯﾄ設定に従って変更されます。FOC0Aﾋﾞｯﾄがｽﾄﾛｰﾌﾞとして実行されることに注意してください。従って強制した比較の効果を決めるのはCOM
0A1,0ﾋﾞｯﾄに存在する値です。
FOC0Aｽﾄﾛｰﾌﾞは何れの割り込みの生成もTOPとしてOCR0Aを使う比較一致ﾀｲﾏ解除(CTC)動作でのﾀｲﾏ/ｶｳﾝﾀの解除($00)も行いません。
FOC0Aﾋﾞｯﾄは常に0として読まれます。
● ﾋﾞｯﾄ6 - FOC0B : OC0B強制変更 (Force Output Compare B)

FOC0BﾋﾞｯﾄはWGM02～0ﾋﾞｯﾄが非PWM動作を指示する時だけ有効です。
けれども将来のﾃﾞﾊﾞｲｽとの共通性を保証するため、PWM動作で扱う時にTCCR0Bが書かれる場合、このﾋﾞｯﾄは0に設定されなければなりません。FOC0Bﾋﾞｯﾄに論理1を書くと、波形生成部で直ちに比較一致が強制されます。OC0B出力はCOM0B1,0ﾋﾞｯﾄ設定に従って変更されます。FOC0Bﾋﾞｯﾄがｽﾄﾛｰﾌﾞとして実行されることに注意してください。従って強制した比較の効果を決めるのはCOM
0B1,0ﾋﾞｯﾄに存在する値です。
FOC0Bｽﾄﾛｰﾌﾞは何れの割り込みの生成も行いません。
FOC0Bﾋﾞｯﾄは常に0として読まれます。
● ﾋﾞｯﾄ5,4 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ3 - WGM02 : 波形生成種別 (Waveform Generation Mode bit 2)

65頁の「TCCR0A - ﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀA」のWGM01,0ﾋﾞｯﾄ記述をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]66

● ﾋﾞｯﾄ2～0 - CS02～0 : ｸﾛｯｸ選択0 (Clock Select0, bit 2,1 and 0)

この3つのｸﾛｯｸ選択ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ(TCNT0)によって使われるｸﾛｯｸ元を選択します。
表13-9. ﾀｲﾏ/ｶｳﾝﾀ0入力ｸﾛｯｸ選択
CS02
CS01
CS00
0
0
0
0
0
1
0
0
1
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1

意味
停止 (ﾀｲﾏ/ｶｳﾝﾀ0動作停止)
clkI/O (前置分周なし)
clkI/O/8 (8分周)clkI/O/64 (64分周)
clkI/O/256 (256分周)
clkI/O/1024 (1024分周)
T0ﾋﾟﾝの下降端 (外部ｸﾛｯｸ)
T0ﾋﾟﾝの上昇端 (外部ｸﾛｯｸ)

外部ﾋﾟﾝ(ｸﾛｯｸ)動作がﾀｲﾏ/ｶｳﾝﾀ0に対して使われる場合、例えT0ﾋﾟﾝが出力として設定されても、T0ﾋﾟﾝの遷移はｶｳﾝﾀをｸﾛｯｸ駆動
します。この特徴がｿﾌﾄｳｪｱに計数制御を許します。

13.8.3. TCNT0 - ﾀｲﾏ/ｶｳﾝﾀ0 (Timer/Counter0)
ﾋﾞｯﾄ$26 ($46)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

TCNT0

R/W
0

このﾀｲﾏ/ｶｳﾝﾀ ﾚｼﾞｽﾀは読み書き両方の操作について、ﾀｲﾏ/ｶｳﾝﾀ部の8ﾋﾞｯﾄ ｶｳﾝﾀに直接ｱｸｾｽします。TCNT0への書き込みは次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸでの比較一致を妨害(除去)します。ｶｳﾝﾀが走行中にｶｳﾝﾀ(TCNT0)を変更することはTCNT0とOCR0x間の比較
一致消失の危険を誘発します。

13.8.4. OCR0A - ﾀｲﾏ/ｶｳﾝﾀ0 比較Aﾚｼﾞｽﾀ (Timer/Counter0 Output Compare A Register)ﾋﾞｯﾄ$27 ($47)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR0A

R/W
0

この比較ﾚｼﾞｽﾀは継続的にｶｳﾝﾀ(TCNT0)値と比較される8ﾋﾞｯﾄの値を含みます。一致は比較一致割り込みやOC0Aﾋﾟﾝでの波形出力を生成するのに使えます。

13.8.5. OCR0B - ﾀｲﾏ/ｶｳﾝﾀ0 比較Bﾚｼﾞｽﾀ (Timer/Counter0 Output Compare B Register)ﾋﾞｯﾄ$28 ($48)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR0B

R/W
0

この比較ﾚｼﾞｽﾀは継続的にｶｳﾝﾀ(TCNT0)値と比較される8ﾋﾞｯﾄの値を含みます。一致は比較一致割り込みやOC0Bﾋﾟﾝでの波形出力を生成するのに使えます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]67

13.8.6. TIMSK0 - ﾀｲﾏ/ｶｳﾝﾀ0割り込み許可ﾚｼﾞｽﾀ (Timer/Counter 0 Interrupt Mask Register)
ﾋﾞｯﾄ
($6E)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

-

OCIE0B

OCIE0A

TOIE0

R
0

R
0

R
0

R
0

R
0

R/W
0

R/W
0

R/W
0

TIMSK0● ﾋﾞｯﾄ7～3 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ2 - OCIE0B : ﾀｲﾏ/ｶｳﾝﾀ0比較B割り込み許可 (Timer/Counter0 Output Compare Match B Interrupt Enable)

OCIE0Bﾋﾞｯﾄが1を書かれ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ0比較B一致割り込みが許可されます。ﾀｲﾏ/ｶｳﾝﾀ0で比較B一致が起こる、換言するとﾀｲﾏ/ｶｳﾝﾀ0割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFR0)で比較B割り込み要求ﾌﾗｸﾞ(OCF0B)が設定(1)されると、対応する割り込みが実行されます。
● ﾋﾞｯﾄ1 - OCIE0A : ﾀｲﾏ/ｶｳﾝﾀ0比較A割り込み許可 (Timer/Counter0 Output Compare Match A Interrupt Enable)

OCIE0Aﾋﾞｯﾄが1を書かれ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ0比較A一致割り込みが許可されます。ﾀｲﾏ/ｶｳﾝﾀ0で比較A一致が起こる、換言するとﾀｲﾏ/ｶｳﾝﾀ0割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFR0)で比較A割り込み要求ﾌﾗｸﾞ(OCF0A)が設定(1)されると、対応する割り込みが実行されます。
● ﾋﾞｯﾄ0 - TOIE0 : ﾀｲﾏ/ｶｳﾝﾀ0溢れ割り込み許可 (Timer/Counter0 Overflow Interrupt Enable)

TOIE0ﾋﾞｯﾄが1を書かれ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ0溢れ割り込みが許可されます。ﾀｲﾏ/ｶｳﾝﾀ0溢れが起こる、換言するとﾀｲﾏ/ｶｳﾝﾀ0割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFR0)でﾀｲﾏ/ｶｳﾝﾀ0溢れ割り込み要求(TOV0)ﾌﾗｸﾞが設定(1)されると、対応する割り込みが実行されます。

13.8.7. TIFR0 - ﾀｲﾏ/ｶｳﾝﾀ0割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ (Timer/Counter 0 Interrupt Flag Register)ﾋﾞｯﾄ$15 ($35)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

-

OCF0B

OCF0A

TOV0

R
0

R
0

R
0

R
0

R
0

R/W
0

R/W
0

R/W
0

TIFR0

● ﾋﾞｯﾄ7～3 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ2 - OCF0B : ﾀｲﾏ/ｶｳﾝﾀ0比較B割り込み要求ﾌﾗｸﾞ (Timer/Conter0, Output Compare B Match Flag)

OCF0Bﾋﾞｯﾄは比較一致がﾀｲﾏ/ｶｳﾝﾀ(TCNT0)と比較ﾚｼﾞｽﾀ(OCR0B)間で起こる時に設定(1)されます。対応する割り込み処理ﾍﾞｸﾀを実行すると、OCF0Bはﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにこのﾌﾗｸﾞへ論理1を書くことによってもOCF0Bは解除(0)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄ、ﾀｲﾏ/ｶｳﾝﾀ0割り込み許可ﾚｼﾞｽﾀ(TIMSK0)のﾀｲﾏ/ｶｳﾝﾀ0比較B一致割り込み許可(OCIE0B)ﾋﾞｯﾄ、OCF0Bが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ0比較B一致割り込みが実行されます。
● ﾋﾞｯﾄ1 - OCF0A : ﾀｲﾏ/ｶｳﾝﾀ0比較A割り込み要求ﾌﾗｸﾞ (Timer/Conter0, Output Compare A Match Flag)

OCF0Aﾋﾞｯﾄは比較一致がﾀｲﾏ/ｶｳﾝﾀ(TCNT0)と比較ﾚｼﾞｽﾀ(OCR0A)間で起こる時に設定(1)されます。対応する割り込み処理ﾍﾞｸﾀを実行すると、OCF0Aはﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにこのﾌﾗｸﾞへ論理1を書くことによってもOCF0Aは解除(0)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄ、ﾀｲﾏ/ｶｳﾝﾀ0割り込み許可ﾚｼﾞｽﾀ(TIMSK0)のﾀｲﾏ/ｶｳﾝﾀ0比較A一致割り込み
許可(OCIE0A)ﾋﾞｯﾄ、OCF0Aが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ0比較A一致割り込みが実行されます。
● ﾋﾞｯﾄ0 - TOV0 : ﾀｲﾏ/ｶｳﾝﾀ0溢れ割り込み要求ﾌﾗｸﾞ (Timer/Counter0 Overflow Flag)

TOV0ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ(TCNT0)溢れが起こる時に設定(1)されます。対応する割り込み処理ﾍﾞｸﾀを実行すると、TOV0はﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにこのﾌﾗｸﾞへ論理1を書くことによってもTOV0は解除(0)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄ、ﾀｲﾏ/ｶｳﾝﾀ0割り込み許可ﾚｼﾞｽﾀ(TIMSK0)のﾀｲﾏ/ｶｳﾝﾀ0溢れ割り込み許可(TOIE0)ﾋﾞｯﾄ、TOV0が設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ0溢れ割り込みが実行されます。位相基準PWM動作ではﾀｲﾏ/ｶｳﾝﾀ0が$00で計数方向を変える時にこのﾋﾞｯﾄが設定(1)されます。
これらﾌﾗｸﾞの設定はWGM02～0ﾋﾞｯﾄ設定に依存します。66頁の波形生成種別ﾋﾞｯﾄ記述の表13-8.を参照してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]68

14. 16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ (ﾀｲﾏ/ｶｳﾝﾀ1,ﾀｲﾏ/ｶｳﾝﾀ3)
この16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ部は正確なﾌﾟﾛｸﾞﾗﾑ実行ﾀｲﾐﾝｸﾞ(事象管理)、波形生成、信号ﾀｲﾐﾝｸﾞ計測を許します。主な特徴：
・ 真の16ﾋﾞｯﾄ設計 (換言すれば16ﾋﾞｯﾄPWMの許容)・ 不具合なしで正しい位相のﾊﾟﾙｽ幅変調器 (PWM)
・ 3つの独立した比較出力部
・ 可変PWM周期
・ 2重緩衝の比較ﾚｼﾞｽﾀ・ 周波数発生器
・ 1つの捕獲入力部
・ 外部事象計数器
・ 捕獲入力雑音消去器
・ 10種の独立した割り込み (TOV1,OCF1A,OCF1B,OCF1C,ICF1,
・ 比較一致でのﾀｲﾏ/ｶｳﾝﾀ解除 (自動再設定)
TOV3,OCF3A,OCF3B,OCF3C,ICF3)

14.1. 概要
本資料でのﾚｼﾞｽﾀとﾋﾞｯﾄ参照の多くは一般形で書かれます。小文字の'n'はﾀｲﾏ/ｶｳﾝﾀ番号、小文字の'x'は比較出力部の置き換えです。けれどもﾌﾟﾛｸﾞﾗﾑでﾚｼﾞｽﾀまたはﾋﾞｯﾄ定義に使う時は正確な形式が使われなければなりません(例えばﾀｲﾏ/ｶｳﾝﾀ1のｶｳﾝﾀ値
に対するｱｸｾｽのTCNT1のように)。
この16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀの簡略化構成図は図14-1.で示されます。CPUがｱｸｾｽ可能な(I/OﾋﾞｯﾄとI/Oﾋﾟﾝを含む)I/Oﾚｼﾞｽﾀは、赤文字(訳注:原文太字)で示されます。ﾃﾞﾊﾞｲｽ仕様のI/Oﾚｼﾞｽﾀとﾋﾞｯﾄ位置は83頁の「16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ1,3用ﾚｼﾞｽﾀ」で示されます。
28頁の「PRR0 - 電力削減ﾚｼﾞｽﾀ」のPRTIM1ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ1部を許可するために0を書かれなければなりません。29頁の「PRR1 電力削減ﾚｼﾞｽﾀ」のPRTIM3ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ3部を許可するために0を書かれなければなりません。
図14-1. 16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ構成図
計数
方向
ﾘｾｯﾄ

制御回路
TOP

TCNTn

=

clkTn

TOVn (割り込み要求)(注1)

ｸﾛｯｸ選択BOTTOM

ｴｯｼﾞ検出器

Tn(前置分周器から)=0

OCFnA (割り込み要求)
=

波形生成

OCnA

OCFnB (割り込み要求)

(注1)

波形生成

OCnB

OCFnC (割り込み要求)

(注1)

波形生成

OCnC

OCRnA
固定TOP値
=
OCRnB

=
OCRnC

(ｱﾅﾛｸﾞ比較器
出力から)ICFn (割り込み要求)
ｴｯｼﾞ検出ICRn
TCCRnA

TCCRnB

雑音消去

ICPn

TCCRnC

8-bit Data Bus
注: ﾀｲﾏ/ｶｳﾝﾀ1,3のﾋﾟﾝ配置と説明については2頁の「ﾋﾟﾝ配置」、45頁の表11-3.、47頁の表11-6.、48頁の表11-8.を参照してください。
注1: T3入力、OC3B出力、OC3C出力が製品で利用できないため、Tn,OCnB,OCnCは各々、T1,OC1B,OC
1Cだけを参照します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]69

14.1.1. 関係ﾚｼﾞｽﾀ
ﾀｲﾏ/ｶｳﾝﾀ(TCNTn)、比較ﾚｼﾞｽﾀ(OCRnA,OCRnB,OCRnC)、捕獲ﾚｼﾞｽﾀ(ICRn)は全て16ﾋﾞｯﾄ ﾚｼﾞｽﾀです。16ﾋﾞｯﾄ ﾚｼﾞｽﾀをｱｸｾｽす
るとき、特別な手順に従わなければなりません。これらの手順は71頁の「16ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」項で記述されます。ﾀｲﾏ/ｶｳﾝﾀn制御
ﾚｼﾞｽﾀ(TCCRnA,TCCRnB,TCCRnC)は8ﾋﾞｯﾄ ﾚｼﾞｽﾀで、CPUｱｸｾｽ制限はありません。割り込み要求信号はﾀｲﾏ/ｶｳﾝﾀn割り込み要求ﾚｼﾞｽﾀ(TIFRn)で全て見えます。全ての割り込みはﾀｲﾏ/ｶｳﾝﾀn割り込み許可ﾚｼﾞｽﾀ(TIMSKn)で個別に遮蔽(禁止)されます。TIFRnとTIMSKnはこの図で示されません。
このﾀｲﾏ/ｶｳﾝﾀは内部的、前置分周器経由、またはTnﾋﾟﾝの外部ｸﾛｯｸ元によってｸﾛｯｸ駆動されます。ｸﾛｯｸ選択論理部はﾀｲﾏ/ｶｳﾝ
ﾀが値を増加(または減少)するのに使うｸﾛｯｸ元とｴｯｼﾞを制御します。ｸﾛｯｸ元が選択されないとき、ﾀｲﾏ/ｶｳﾝﾀは動きません。ｸﾛｯｸ選
択論理部からの出力はﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkTn)として参照されます。
2重緩衝化した比較ﾚｼﾞｽﾀ(OCRnA,OCRnB,OCRnC)はﾀｲﾏ/ｶｳﾝﾀ値と常に比較されます。この比較結果は比較出力(OCnA,OCnB,
OCnC)ﾋﾟﾝでPWMまたは可変周波数出力を生成するための波形生成器によって使えます。75頁の「比較出力部」をご覧ください。この比較一致発生は比較出力割り込み要求の発生に使える比較一致割り込み要求ﾌﾗｸﾞ(OCFnA,OCFnB,OCFnC)も設定(1)します。
捕獲ﾚｼﾞｽﾀ(ICRn)は捕獲起動(ICPn)ﾋﾟﾝまたはｱﾅﾛｸﾞ比較器出力(192頁の「ｱﾅﾛｸﾞ比較器」参照)のどちらかの外部(ｴｯｼﾞで起動された)事象でﾀｲﾏ/ｶｳﾝﾀ値を捕獲(複写)できます。捕獲入力部は尖頭雑音を捕らえる機会を軽減するためにﾃﾞｼﾞﾀﾙ濾波部(雑音消去器)を含みます。
TOP値または最大ﾀｲﾏ/ｶｳﾝﾀ値は、いくつかの動作種別で、OCRnA、ICRn、または一群の固定値のどれかによって定義できます。
PWM動作でTOP値としてOCRnAを使うと、OCRnAはPWM出力生成用に使えません。けれどもこの場合、TOP値は動作中に変更されるのをTOP値に許す2重緩衝化します。固定的なTOP値が必要とされる場合、ICRnが代わりに使え、PWM出力として使われるべきOCRnAを開放します。

14.1.2. 定義
次の定義は本資料を通して広範囲に使われます。
表14-1. 用語定義
用語
意味
BOTTOM ｶｳﾝﾀが$0000に到達した時。
ｶｳﾝﾀが$FFFF(65535)に到達した時。
MAX
ｶｳﾝﾀがTOP値に到達した時(計数動作での最大値と等しくなった時)。TOP値は固定値($00FF,$01FF,$03FF)、TOP
OCRnA値、ICRn値の何れか1つを指定できます。この指定は動作種別に依存します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]70

14.2. 16ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ
TCNTn,OCRnA,OCRnB,OCRnC,ICRnは8ﾋﾞｯﾄ ﾊﾞｽ経由でAVR CPUによってｱｸｾｽできる16ﾋﾞｯﾄ ﾚｼﾞｽﾀです。この16ﾋﾞｯﾄ ﾚｼﾞｽﾀは2
回の読みまたは書き操作を使ってﾊﾞｲﾄ ｱｸｾｽされなければなりません。各々の16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀは16ﾋﾞｯﾄ ｱｸｾｽの上位ﾊﾞｲﾄの一時保存用に1つの8ﾋﾞｯﾄ ﾚｼﾞｽﾀを持ちます。16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ内の全ての16ﾋﾞｯﾄ ﾚｼﾞｽﾀ間で、この同じ一時ﾚｼﾞｽﾀが共用されます。下位ﾊﾞｲﾄ ｱｸｾｽが16ﾋﾞｯﾄ読み書き動作を起動します。16ﾋﾞｯﾄ ﾚｼﾞｽﾀの下位ﾊﾞｲﾄがCPUによって書かれると、一時ﾚｼﾞｽﾀに保存した上位ﾊﾞｲﾄと書かれた下位ﾊﾞｲﾄは同じｸﾛｯｸ周期で両方が16ﾋﾞｯﾄ ﾚｼﾞｽﾀに複写されます。16ﾋﾞｯﾄ ﾚｼﾞｽﾀの下位ﾊﾞｲﾄがCPUによって読まれると、16ﾋﾞｯﾄ ﾚｼﾞｽﾀの上位ﾊﾞｲﾄは下位ﾊﾞｲﾄが読まれるのと同じｸﾛｯｸ周期で一時ﾚｼﾞｽﾀに複写されます。
全ての16ﾋﾞｯﾄ ｱｸｾｽが上位ﾊﾞｲﾄに対して一時ﾚｼﾞｽﾀを使う訳ではありません。OCRnA,OCRnB,OCRnCの16ﾋﾞｯﾄ ﾚｼﾞｽﾀ読み込みは一時ﾚｼﾞｽﾀの使用に関係しません。
16ﾋﾞｯﾄ書き込みを行うために上位ﾊﾞｲﾄは下位ﾊﾞｲﾄに先立って書かれなければなりません。16ﾋﾞｯﾄ読み込みについては下位ﾊﾞｲﾄが上位ﾊﾞｲﾄの前に読まれなければなりません。
次のｺｰﾄﾞ例は割り込みが一時ﾚｼﾞｽﾀを更新しないことが前提の16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ ﾚｼﾞｽﾀのｱｸｾｽ法を示します。OCRnA,OCRnB,
OCRnC,ICRnﾚｼﾞｽﾀのｱｸｾｽに対して同じ原理が直接的に使えます。C言語を使う時にｺﾝﾊﾟｲﾗが16ﾋﾞｯﾄ ｱｸｾｽを扱うことに注意してください。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
～
LDI
LDI
OUT
OUT

R17,$01
R16,$FFTCNTnH,R17
TCNTnL,R16

IN
R16,TCNTnL
IN
R17,TCNTnH～
C言語ﾌﾟﾛｸﾞﾗﾑ例
unsigned int i;～
TCNTn = 0x1FF;
i = TCNTn;～;;[16ﾋﾞｯﾄ($01FF)書き込み];$01FFの上位ﾊﾞｲﾄ値取得;$01FFの下位ﾊﾞｲﾄ値取得;上位ﾊﾞｲﾄ設定(一時ﾚｼﾞｽﾀ);下位ﾊﾞｲﾄ設定(一時ﾚｼﾞｽﾀ⇒上位ﾊﾞｲﾄ);[16ﾋﾞｯﾄ読み込み];下位ﾊﾞｲﾄ取得(上位ﾊﾞｲﾄ⇒一時ﾚｼﾞｽﾀ);上位ﾊﾞｲﾄ取得(一時ﾚｼﾞｽﾀ);/* *//* 16ﾋﾞｯﾄ($01FF)書き込み *//* 16ﾋﾞｯﾄ読み込み *//* */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
ｱｾﾝﾌﾞﾘ言語ｺｰﾄﾞ例はR17:R16ﾚｼﾞｽﾀ対にTCNTn値を戻します。
16ﾋﾞｯﾄ ﾚｼﾞｽﾀ ｱｸｾｽが非分断操作であることに注意することが重要です。16ﾋﾞｯﾄ ﾚｼﾞｽﾀをｱｸｾｽする2命令間で割り込みが起き、割り込みｺｰﾄﾞがその16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ ﾚｼﾞｽﾀの同じ若しくは他の何れかをｱｸｾｽすることによって一時ﾚｼﾞｽﾀを更新する場合、割り込み外のその後のｱｸｾｽ結果は不正にされます。従って主ｺｰﾄﾞと割り込みｺｰﾄﾞの両方が一時ﾚｼﾞｽﾀを更新するとき、主ｺｰﾄﾞは16ﾋﾞｯﾄ ｱｸｾ
ｽ中の割り込みを禁止しなければなりません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]71

次のｺｰﾄﾞ例はTCNTnﾚｼﾞｽﾀ内容の非分断読み込み法を示します。同じ原理を使うことにより、OCRnA,OCRnB,OCRnC,ICRnのどの読み込みも行えます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
RD_TCNTn:
IN
R18,SREG
CLI
IN
R16,TCNTnL
IN
R17,TCNTnH
OUT
SREG,R18
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
unsigned int TIM16_Read_TCNTn(void){
unsigned char sreg;
unsigned int i;sreg = SREG;__disable_interrupt();
i = TCNTn;
SREG = sreg;
return i;};現全割り込み許可ﾌﾗｸﾞ(I)を保存;全割り込み禁止;TCNTn下位ﾊﾞｲﾄ取得(上位ﾊﾞｲﾄ⇒一時ﾚｼﾞｽﾀ);TCNTn上位ﾊﾞｲﾄ取得(一時ﾚｼﾞｽﾀ);全割り込み許可ﾌﾗｸﾞ(I)を復帰;呼び出し元へ復帰/* ｽﾃｰﾀｽ ﾚｼﾞｽﾀ一時保存変数定義 *//* TCNTn読み出し変数定義 *//* 現全割り込み許可ﾌﾗｸﾞ(I)を保存 *//* 全割り込み禁止 *//* TCNTn値を取得 *//* 全割り込み許可ﾌﾗｸﾞ(I)を復帰 *//* TCNTn値で呼び出し元へ復帰 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
ｱｾﾝﾌﾞﾘ言語ｺｰﾄﾞ例はR17:R16ﾚｼﾞｽﾀ対にTCNTn値を戻します。
次のｺｰﾄﾞ例はTCNTnﾚｼﾞｽﾀ内容の非分断書き込み法を示します。同じ原理を使うことにより、OCRnA,OCRnB,OCRnC,ICRnのどの書き込みも行えます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
WR_TCNTn:
IN
R18,SREG
CLI
OUT
TCNTnH,R17
OUT
TCNTnL,R16
OUT
SREG,R18
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void TIM16_Write_TCNTn(unsigned int i){
unsigned char sreg;
unsigned int i;sreg = SREG;__disable_interrupt();
TCNTn = i;
SREG = sreg;};現全割り込み許可ﾌﾗｸﾞ(I)を保存;全割り込み禁止;TCNTn上位ﾊﾞｲﾄ設定(一時ﾚｼﾞｽﾀ);TCNTn下位ﾊﾞｲﾄ設定(一時ﾚｼﾞｽﾀ⇒上位ﾊﾞｲﾄ);全割り込み許可ﾌﾗｸﾞ(I)を復帰;呼び出し元へ復帰/* ｽﾃｰﾀｽ ﾚｼﾞｽﾀ一時保存変数定義 *//* TCNTn書き込み変数定義 *//* 現全割り込み許可ﾌﾗｸﾞ(I)を保存 *//* 全割り込み禁止 *//* TCNTn値を設定 *//* 全割り込み許可ﾌﾗｸﾞ(I)を復帰 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
ｱｾﾝﾌﾞﾘ言語ｺｰﾄﾞ例はR17:R16ﾚｼﾞｽﾀ対がTCNTnへ書かれるべき値を含むことが必要です。

14.2.1. 上位ﾊﾞｲﾄ一時ﾚｼﾞｽﾀの再使用
書かれる全ﾚｼﾞｽﾀについて上位ﾊﾞｲﾄが同じ複数16ﾋﾞｯﾄ ﾚｼﾞｽﾀ書き込みなら、上位ﾊﾞｲﾄは1度書かれることだけが必要です。けれども直前で記述した非分断操作の同じ規則が、この場合にも適用されることに注意してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]72

14.3. ﾀｲﾏ/ｶｳﾝﾀのｸﾛｯｸ
このﾀｲﾏ/ｶｳﾝﾀは内部または外部のｸﾛｯｸ元によってｸﾛｯｸ駆動できます。このｸﾛｯｸ元はﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀB(TCCRnB)に配置されたｸﾛｯｸ選択(CSn2～0)ﾋﾞｯﾄによって制御されるｸﾛｯｸ選択論理回路で選択されます。ｸﾛｯｸ元と前置分周器の詳細については55頁の「ﾀｲﾏ/ｶｳﾝﾀ0、ﾀｲﾏ/ｶｳﾝﾀ1、ﾀｲﾏ/ｶｳﾝﾀ3の前置分周器」をご覧ください。

14.4. 計数器部
16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀの主な部分は設定可能な16ﾋﾞｯﾄ双方向ｶｳﾝﾀ部です。図14-2.はこのｶｳﾝﾀとその周辺の構成図を示します。
図14-2. ｶｳﾝﾀ部構成図
8-bit Data Bus
TOVn (割り込み要求)

TEMP(8ﾋﾞｯﾄ)
TCNTnH(8ﾋﾞｯﾄ) TCNTnL(8ﾋﾞｯﾄ)
TCNTn(16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ)

countdirectionclear

ｸﾛｯｸ選択
制御回路

clkTn

ｴｯｼﾞ検出器

Tn(前置分周器から)TOP BOTTOM

信号説明(内部信号)

countdirection
clear

TCNTnを1つ進めるまたは戻す信号。
進行方向(上昇または下降)選択信号。
TCNTnのﾘｾｯﾄ($0000設定)信号。
clkTn
ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ信号。
TOP
TCNTnが最大値に到達したことを示す信号。
BOTTOM TCNTnが最小値($0000)に到達したことを示す信号。
TEMP
一時ﾚｼﾞｽﾀ。

この16ﾋﾞｯﾄ ｶｳﾝﾀはｶｳﾝﾀの上位8ﾋﾞｯﾄを含むｶｳﾝﾀ上位(TCNTnH)と下位8ﾋﾞｯﾄを含むｶｳﾝﾀ下位(TCNTnL)の2つの8ﾋﾞｯﾄ I/Oﾒﾓﾘ位置に配置されます。TCNTnHﾚｼﾞｽﾀはCPUによる間接的なｱｸｾｽのみできます。CPUがTCNTnH I/O位置をｱｸｾｽするとき、CPUは上
位ﾊﾞｲﾄ一時ﾚｼﾞｽﾀ(TEMP)をｱｸｾｽします。この一時ﾚｼﾞｽﾀはTCNTnLが読まれる時にTCNTnH値で更新され、TCNTnLが書かれる時にTCNTnHは一時ﾚｼﾞｽﾀ値で更新されます。これは8ﾋﾞｯﾄ ﾃﾞｰﾀ ﾊﾞｽ経由で1ｸﾛｯｸ周期内での16ﾋﾞｯﾄ ｶｳﾝﾀ値全体の読み書きをCPUに許します。予測不能な結果を生じる、ｶｳﾝﾀが計数中の時のTCNTn書き込みの特別な場合に注意することが重要です。この特別な場合はそれらが重要となる項目で記述されます。
使った動作種別に依存して、ｶｳﾝﾀは各ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkTn)でﾘｾｯﾄ($0000)、増加(+1)、または減少(-1)されます。clkTnはｸﾛｯｸ
選択(CSn2～0)ﾋﾞｯﾄによって選択された内部または外部のｸﾛｯｸ元から生成できます。ｸﾛｯｸ元が選択されない(CSn2～0=000)時にｶｳﾝﾀは停止されます。けれどもTCNTn値はﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkTn)が存在するしないに拘らず、CPUによってｱｸｾｽできます。CPU書き
込みは全てのｶｳﾝﾀ解除や計数動作を無視します(上位優先権を持ちます)。
計数順序(方法)はﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀA(TCCRnA)とﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀB(TCCRnB)に配置された波形生成種別(WGMn3～0)
ﾋﾞｯﾄの設定によって決定されます。これらはｶｳﾝﾀ動作(計数)方法と波形がOCnx比較出力に生成される方法間の接続に近いものです。進化した計数順序と波形生成についてより多くの詳細に対しては78頁の「動作種別」をご覧ください。
ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOVn)ﾌﾗｸﾞはWGMn3～0ﾋﾞｯﾄによって選択された動作種別に従って設定(1)されます。TOVnはCPU割り込み発生に使えます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]73

14.5. 捕獲入力部
ﾀｲﾏ/ｶｳﾝﾀは外部の出来事を捕獲でき、発生時間を示す時間印(ﾀｲﾏ/ｶｳﾝﾀ値)を与える捕獲入力部と合体します。出来事または複数の出来事を示す外部信号はICPnﾋﾟﾝまたは代わりにｱﾅﾛｸﾞ比較器経由で印加できます。時間印はその後、周波数、ﾃﾞｭｰﾃｨ比、印加された信号の他の特性の計算に使えます。代わりに時間印は出来事の記録作成にも使えます。
捕獲入力部は図14-3.で示される構成図によって図解されます。直接的な捕獲入力部の部分でない構成図の要素は青枠(訳注:原文は灰色背景)で示されます。ﾚｼﾞｽﾀとﾋﾞｯﾄ名での小文字の'n'はﾀｲﾏ/ｶｳﾝﾀ番号を示します。
図14-3. 捕獲入力部構成図
8-bit Data Bus

TEMP(8ﾋﾞｯﾄ)

ICRnH(8ﾋﾞｯﾄ)
WR

ｱﾅﾛｸﾞ比較器 ACIC
+ ACO
-

ICPn

ICRnL(8ﾋﾞｯﾄ)

ICRn(16ﾋﾞｯﾄ ﾚｼﾞｽﾀ)

TCNTnH(8ﾋﾞｯﾄ) TCNTnL(8ﾋﾞｯﾄ)

TCNTn(16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ)

ICNC

ICES

雑音消去器

ｴｯｼﾞ検出器

ICFn (割り込み要求)

注: ACO,ACICはｱﾅﾛｸﾞ比較器制御/状態ﾚｼﾞｽﾀ(ACSR)内のﾋﾞｯﾄです。

注: ｱﾅﾛｸﾞ比較器出力(ACO)はﾀｲﾏ/ｶｳﾝﾀ1のみ起動でき、ﾀｲﾏ/ｶｳﾝﾀ3では使えません。
捕獲起動入力(ICPn)ﾋﾟﾝ若しくは代わりにｱﾅﾛｸﾞ比較器出力(ACO)で論理ﾚﾍﾞﾙの変化(出来事)が起き、その変化がｴｯｼﾞ検出器の設定を追認すると、捕獲が起動されます。捕獲が起動されると、ｶｳﾝﾀ(TCNTn)の16ﾋﾞｯﾄ値が捕獲ﾚｼﾞｽﾀ(ICRn)に書かれます。捕獲割り込み要求ﾌﾗｸﾞ(ICFn)はTCNTn値がICRnに複写されるのと同じｼｽﾃﾑ ｸﾛｯｸで設定(1)されます。許可(I=1, ICIEn=1)ならば捕獲割り込
み要求ﾌﾗｸﾞは捕獲割り込みを発生します。ICFnは割り込みが実行されると自動的に解除(0)されます。代わりにこのI/O ﾋﾞｯﾄ位置に
論理1を書くことによってｿﾌﾄｳｪｱでも解除(0)できます。
捕獲ﾚｼﾞｽﾀ(ICRn)の16ﾋﾞｯﾄ値読み込みは、初めに下位ﾊﾞｲﾄ(ICRnL)、その後に上位ﾊﾞｲﾄ(ICRnH)を読むことによって行われます。下位ﾊﾞｲﾄが読まれる時に上位ﾊﾞｲﾄが上位ﾊﾞｲﾄ一時ﾚｼﾞｽﾀ(TEMP)に複写されます。CPUがICRnH I/O位置を読むと、この一時ﾚｼﾞｽﾀをｱｸｾｽします。
ICRnはｶｳﾝﾀのTOP値定義にICRnを利用する波形生成種別を使う時にだけ書けます。これらの場合、TOP値がICRnに書かれ得る
前に波形生成種別(WGMn3～0)ﾋﾞｯﾄが設定されなければなりません。ICRnに書く時は下位ﾊﾞｲﾄがICRnLに書かれる前に、上位ﾊﾞｲﾄ
がICRnH I/O位置に書かれなければなりません。
16ﾋﾞｯﾄ ﾚｼﾞｽﾀ ｱｸｾｽ法のより多くの情報については71頁の「16ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」を参照してください。

14.5.1. 捕獲起動元
捕獲入力部用の主な起動元は捕獲起動入力(ICPn)ﾋﾟﾝです。ﾀｲﾏ/ｶｳﾝﾀ1は捕獲入力部用起動元としてｱﾅﾛｸﾞ比較器出力を代わりに使えます。ｱﾅﾛｸﾞ比較器はｱﾅﾛｸﾞ比較器制御/状態ﾚｼﾞｽﾀ(ACSR)のｱﾅﾛｸﾞ比較器捕獲起動許可(ACIC)ﾋﾞｯﾄの設定(1)によって起動元として選択されます。起動元を変更することが捕獲を起動し得ることに気付いてください。従って捕獲割り込み要求ﾌﾗｸﾞ(ICFn)
は、その変更後に解除(0)されなければなりません。
捕獲起動入力(ICPn)ﾋﾟﾝとｱﾅﾛｸﾞ比較器出力(ACO)の両入力は、Tnﾋﾟﾝ(55頁の図12-1.参照)についてと同じ技法を使って採取されます。ｴｯｼﾞ検出器も全く同じです。けれども雑音消去が許可されると、付加論理回路がｴｯｼﾞ検出器の前に挿入され、そして遅延を4ｼｽ
ﾃﾑ ｸﾛｯｸ周期増やします。ﾀｲﾏ/ｶｳﾝﾀがTOP値定義にICRnを使う波形生成種別に設定されないなら、雑音消去器とｴｯｼﾞ検出器の入力が常に許可されることに注意してください。
捕獲入力はICPnﾋﾟﾝのﾎﾟｰﾄを制御することによってｿﾌﾄｳｪｱで起動できます。

14.5.2. 雑音消去器
雑音消去器は簡単なﾃﾞｼﾞﾀﾙ濾波器機構を使うことによって雑音耐性を改善します。雑音消去器の入力は4採取に渡って監視され、ｴｯｼﾞ検出器によって使われる方向転換となる出力を変更するためには4回全てが同じでなければなりません。
雑音消去器はﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀB(TCCRnB)の捕獲入力雑音消去許可(ICNCn)ﾋﾞｯﾄの設定(1)によって許可されます。許可した
とき、雑音消去器は入力に印加した変更からICRnの更新までに4ｼｽﾃﾑ ｸﾛｯｸ周期の追加遅延をもたらします。雑音消去器はｼｽﾃﾑ
ｸﾛｯｸを使い、従って前置分周器によって影響されません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]74

14.5.3. 捕獲入力の使用
捕獲入力機能を使う主な要求(目的)は入って来る出来事に対して充分なﾌﾟﾛｾｯｻ能力を当てがうことです。2つの出来事間の時間が際どいとします。次の出来事が起こる前に捕獲した捕獲ﾚｼﾞｽﾀ(ICRn)の値をﾌﾟﾛｾｯｻが読めなかった場合、ICRnは新しい値で上書きされます。この場合、捕獲の結果は不正にされます。
捕獲割り込みを使う時にICRnは割り込み処理ﾙｰﾁﾝで可能な限り早く読まれるべきです。捕獲割り込みが相対的に高い優先順位であっても、最大割り込み応答時間は他の割り込み要求のどれかを扱うのに必要とされる最大ｸﾛｯｸ周期数に依存します。
動作中にTOP値(分解能)が積極的に変更されるとき、どの動作種別での捕獲入力部の使用も推奨されません。
外部信号のﾃﾞｭｰﾃｨ比測定は各捕獲後に起動端が変更されることを必要とします。検出端の変更はICRnが読まれてしまった後に可能な限り早く行われなければなりません。ｴｯｼﾞの変更後、捕獲割り込み要求ﾌﾗｸﾞ(ICFn)はｿﾌﾄｳｪｱ(I/Oﾋﾞｯﾄ位置への論理1書き込み)によって解除(0)されなければなりません(訳補:ｴｯｼﾞ変更によってICFnが設定(1)されることを想定)。周波数のみの測定について、(割り込み処理が使われる場合)ICFnの解除(0)は必要とされません。

14.6. 比較出力部
この16ﾋﾞｯﾄ比較器はTCNTnと比較ﾚｼﾞｽﾀ(OCRnx)を継続的に比較します。TCNTnとOCRnxが等しければ、比較器は一致を指示します。この一致は次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で比較割り込み要求ﾌﾗｸﾞ(OCFnx)を設定(1)します。許可(I=1,OCIEnx=1)なら、この比較割り込み要求ﾌﾗｸﾞは比較割り込みを発生します。OCFnxは割り込みが実行されると自動的に解除(0)されます。代わりにOCFnxはこの
I/Oﾋﾞｯﾄ位置に論理1を書くことによってｿﾌﾄｳｪｱでも解除(0)できます。波形生成器は波形生成種別(WGMn3～0)ﾋﾞｯﾄと比較出力選択(COMnx1,0)ﾋﾞｯﾄによって設定された動作種別に従った出力を生成するのにこの一致信号を使います。TOPとBOTTOM信号は動作
種別(78頁の「動作種別」参照)のいくつかで両端値の特別な場合を扱うため、波形生成器によって使われます。
比較A出力部の特殊な特性はﾀｲﾏ/ｶｳﾝﾀのTOP値(換言するとｶｳﾝﾀの分解能)定義を許します。ｶｳﾝﾀの分解能に加え、TOP値は波形生成器によって生成された波形の周期時間を定義します。
図14-4.は比較出力部の構成図を示します。ﾚｼﾞｽﾀとﾋﾞｯﾄ名での小文字の'n'はﾀｲﾏ/ｶｳﾝﾀ番号(ﾀｲﾏ/ｶｳﾝﾀ1に対してはn=1)、小文字の'x'は比較出力部(A、BまたはC)を表します。直接的な比較出力部の部分でない構成図の要素は青枠(訳注:原文は灰色背景)で示されます。
図14-4. 比較出力部構成図
8-bit Data Bus
TEMP(8ﾋﾞｯﾄ)

OCRnxH緩衝部(8ﾋﾞｯﾄ) OCRnxL緩衝部(8ﾋﾞｯﾄ)

TCNTnH(8ﾋﾞｯﾄ)

OCRnx緩衝部(16ﾋﾞｯﾄ ﾚｼﾞｽﾀ)

OCRnxH (8ﾋﾞｯﾄ)

TCNTnL(8ﾋﾞｯﾄ)

TCNTn(16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ)

OCRnxL (8ﾋﾞｯﾄ)

OCRnx (16ﾋﾞｯﾄ ﾚｼﾞｽﾀ)= (16ﾋﾞｯﾄ比較器)
OCFnx (割り込み要求)
TOP
BOTTOM

波形生成器
WGMn3～0

OCnx

COMnx1,0ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

75

OCRnxは12種類のﾊﾟﾙｽ幅変調(PWM)のどれかを使う時に2重緩衝化されます。標準動作と比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作については2重緩衝動作が禁止されます。2重緩衝動作は計数の流れのTOPまたはBOTTOMのどちらかに対してOCRnxﾚｼﾞｽﾀの更新を同期化します。この同期化は奇数長、非対称PWMﾊﾟﾙｽの発生を防ぎ、それによって不具合なしの出力を作成します。
OCRnxのｱｸｾｽは複雑なように思えますが決してそんなことはありません。2重緩衝動作が許可されるとCPUはOCRnx緩衝部をｱｸｾｽし、禁止されるとOCRnxﾚｼﾞｽﾀを直接ｱｸｾｽします。OCRnx(緩衝部またはﾚｼﾞｽﾀ)の内容は書き込み操作によってのみ変更されます(ﾀｲﾏ/ｶｳﾝﾀはTCNTnやICRnのようにOCRnxを自動的に更新しません)。従ってOCRnxは上位ﾊﾞｲﾄ一時ﾚｼﾞｽﾀ(TEMP)経由で読まれません。けれども他の16ﾋﾞｯﾄ ﾚｼﾞｽﾀをｱｸｾｽする時のように下位ﾊﾞｲﾄを先に読むのは良い習慣です。OCRnx書き込みは16ﾋﾞｯﾄ全ての比較が継続的に行われるため、一時ﾚｼﾞｽﾀ経由で行われなければなりません。上位ﾊﾞｲﾄ(OCRnxH)が先に書かれなければなりません。上位ﾊﾞｲﾄI/O位置がCPUによって書かれると、一時ﾚｼﾞｽﾀは書かれた値で更新されます。その後に下位ﾊﾞｲﾄ(OCRnxL)が下位
8ﾋﾞｯﾄを書かれると、(一時ﾚｼﾞｽﾀ内の)上位ﾊﾞｲﾄは(下位ﾊﾞｲﾄ書き込みと)同じｼｽﾃﾑ ｸﾛｯｸ周期でOCRnx緩衝部またはOCRnxﾚｼﾞｽﾀのどちらかに複写されます。
16ﾋﾞｯﾄ ﾚｼﾞｽﾀ ｱｸｾｽ法のより多くの情報については71頁の「16ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」を参照してください。
(訳注) ここでは比較nxﾚｼﾞｽﾀ全体をOCRnx、OCRnxを構成する緩衝部部分をOCRnx緩衝部、実際の比較に使われるﾚｼﾞｽﾀ本体部分をOCRnxﾚｼﾞｽﾀとして記述しています。他の部分での記述でも特に必要がある場合はこの記述方法を適用します。

14.6.1. 強制比較出力
非PWM波形生成動作での比較器の一致出力は強制変更(FOCnx)ﾋﾞｯﾄに1を書くことによって強制(変更)できます。比較一致の強制
は比較割り込み要求ﾌﾗｸﾞ(OCFnx)の設定(1)やﾀｲﾏ/ｶｳﾝﾀの再設定/解除を行いませんが、OCnxﾋﾟﾝは実際の比較一致が起きた場
合と同様に更新されます(COMnx1,0ﾋﾞｯﾄ設定がOCnxﾋﾟﾝの設定(1)、解除(0)、1/0交互のどれかを定義)。

14.6.2. TCNTn書き込みによる比較一致妨害
TCNTnへの全てのCPU書き込みは、例えﾀｲﾏ/ｶｳﾝﾀが停止されていても、次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で起こるどんな比較一致をも妨げます。この特質はﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸが許可されている時に、割り込みを起動することなく、TCNTnと同じ値に初期化されることを
OCRnxに許します。

14.6.3. 比較一致部の使用
どの動作種別でのTCNTn書き込みでも1ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期間、全ての比較一致を妨げるため、ﾀｲﾏ/ｶｳﾝﾀが走行中であるかな
いかに拘らず、何れかの比較出力部を使う場合、TCNTnを変更する時に危険を伴います。TCNTnに書かれた値がOCRnx値と同じ場合、比較一致は失われ(一致が発生せず)、不正な波形生成に終わります。可変TOP値のPWM動作でTOPに等しいTCNTnを書いてはいけません。(行った場合)TOPに対する比較一致は無視され、ｶｳﾝﾀは$FFFFへ(計数を)続けます。同様にｶｳﾝﾀが下降計数のとき、BOTTOMに等しいTCNTn値を書いてはいけません。
OCnxの初期設定はﾎﾟｰﾄ ﾋﾟﾝに対するﾎﾟｰﾄ方向ﾚｼﾞｽﾀを出力に設定する前に行われるべきです。OCnx値を設定する一番簡単な方
法は標準動作で強制変更(FOCnx)ｽﾄﾛｰﾌﾞ ﾋﾞｯﾄを使うことです。波形生成種別間を変更する時であっても、OCnx(内部)ﾚｼﾞｽﾀはその値を保ちます。
比較出力選択(COMnx1,0)ﾋﾞｯﾄが比較値(OCRnx)と共に2重緩衝されないことに気付いてください。COMnx1,0ﾋﾞｯﾄの変更は直ちに有効となります。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]76

14.7. 比較一致出力部
比較出力選択(COMnx1,0)ﾋﾞｯﾄは2つの機能を持ちます。波形生成器は次の比較一致での比較出力(OCnx)状態の定義にCOMnx
1,0ﾋﾞｯﾄを使います。次にCOMnx1,0ﾋﾞｯﾄはOCnxﾋﾟﾝ出力元を制御します。図14-5.はCOMnx1,0ﾋﾞｯﾄ設定によって影響される論理回路の簡単化した図を示します。図のI/Oﾚｼﾞｽﾀ、I/Oﾋﾞｯﾄ、I/Oﾋﾟﾝは赤文字(訳注:原文は太字)で示されます。COMnx1,0ﾋﾞｯﾄによって影響を及ぼされる標準I/Oﾎﾟｰﾄ制御ﾚｼﾞｽﾀ(PORTとDDR)の部分だけが示されます。OCnxの状態を参照するとき、その参照はOCnx
ﾋﾟﾝでなく内部OCnxﾚｼﾞｽﾀに対してです。ｼｽﾃﾑ ﾘｾｯﾄが起こると、OCnxﾚｼﾞｽﾀは0にﾘｾｯﾄされます。
図14-5. 比較一致出力回路図

OCnx
波形生成器

8-bit Data Bus

COMnx1
COMnx0
FOCnx

D

Q

PORT
D

1
0

OCnx

Q

DDR
D

Q

clkI/O
COMnx1,0ﾋﾞｯﾄのどちらかが設定(1)されると、標準I/Oﾎﾟｰﾄ機能は波形生成器からの比較出力(OCnx)によって無効にされます。けれ
どもOCnxﾋﾟﾝの方向(入出力)はﾎﾟｰﾄ ﾋﾟﾝに対するﾎﾟｰﾄ方向ﾚｼﾞｽﾀ(DDR)によって未だ制御されます。OCnxﾋﾟﾝに対するﾎﾟｰﾄ方向ﾚｼﾞ
ｽﾀのﾋﾞｯﾄ(DDR_OCnx)はOCnx値がﾋﾟﾝで見えるのに先立って出力として設定されなければなりません。このﾎﾟｰﾄの交換機能は一般
的に波形生成種別と無関係ですが、いくつかの例外があります。詳細については表14-2.、表14-3.、表14-4.を参照してください。
比較出力ﾋﾟﾝ論理回路の設計は出力が許可される前のOCnx状態の初期化を許します。いくつかのCOMnx1,0ﾋﾞｯﾄ設定が或る種の動作種別に対して予約されることに注意してください。83頁の「16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ1,3用ﾚｼﾞｽﾀ」をご覧ください。
COMnx1,0ﾋﾞｯﾄは捕獲入力部での何の効果もありません。

14.7.1. 比較一致出力選択と波形生成波形生成器は標準、CTC、PWM動作でCOMnx1,0ﾋﾞｯﾄを違うふうに使います。全動作種別に対してCOMnx1,0=00設定は次の比較一致で実行すべきOCnxﾚｼﾞｽﾀの動きがないことを波形生成器へ告げます。非PWM動作での比較出力動作については83頁の表
14-2.を参照してください。高速PWM動作については83頁の表14-3.、位相基準PWMと位相/周波数基準PWMについては83頁の表
14-4.を参照してください。
COMnx1,0ﾋﾞｯﾄの状態変更はこのﾋﾞｯﾄが書かれた後の最初の比較一致で有効になります。非PWM動作について、この動作は強制
変更(FOCnx)ｽﾄﾛｰﾌﾞ ﾋﾞｯﾄを使うことによって直ちに効果を得ることを強制できます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]77

14.8. 動作種別
動作種別、換言するとﾀｲﾏ/ｶｳﾝﾀと比較出力ﾋﾟﾝの動作は波形生成種別(WGMn3～0)ﾋﾞｯﾄと比較出力選択(COMnx1,0)ﾋﾞｯﾄの組み合
わせによって定義されます。比較出力選択ﾋﾞｯﾄは計数順序(動作)に影響を及ぼしませんが、一方波形生成種別ﾋﾞｯﾄは影響を及ぼします。COMnx1,0ﾋﾞｯﾄは生成されたPWM出力が反転されるべきか、されないべきか(反転または非反転PWM)どちらかを制御します。
非PWM動作に対してのCOMnx1,0ﾋﾞｯﾄは比較一致で出力が解除(0)、設定(1)、1/0交互のどれにされるべきかを制御します。77頁の「比較一致出力部」をご覧ください。
ﾀｲﾐﾝｸﾞ情報の詳細については82頁の「ﾀｲﾏ/ｶｳﾝﾀ1,3のﾀｲﾐﾝｸﾞ」を参照してください。

14.8.1. 標準動作
最も単純な動作種別が標準動作(WGMn3～0=0000)です。この動作種別での計数方向は常に上昇(+)で、ｶｳﾝﾀの解除は実行されません。ｶｳﾝﾀは16ﾋﾞｯﾄ最大値(MAX=$FFFF)を通過すると単に範囲を超え、そして$0000(BOTTOM)から再び始めます。通常動作でのﾀｲﾏ/ｶｳﾝﾀ溢れ(TOVn)ﾌﾗｸﾞはTCNTnが$0000になる時と同じﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。この場合のTOVnﾌﾗｸﾞは設定(1)のみで解除(0)されないことを除いて第17ﾋﾞｯﾄのようになります。けれどもTOVnﾌﾗｸﾞを自動的に解除(0)するﾀｲﾏ/ｶｳﾝﾀn溢れ
割り込みと組み合わせたﾀｲﾏ/ｶｳﾝﾀの分解能はｿﾌﾄｳｪｱによって増やせます。標準動作での考慮に特別な場合はなく、新しいｶｳﾝﾀ
値は何時でも書けます。
捕獲入力部は標準動作で使用が容易です。けれども外部の事象間の最大間隔がﾀｲﾏ/ｶｳﾝﾀの分解能(16ﾋﾞｯﾄ長)を越えてはならな
いことに気付いてください。事象間の間隔が長すぎる場合、捕獲部に対して分解能を拡張するために、ﾀｲﾏ/ｶｳﾝﾀ溢れ割り込みまたは前置分周器が使われなければなりません。
比較出力部は与えられた或る時間に割り込みを生成するのに使えます。標準動作で波形を生成するのに比較出力を使うのは、それが大変多くのCPU時間を占有するため推奨されません。

14.8.2. 比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作
比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作(WGMn3～0=0100または1100)ではOCRnAまたはICRnがｶｳﾝﾀの分解能を操作するのに使われます。CTC動作ではｶｳﾝﾀ(TCNTn)値がOCRnA(WGMn3～0=4)またはICRn(WGMn3～0=12)のどちらかと一致する時にｶｳﾝﾀが$0000に解除されます。OCRnAまたはICRnはｶｳﾝﾀに対するTOP値、従って分解能も定義します。この動作種別はより大きい比較一致出力周波数の制御を許します。それは外部の出来事の計数操作も簡単にします。
CTC動作についてのﾀｲﾐﾝｸﾞ図は図14-6.で示されます。ｶｳﾝﾀ(TCNTn)値はOCRnAまたはICRnのどちらかで比較一致が起こるまで増加し、そしてその後にｶｳﾝﾀ(TCNTn)は解除($0000)されます。
図14-6. CTC動作ﾀｲﾐﾝｸﾞ
OCFnAまたはICFn割り込み要求ﾌﾗｸﾞ設定(TOP値割り込み)

TOP
TCNTn

OCnA(交互)
周期

1

2

3

4

5

注: COMnA1,0=01
TOP値を定義するのに使われるﾚｼﾞｽﾀに対してOCFnAまたはICFnのどちらかを使うことにより、ｶｳﾝﾀ値がTOP値に到達する時毎に割り込みが生成できます。割り込みが許可されるなら、割り込み処理ﾙｰﾁﾝはTOP値を更新するのに使えます。けれども前置分周なしまたは低い前置分周値でｶｳﾝﾀが走行している時にBOTTOMと近い値にTOPを変更するのは、CTC動作が2重緩衝機能を持たないために注意して行わなければなりません。OCRnAまたはICRnに書かれた新しい値がTCNTnの現在値よりも低(小さ)い場合、ｶｳﾝﾀは(その回の)比較一致を失います。その後のｶｳﾝﾀは比較一致が起こせるのに先立って、最大値($FFFF)へそして次に$0000から始める計数をしなければならないでしょう。多くの場合でこの特性は好ましくありません。OCRnAが2重緩衝されるので、代替はTOPを定義するのにOCRnAを用いる高速PWM動作(WGMn3～0=1111)を使うことでしょう。
CTC動作で波形出力を生成するため、OCnA出力は比較出力選択(COMnA1,0)ﾋﾞｯﾄを交互動作(=01)に設定することによって各比較一致での論理ﾚﾍﾞﾙ交互切替に設定できます。OCnA値はそのﾋﾟﾝに対するﾃﾞｰﾀ方向が出力(DDR_OCnA=1)に設定されない限り、
ﾎﾟｰﾄ ﾋﾟﾝで見えないでしょう。生成された波形はOCRnAが0($0000)に設定される時に fOCnA= fclk_I/O/2の最大周波数を得ます。生成波形周波数は次式によって定義されます。
fOCnA =

fclk_I/O
2×N×(1＋OCRnA)

変数Nは前置分周数(1,8,64,256,1024)を表します。
標準動作と同じように、ﾀｲﾏ/ｶｳﾝﾀ溢れ割り込み要求(TOVn)ﾌﾗｸﾞはｶｳﾝﾀがMAXから$0000へ計数するのと同じﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]78

14.8.3. 高速PWM動作
高速ﾊﾟﾙｽ幅変調(PWM)動作(WGMn3～0=0101,0110,0111,1110,1111)は高周波数PWM波形生成選択を提供します。高速PWMはそれが単一傾斜(鋸波)動作であることによって他のPWM動作と異なります。ｶｳﾝﾀはBOTTOMからTOPまで計数し、その後BOTTOM
から再び始めます。非反転比較出力動作(COMnx1,0=10)での比較出力(OCnx)はTCNTnとOCRnx間の比較一致で解除(0)され、BOTTOMで設定(1)されます。反転出力動作(COMnx1,0=11)の出力は比較一致で設定(1)され、BOTTOMで解除(0)されます。単一
傾斜動作のため、高速PWM動作の動作周波数は両傾斜(三角波)動作を使う位相基準や位相/周波数基準PWM動作よりも2倍高くできます。この高い周波数は電力調節、整流、D/A変換に対して高速PWM動作を都合よく適合させます。高い周波数は物理的に小さな外部部品(ｺｲﾙやｺﾝﾃﾞﾝｻ)を許し、従ってｼｽﾃﾑ総費用を削減します。
高速PWMのPWM分解能は8,9,10ﾋﾞｯﾄに固定、若しくはOCRnAかICRnのどちらかによって定義できます。許された最小分解能は2ﾋﾞｯﾄ(OCRnAまたはICRnが$0003設定)、最大分解能は16ﾋﾞｯﾄ(OCRnAまたはICRnがMAX設定)です。ﾋﾞｯﾄでのPWM分解能は次式を使うことによって計算できます。
高速PWM動作でのｶｳﾝﾀはｶｳﾝﾀ値が固定値$00FF,$01FF,$03FF(WGMn3～0=0101,0110,0111)、ICRnlog (TOP＋1)
値(WGMn3～0=1110)またはOCRnA値(WGMn3～0=1111)のどれかと一致するまで増加されます。そして R FPWM =log 2
ｶｳﾝﾀは(一致の)次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で解除($0000)されます。高速PWM動作のﾀｲﾐﾝｸﾞ図は図14-7.で示されます。本図はOCRnAかICRnがTOPを定義するのに使われる時の高速PWM動作を示します。TCNTn値はﾀｲﾐﾝｸﾞ図で単一傾斜動作(鋸波)を表す折れ線ｸﾞﾗﾌとして示されます。本図は非反転と反転のPWM出力を含みます。細い赤線はOCRnx値を示し、TCNTn値との交点(接点)がTCNTnとOCRnx間の比較一致を示します(訳注:図補正に伴い本行若干変更)。比較割り込み要求ﾌﾗｸﾞ(OCFnx)は比較一致が起こると設定(1)されます。
ﾀｲﾏ/ｶｳﾝﾀ溢れ割り込み要求(TOVn)ﾌﾗｸﾞはｶｳﾝ 図14-7. 高速PWM動作ﾀｲﾐﾝｸﾞ
ﾀがTOPに到達する時毎に設定(1)されます。加
OCRnx/TOPの更新、TOVnとOCFnAまたは
えて、OCRnAかICRnのどちらかがTOP値を定義
ICFn割り込み要求ﾌﾗｸﾞ設定(TOP値割り込み)するのに使われると、OCFnAまたはICFn割り込
み要求ﾌﾗｸﾞはTOVnが設定(1)されるのと同じﾀｲ
OCRnx
ﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。これらの
TCNTn
割り込みの1つが許可されるなら、その割り込み処理ﾙｰﾁﾝはTOPと比較値を更新するのに使えます。
OCnx(非反転)
TOP値を変更するとき、ﾌﾟﾛｸﾞﾗﾑは新TOP値が全(COMnx1,0=10)ての比較ﾚｼﾞｽﾀ値と等しいか大きいことを保証しOCnx(反転)なければなりません。TOP値が何れかの比較ﾚｼﾞ(COMnx1,0=11)
ｽﾀよりも小さな場合、TCNTnとそのOCRn x間で
周期
1
2
3
4
5 6
7
8
比較一致は決して起きません。固定TOP値を使う場合、どのOCRnxが書かれる時も、未使用ﾋﾞｯﾄが0で隠(に置換)されることに注意してください。
ICRnがTOP値を定義するのに使われる時にICRnを更新する手順はOCRnAの更新と異なります。ICRnは2重緩衝されません。これは前置分周なしまたは低い前置分周値でｶｳﾝﾀが走行している時にICRnが小さな値に変更される場合、書かれた新しいICRn値がTCN
Tnの現在値よりも小さくなる危険を意味します。その後の結果はｶｳﾝﾀが(その回の)TOP値での比較一致を失う事です。その後のｶｳﾝﾀは比較一致が起こせるのに先立って、MAX値($FFFF)へそして次に$0000から始める計数をしなければならないでしょう。しかし、
OCRnAは2重緩衝されます。この特徴は何時でも書かれることをOCRnAのI/O位置に許します。OCRnA I/O位置が書かれると、書かれた値はOCRnA緩衝部に置かれます。OCRnA(比較)ﾚｼﾞｽﾀはその後にTCNTnがTOPと一致した次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期に
OCRnA緩衝部の値で更新されます。この更新はTCNTnの解除($0000)やTOVnの設定(1)と同じﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で行われます。
TOPを定義するのにICRnを使うことは決まったTOP値を使う時に上手くいきます。ICRnを使うことにより、OCnAでのPWM出力を生成するためにOCRnAが自由に使えます。けれども基準PWM周波数が(TOP値を変更することによって)動的に変更される場合、OCRnA
が2重緩衝機能のため、TOPとしてOCRnAを使うことは明らかに良い選択です。

高速PWM動作での比較部はOCnxﾋﾟﾝでのPWM波形の生成を許します。COMnx1,0ﾋﾞｯﾄを'10'に設定することは非反転PWM出力を作成し、反転PWM出力はCOMnx1,0を'11'に設定することで生成できます。83頁の表14-3.をご覧ください。実際のOCnx値はそのﾎﾟｰﾄ ﾋﾟﾝに対するﾃﾞｰﾀ方向が出力(DDR_OCnx=1)として設定される場合にだけ見えるでしょう。PWM波形はTCNTnとOCRnx間の比較一致でOCnx(内部)ﾚｼﾞｽﾀを設定(1)(または解除(0))と、ｶｳﾝﾀが解除($0000、TOPからBOTTOMへ変更)されるﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期でのOCnxﾚｼﾞｽﾀを解除(0)(または設定(1))することによって生成されます。
fclk_I/O
PWM出力周波数は次式によって計算できます。変数Nは前置分周数(1,8,64,256,1024)を表します。 f
OCnxPWM =N×(1＋TOP)
OCRnxの両端値は高速PWM動作でPWM波形出力を生成する時の特別な場合にあたります。OCR
nxがBOTTOM($0000)に等しく設定されると、出力はTOP+1 ﾀｲﾏ/ｶｸﾝﾀ ｸﾛｯｸ周期毎の狭いｽﾊﾟｲｸ(ﾊﾟﾙｽ)になるでしょう。TOPに等しいOCRnx設定は(COMnx1,0ﾋﾞｯﾄによって設定される出力極性に依存して)定常的なLowまたはHigh出力に終わるでしょう。
高速PWM動作で(ﾃﾞｭｰﾃｨ比50%)周波数の波形出力は比較一致毎に論理反転するOCnA設定(COMnA1,0=01)によって達成できます。これはTOP値を定義するのにOCRnAが使われる(WGMn3～0=1111)の場合にだけ適用されます。生成された波形はOCRnAが0($0000)に設定される時に fOCnA= fclk_I/O/2の最大周波数でしょう。この特性は高速PWM動作で比較出力部の2重緩衝機能が許可されることを除いて、CTC動作でのOCnA交互出力(COMnA1,0=01)と同じです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]79

14.8.4. 位相基準PWM動作
位相基準ﾊﾟﾙｽ幅変調(PWM)動作(WGMn3～0=0001,0010,0011,1010,1011)は高分解能で正しい位相のPWM波形生成選択を提供します。位相基準PWM動作は両傾斜(三角波)動作を基準とした位相/周波数基準PWMと似ています。ｶｳﾝﾀはBOTTOM($0000)からTOPへ、そしてその後にTOPからBOTTOMへを繰り返し計数します。非反転比較出力動作(COMnx1,0=10)での比較出力(OCnx)は上昇計数中のTCNTnとOCRnx間の比較一致で解除(0)され、下降計数中の比較一致で設定(1)されます。反転出力動作(COMnx1,0=11)での動作は逆にされます。両傾斜(三角波)動作は単一傾斜(鋸波)動作よりも低い最大動作周波数になります。けれども両傾斜(三角波)PWM動作の対称特性のため、これらの動作種別は電動機制御の応用に好まれます。

位相基準PWM動作のPWM分解能は8,9,10ﾋﾞｯﾄに固定、若しくはOCRnAかICRnのどちらかによって定義できます。許された最小分
解能は2ﾋﾞｯﾄ(OCRnAまたはICRnが$0003設定)、最大分解能は16ﾋﾞｯﾄ(OCRnAまたはICRnがMAX設定)です。ﾋﾞｯﾄでのPWM分解能
は次式を使うことによって計算できます。
log (TOP＋1) 位相基準PWM動作でのｶｳﾝﾀはｶｳﾝﾀ値が固定値$00FF,$01FF,$03FF(WGMn 3～0 =0001,0010,
0011)、ICRn値(WGMn3～0=1010)またはOCRnA値(WGMn3～0=1011)のどれかと一致するまで増加さ
R PCPWM =log 2
れます。ｶｳﾝﾀはTOPに到達したその時に計数方向を変更します。このTCNTn値は1ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯ
ｸ周期間、TOPと等しくなります。位相基準PWM動作のﾀｲﾐﾝｸﾞ図は図14-8.で示されます。この図はOCRnAかICRnがTOPを定義するのに使われる時の位相基準PWM動作を示します。TCNTn値はﾀｲﾐﾝｸﾞ図で両傾斜動作(三角波)を表す折れ線ｸﾞﾗﾌとして示されます。この図は非反転と反転のPWM出力を含みます。細い赤線はOCRnx値を示し、TCNTn値との交点(接点)がTCNTnとOCRnx間の比較一致を示します(訳注:図補正に伴い本行若干変更)。比較割り込み要求ﾌﾗｸﾞ(OCFnx)は比較一致が起こると設定(1)されます。
図14-8. 位相基準PWM動作ﾀｲﾐﾝｸﾞ
OCRnx/TOPの更新、OCFnAまたはICFn
割り込み要求ﾌﾗｸﾞ設定(TOP値割り込み)

TOVn割り込み要求ﾌﾗｸﾞ設定(BOTTOM値割り込み)

TOP
OCRnx
TCNTn
OCnx(非反転)(COMnx1,0=10)
OCnx(反転)(COMnx1,0=11)
周期

1

2

3

4

ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOVn)ﾌﾗｸﾞはｶｳﾝﾀがBOTTOMに到達する時毎に設定(1)されます。OCRnAかICRnのどちらかがTOP値を定義するのに使われるとき、OCFnAまたはICFn割り込み要求ﾌﾗｸﾞはOCRnxﾚｼﾞｽﾀが(TOPに於いて)2重緩衝値で更新されるのと同じﾀｲﾏ/
ｶｳﾝﾀ ｸﾛｯｸ周期によって設定(1)されます。これらの割り込み要求ﾌﾗｸﾞはｶｳﾝﾀがTOPまたはBOTTOM値に到達する毎に割り込みを発生するのに使えます。

TOP値を変更するとき、ﾌﾟﾛｸﾞﾗﾑは新TOP値が全ての比較ﾚｼﾞｽﾀ値と等しいか大きいことを保証しなければなりません。TOP値が何れかの比較ﾚｼﾞｽﾀよりも小さな場合、TCNTnとそのOCRnx間で比較一致は決して起きません。固定TOP値を使う場合、どのOCRnxが書かれる時も、未使用ﾋﾞｯﾄが0で隠(に置換)されることに注意してください。図14-8.で示される第3周期が図解するように、ﾀｲﾏ/ｶｳﾝﾀが位相基準PWM動作で走行中にTOPを積極的に変更するのは、非対称出力で終わることが有り得ます。これに対する理由は
OCRnxﾚｼﾞｽﾀの更新時に見出せます。OCRnx更新はTOPで起きるので、PWM周期はTOPで始まりそして終わります。これは下降傾
斜長が直前のTOP値によって決定され、一方上昇傾斜長は新しいTOP値で決定されることを意味します。これら2つの値(TOP)が違
うとき、その周期の2つの傾斜長は異なるでしょう。この長さの相違が出力での非対称な結果を生じます。
ﾀｲﾏ/ｶｳﾝﾀが走行中にTOP値を変更する場合、位相基準PWM動作の代わりに位相/周波数基準PWM動作を使うことが推奨されます。一定のTOP値を使う時に2つの動作種別間に現実的な違いはありません。
位相基準PWM動作での比較部はOCnxﾋﾟﾝでのPWM波形の生成を許します。COMnx1,0ﾋﾞｯﾄを'10'に設定することは非反転PWM出力を作成し、反転PWM出力はCOMnx1,0を'11'に設定することで生成できます(83頁の表14-4.をご覧ください)。実際のOCnx値はそのﾎﾟｰﾄ ﾋﾟﾝに対するﾃﾞｰﾀ方向が出力(DDR_OCnx=1)として設定される場合にだけ見えるでしょう。PWM波形はｶｳﾝﾀが増加する時のTCNTnとOCRnx間の比較一致でOCnx(内部)ﾚｼﾞｽﾀを設定(1)(または解除(0))と、ｶｳﾝﾀが減少する時のTCNTnとOCRnx間の比較一
致でOCnxﾚｼﾞｽﾀを解除(0)(または設定(1))することによって生成されます。
fclk_I/O
位相基準PWMを使う時の出力に対するPWM周波数は次式によって計算できます。変数Nは前置
fOCnxPCPWM =分周数(1,8,64,256,1024)を表します。
2×N×TOP
OCRnxの両端値は位相基準PWM動作でPWM波形出力を生成する時の特別な場合にあたります。非反転PWM動作ではOCRnxが
BOTTOMに等しく設定されると出力は定常的なLow、TOPに等しく設定されると定常的なHighになるでしょう。反転PWMに対する出力は逆の論理値になります。
TOP値定義にOCRnAが使われ(WGMn3～0=1011)、COMnA1,0=01なら、OCnA出力はﾃﾞｭｰﾃｨ比50%で交互に変化します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]80

14.8.5. 位相/周波数基準PWM動作
位相/周波数基準ﾊﾟﾙｽ幅変調(PWM)動作(WGMn3～0=1000,1001)は高分解能で正しい位相と周波数のPWM波形生成選択を提供します。位相/周波数基準PWM動作は両傾斜(三角波)動作を基準とした位相基準PWMと似ています。ｶｳﾝﾀはBOTTOM($0000)からTOPへ、そしてその後にTOPからBOTTOMへを繰り返し計数します。非反転比較出力動作(COMnx1,0=10)での比較出力(OCnx)は上昇計数中のTCNTnとOCRnx間の比較一致で解除(0)され、下降計数中の比較一致で設定(1)されます。反転出力動作(COMnx1,0=11)での動作は逆にされます。両傾斜(三角波)動作は単一傾斜(鋸波)動作よりも低い最大動作周波数になります。けれども両傾斜(三角波)PWM動作の対称特性のため、これらの動作種別は電動機制御の応用に好まれます。
位相基準と位相/周波数基準PWM動作間の主な違いはOCRnxﾚｼﾞｽﾀがOCRnx緩衝部によって更新される時(訳補:TOPとBOTTO
M)です(図14-8.と図14-9.参照)。
位相/周波数基準PWM動作のPWM分解能はOCRnAかICRnのどちらかで定義できます。許された最小分解能は2ﾋﾞｯﾄ(OCRnAまたはICRnが$0003設定)、最大分解能は16ﾋﾞｯﾄ(OCRnAまたはICRnがMAX設定)です。ﾋﾞｯﾄでのPWM分解能は次式を使うことによって計算できます。
log (TOP＋1) 位相/周波数基準PWM動作でのﾀｲﾏ/ｶｳﾝﾀはﾀｲﾏ/ｶｳﾝﾀ値がICRn値(WGMn3～0=1000)かOCRnAR PFCPWM =値(WGMn3～0=1001)のどちらかと一致するまで増加されます。ｶｳﾝﾀはTOPに到達したその時に計数log 2
方向を変更します。このTCNTn値は1ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期間、TOPと等しくなります。位相/周波数
基準PWM動作のﾀｲﾐﾝｸﾞ図は図14-9.で示されます。この図はOCRnAかICRnがTOPを定義するのに使われる時の位相/周波数基準
PWM動作を示します。TCNTn値はﾀｲﾐﾝｸﾞ図で両傾斜動作(三角波)を表す折れ線ｸﾞﾗﾌとして示されます。この図は非反転と反転の
PWM出力を含みます。細い赤線はOCRnx値を示し、TCNTn値との交点(接点)がTCNTnとOCRnx間の比較一致を示します (訳注:図補正に伴い本行若干変更)。比較割り込み要求ﾌﾗｸﾞ(OCFnx)は比較一致が起こると設定(1)されます。
図14-9. 位相/周波数基準PWM動作ﾀｲﾐﾝｸﾞ
OCFnAまたはICFn割り込み
要求ﾌﾗｸﾞ設定(TOP値割り込み)

OCRnx/TOPの更新、TOVn割り込み
要求ﾌﾗｸﾞ設定(BOTTOM値割り込み)

TOP
OCRnx
TCNTn
OCnx(非反転)(COMnx1,0=10)
OCnx(反転)(COMnx1,0=11)
周期

1

2

3

4

ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOVn)ﾌﾗｸﾞはOCRnxﾚｼﾞｽﾀが(BOTTOMに於いて)2重緩衝値で更新されるのと同じﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。OCRnAかICRnのどちらかがTOP値を定義するのに使われるとき、OCFnAまたはICFn割り込み要求ﾌﾗｸﾞはﾀｲﾏ/ｶｳﾝﾀ
がTOPに到達する時毎に設定(1)されます。これらの割り込み要求ﾌﾗｸﾞはｶｳﾝﾀがTOPまたはBOTTOM値に到達する毎に割り込みを発生するのに使えます。

TOP値を変更するとき、ﾌﾟﾛｸﾞﾗﾑは新TOP値が全ての比較ﾚｼﾞｽﾀ値と等しいか大きいことを保証しなければなりません。TOP値が何れかの比較ﾚｼﾞｽﾀよりも小さな場合、TCNTnとそのOCRnx間で比較一致は決して起きません。
図14-9.が示すように、生成された出力は位相基準PWM動作と異なり、全ての周期で対称です。OCRnxﾚｼﾞｽﾀがBOTTOMで更新されるため、上昇と下降の傾斜長は常に等しくなります。これが対称出力ﾊﾟﾙｽ、従って正しい周波数を与えます。
TOPを定義するのにICRnを使うことは決まったTOP値を使う時に上手くいきます。ICRnを使うことにより、OCnAでのPWM出力を生成するためにOCRnAが自由に使えます。けれども基準PWM周波数が(TOP値を変更することによって)動的に変更される場合、OCRnA
が2重緩衝機能のため、TOPとしてOCRnAを使うことは明らかに良い選択です。
位相/周波数基準PWM動作での比較部はOCnxﾋﾟﾝでのPWM波形の生成を許します。COMnx1,0ﾋﾞｯﾄを'10'に設定することは非反転
PWM出力を作成し、反転PWM出力はCOMnx1,0を'11'に設定することで生成できます(83頁の表14-4.をご覧ください)。実際のOCnx
値はそのﾎﾟｰﾄ ﾋﾟﾝに対するﾃﾞｰﾀ方向が出力(DDR_OCnx=1)として設定される場合にだけ見えるでしょう。PWM波形はｶｳﾝﾀが増加する時のTCNTnとOCRnx間の比較一致でOCnx(内部)ﾚｼﾞｽﾀを設定(1)(または解除(0))と、ｶｳﾝﾀが減少する時のTCNTnとOCRn x間の比較一致でOCnxﾚｼﾞｽﾀを解除(0)(または設定(1))することによって生成されます。
fclk_I/O
位相/周波数基準PWMを使う時の出力に対するPWM周波数は次式によって計算できます。変数
fOCnxPFCPWM =Nは前置分周数(1,8,64,256,1024)を表します。
2×N×TOP
OCRnxの両端値は位相/周波数基準PWM動作でPWM波形出力を生成する時の特別な場合にあたります。非反転PWM動作では
OCRnxがBOTTOMに等しく設定されると出力は定常的なLow、TOPに等しく設定されると定常的なHighになるでしょう。反転PWMに対する出力は逆の論理値になります。
TOP値定義にOCRnAが使われ(WGMn3～0 =1001)、COMnA1,0=01なら、OCnA出力はﾃﾞｭｰﾃｨ比50%で交互に変化します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]81

14.9. ﾀｲﾏ/ｶｳﾝﾀのﾀｲﾐﾝｸﾞ
このﾀｲﾏ/ｶｳﾝﾀは同期設計で、従ってﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkTn)が下図のｸﾛｯｸ許可信号として示されます。この図は割り込みﾌﾗｸﾞが設定(1)される時、そしてOCRnxﾚｼﾞｽﾀがOCRnx緩衝部値で更新される時(2重緩衝を使う動作種別のみ)の情報を含みます。図14-10.はOCFnxの設定についてのﾀｲﾐﾝｸﾞ図を示します。
図14-10. 前置分周なし(1/1)のﾀｲﾏ/ｶｳﾝﾀ、OCFnx設定 ﾀｲﾐﾝｸﾞ

clkI/O
clkTn (clkI/O/1)
TCNT1

OCRnx-1

OCRnx

OCRnx

OCRnx+1

OCRnx+2

OCRnx+1

OCRnx+2

OCRnx値

OCFnx

図14-11.は同じﾀｲﾐﾝｸﾞ ﾃﾞｰﾀを示しますが、前置分周器が許可されています。
図14-11. 前置分周器(fclk_I/O/8)のﾀｲﾏ/ｶｳﾝﾀ、OCFnx設定 ﾀｲﾐﾝｸﾞ

clkI/O
clkTn (clkI/O/8)
TCNT1

OCRnx-1

OCRnx

OCRnx

OCRnx値

OCFnx

図14-12.は各動作種別でのTOP近辺の計数手順を示します。位相/周波数基準PWM動作使用時のOCRnxﾚｼﾞｽﾀはBOTTOMで更新されます。ﾀｲﾐﾝｸﾞ図は同じになりますが、当然TOPはBOTTOMで、TOP-1はBOTTOM+1でなどのように置き換えられます。BOTTOMでTOVnを設定(1)する動作種別についても、同様な名称変更が適用されます。
図14-12. 前置分周なし(1/1)のﾀｲﾏ/ｶｳﾝﾀ、TOP近辺 ﾀｲﾐﾝｸﾞ

clkI/O
clkTn (clkI/O/1)
TCNT1 (CTC,FPWM)

TOP-1

TOP

BOTTOM

BOTTOM+1

TCNT1 (PCPWM,PFCPWM)
TOVn(FPWM)
ICFn(TOP使用時)
OCRnx(TOP更新時)

TOP-1

TOP

TOP-1

TOP-2

旧OCRnx値

新OCRnx値

図14-13.は同じﾀｲﾐﾝｸﾞ ﾃﾞｰﾀを示しますが、前置分周器が許可されています。
図14-13. 前置分周器(fclk_I/O/8)のﾀｲﾏ/ｶｳﾝﾀ、TOP近辺 ﾀｲﾐﾝｸﾞ

clkI/O
clkTn (clkI/O/8)
TCNT1 (CTC,FPWM)

TOP-1

TOP

BOTTOM

BOTTOM+1

TCNT1 (PCPWM,PFCPWM)
TOVn(FPWM)
ICFn(TOP使用時)
OCRnx(TOP更新時)

TOP-1

TOP

TOP-1

TOP-2

旧OCRnx値

新OCRnx値

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]82

14.10. 16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ1,3用ﾚｼﾞｽﾀ14.10.1. TCCR1A - ﾀｲﾏ/ｶｳﾝﾀ1制御ﾚｼﾞｽﾀA (Timer/Counter1 Control Register A)
ﾋﾞｯﾄ
($80)
Read/Write
初期値

7

6

5

4

3

2

1

COM1A1 COM1A0 COM1B1 COM1B0 COM1C1 COM1C0 WGM11
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

0

WGM10

TCCR1A

R/W
0

14.10.2. TCCR3A - ﾀｲﾏ/ｶｳﾝﾀ3制御ﾚｼﾞｽﾀA (Timer/Counter3 Control Register A)
ﾋﾞｯﾄ
($90)
Read/Write
初期値

7

6

5

4

3

2

1

COM3A1 COM3A0 COM3B1 COM3B0 COM3C1 COM3C0 WGM31
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

0

WGM30

TCCR3A

R/W
0● ﾋﾞｯﾄ7,6 - COMnA1,0 : 比較nA出力選択 (Compare Output Mode A bit 1 and 0)● ﾋﾞｯﾄ5,4 - COMnB1,0 : 比較nB出力選択 (Compare Output Mode B bit 1 and 0)● ﾋﾞｯﾄ3,2 - COMnC1,0 : 比較nC出力選択 (Compare Output Mode C bit 1 and 0)

COMnA1,0、COMnB1,0、COMnC1,0は各々OCnA,OCnB,OCnC比較出力ﾋﾟﾝの動作を制御します。COMnA1,0ﾋﾞｯﾄの1つまたは両方が1を書かれると、OCnA出力はそのI/Oﾋﾟﾝの通常ﾎﾟｰﾄ機能を無効にし、そのI/Oﾋﾟﾝに接続されます。COMnB1,0ﾋﾞｯﾄの1つまたは両方が1を書かれると、OCnB出力はそのI/Oﾋﾟﾝの通常ﾎﾟｰﾄ機能を無効にし、そのI/Oﾋﾟﾝに接続されます。COMnC1,0ﾋﾞｯﾄの1つまたは両方が1を書かれると、OCnC出力はそのI/Oﾋﾟﾝの通常ﾎﾟｰﾄ機能を無効にし、そのI/Oﾋﾟﾝに接続されます。けれども出力駆動部を許可するため、OCnA,OCnB,OCnCﾋﾟﾝに対応するﾎﾟｰﾄ方向ﾚｼﾞｽﾀ(DDR)のﾋﾞｯﾄが設定(1)されなければならないことに注意してください。
OCnA,OCnB,OCnCがﾋﾟﾝに接続されるとき、COMnx1,0ﾋﾞｯﾄの機能はWGMn3～0ﾋﾞｯﾄ設定に依存します。表はWGMn3～0ﾋﾞｯﾄが標
準動作またはCTC動作(つまり非PWM)に設定される時のCOMnx1,0ﾋﾞｯﾄ機能を示します。
表14-2. 非PWM動作での比較出力選択 (注: nは1または3、xはA,BまたはC)
COMnx1 COMnx0
意味0
標準ﾎﾟｰﾄ動作 (OCnx切断)0
比較一致でOCnxﾋﾟﾝ ﾄｸﾞﾙ(交互)出力01
1
比較一致でOCnxﾋﾟﾝ Lowﾚﾍﾞﾙ出力0
比較一致でOCnxﾋﾟﾝ Highﾚﾍﾞﾙ出力
1
1
表はWGMn3～0ﾋﾞｯﾄが高速PWM動作に設定される時のCOMnx1,0ﾋﾞｯﾄ機能を示します。
表14-3. 高速PWM動作での比較出力選択 (注: nは1または3、xはA,BまたはC, Xは0または1)
COMnx1 COMnx0
意味0
標準ﾎﾟｰﾄ動作 (OCnx切断)
0
WGMn3～0=111X: 比較一致でOCnAﾋﾟﾝ ﾄｸﾞﾙ(交互)出力、OCnB/OCnC切断(標準ﾎﾟｰﾄ動作)
01
WGMn3～0上記以外 : 標準ﾎﾟｰﾄ動作 (OCnx切断)1
比較一致でLow、BOTTOMでHighをOCnxﾋﾟﾝへ出力 (非反転動作)
0
比較一致でHigh、BOTTOMでLowをOCnxﾋﾟﾝへ出力 (反転動作)
11
注: COMnx1が設定(1)され、OCRnxがTOPと等しい時に特別な状態が起きます。この状態での比較一致は無視されますが、BO
TTOMでの設定(1)または解除(0)は実行されます。より多くの詳細については79頁の「高速PWM動作」をご覧ください。
表はWGMn3～0ﾋﾞｯﾄが位相基準または位相/周波数基準PWM動作に設定される時のCOMnx1,0ﾋﾞｯﾄ機能を示します。
表14-4. 位相基準または位相/周波数基準PWM動作での比較出力選択 (注: nは1または3、xはA,BまたはC, Xは0または1)
COMnx1 COMnx0
意味0
標準ﾎﾟｰﾄ動作 (OCnx切断)
0
WGMn3～0=10X1: 比較一致でOCnAﾋﾟﾝ ﾄｸﾞﾙ(交互)出力、OCnB/OCnC切断(標準ﾎﾟｰﾄ動作)
01
WGMn3～0上記以外 : 標準ﾎﾟｰﾄ動作 (OCnx切断)
10
上昇計数時の比較一致でLow、下降計数時の比較一致でHighをOCnxﾋﾟﾝへ出力
1
上昇計数時の比較一致でHigh、下降計数時の比較一致でLowをOCnxﾋﾟﾝへ出力1
注: COMnx1が設定(1)され、OCRnxがTOPと等しい時に特別な状態が起きます。より多くの詳細については80頁の「位相基準P
WM動作」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]83

● ﾋﾞｯﾄ1,0 - WGMn1,0 : 波形生成種別 (Waveform Generation Mode bit 1 and 0)

ﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀB(TCCRnB)で得られるWGMn3,2ﾋﾞｯﾄと組み合わせたこれらのﾋﾞｯﾄはｶｳﾝﾀの計数順序(方向)、最大計数(TOP)
値供給元、使われるべき波形生成のどの形式かを制御します(下表参照)。ﾀｲﾏ/ｶｳﾝﾀ部によって支援される動作種別は標準動作(ｶｳﾝﾀ)、比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作と3形式のﾊﾟﾙｽ幅変調(PWM)動作です。78頁の「動作種別」をご覧ください。
表14-5. 波形生成種別選択
TOVn
WGMn2 WGMn1 WGMn0
OCRnx
番号 WGMn3
ﾀｲﾏ/ｶｳﾝﾀ動作種別
TOP値
設定時(CTCn) (PWMn1) (PWMn0)
更新時
標準動作
0
即値
MAX
0
0
0
0
$FFFF
8ﾋﾞｯﾄ位相基準PWM動作
1
TOP
0
0
0
1
$00FF
BOTTOM
9ﾋﾞｯﾄ位相基準PWM動作
2
TOP
0
0
1
0
$01FF
BOTTOM
10ﾋﾞｯﾄ位相基準PWM動作
3
TOP
0
0
1
1
$03FF
BOTTOM40001
比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作
OCRnA
即値
MAX
5
0
1
0
1
8ﾋﾞｯﾄ高速PWM動作$00FF BOTTOM
TOP
6
0
1
1
0
9ﾋﾞｯﾄ高速PWM動作$01FF BOTTOM
TOP
7
0
1
1
1
10ﾋﾞｯﾄ高速PWM動作$03FF BOTTOM
TOP
8
1
0
0
0
位相/周波数基準PWM動作
ICRn BOTTOM BOTTOM
9
1
0
0
1
位相/周波数基準PWM動作
OCRnA BOTTOM BOTTOM
10
1
0
1
0
位相基準PWM動作
ICRnTOP
BOTTOM1110
11
位相基準PWM動作
OCRnATOP
BOTTOM121
100
比較一致ﾀｲﾏ/ｶｳﾝﾀ解除(CTC)動作
ICRn
即値
MAX
13
1
1
0
1
(予約)
14
1
1
1
0
高速PWM動作
ICRn BOTTOM
TOP
15
1
1
1
1
高速PWM動作OCRnA BOTTOM
TOP
注: CTCnとPWMn1,0ﾋﾞｯﾄ定義名は旧名です。WGMn2～0定義を使ってください。しかし、これらのﾋﾞｯﾄの機能と位置は旧版のﾀｲﾏ/ｶｳﾝﾀと一致します。

14.10.3. TCCR1B - ﾀｲﾏ/ｶｳﾝﾀ1制御ﾚｼﾞｽﾀB (Timer/Counter1 Control Register B)
ﾋﾞｯﾄ
($81)
Read/Write
初期値

7

6

5

4

3

2

1

0

ICNC1

ICES1

-

WGM13

WGM12

CS12

CS11

CS10

R/W
0

R/W
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

TCCR1B

14.10.4. TCCR3B - ﾀｲﾏ/ｶｳﾝﾀ3制御ﾚｼﾞｽﾀB (Timer/Counter3 Control Register B)
ﾋﾞｯﾄ
($91)
Read/Write
初期値

7

6

5

4

3

2

1

0

ICNC3
R/W
0

ICES3

-

WGM33

WGM32

CS32

CS31

CS30

R/W
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

TCCR3B● ﾋﾞｯﾄ7 - ICNCn : 捕獲起動入力n雑音消去許可 (Input Capture Noise Canceler)

このﾋﾞｯﾄを(1に)設定することが捕獲起動入力雑音消去器を活性(有効)にします。雑音消去器が有効にされると、捕獲起動入力(ICPn)ﾋﾟﾝからの入力が濾波されます。この濾波機能はそれが出力を更新するのに、連続4回等しく評価されたICPnﾋﾟﾝの採取を必要とします。雑音消去器が許可されると、捕獲入力はそれによって4発振器(ｼｽﾃﾑ ｸﾛｯｸ)周期遅らされます。
● ﾋﾞｯﾄ6 - ICESn : 捕獲起動入力n端選択 (Input Capture Edge Select)

このﾋﾞｯﾄは出来事での捕獲を起動するのに使われる捕獲起動入力(ICPn)ﾋﾟﾝのどちらかのｴｯｼﾞを選択します。ICESnﾋﾞｯﾄが0を書かれると起動動作として下降(負)端が使われ、ICESnﾋﾞｯﾄが1を書かれると上昇(正)端が捕獲を起動します。
捕獲がICESn設定に従って起動されると、ｶｳﾝﾀ値が捕獲ﾚｼﾞｽﾀ(ICRn)に複写されます。この出来事は捕獲入力割り込み要求ﾌﾗｸﾞ(ICFn)も設定(1)し、そしてこれは、この割り込みが許可されていれば捕獲入力割り込みを起こすのに使えます。
ICRnがTOP値として使われると(TCCRnAとTCCRnBに配置されたWGMn3～0ﾋﾞｯﾄの記述をご覧ください)、ICPnが切り離され、従って捕獲入力機能は禁止されます。
● ﾋﾞｯﾄ5 - Res : 予約 (Reserved)

このﾋﾞｯﾄは将来の使用に対して予約されています。将来のﾃﾞﾊﾞｲｽとの共通性を保つため、TCCRnBが書かれるとき、このﾋﾞｯﾄは0を書
かれなければなりません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]84

● ﾋﾞｯﾄ4,3 - WGMn3,2 : 波形生成種別 (Waveform Generation Mode bit 3 and 2)

TCCRnAのWGMn1,0ﾋﾞｯﾄ記述をご覧ください。
● ﾋﾞｯﾄ2～0 - CSn2～0 : ｸﾛｯｸ選択n (Clock Select, bit 2,1 and 0)

この3つのｸﾛｯｸ選択ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ(TCNTn)によって使われる
べきｸﾛｯｸ元を選択します。図14-10.と図14-11.をご覧ください。
ﾀｲﾏ/ｶｳﾝﾀnに対して外部ﾋﾟﾝ(ｸﾛｯｸ)動作が使われる場合、例え
Tnﾋﾟﾝが出力として設定されても、Tnﾋﾟﾝの遷移はｶｳﾝﾀをｸﾛｯｸ駆動します。この特性はｿﾌﾄｳｪｱに計数の制御を許します。

表14-6. ﾀｲﾏ/ｶｳﾝﾀn入力ｸﾛｯｸ選択
CSn2 CSn1 CSn0
意味000
停止 (ﾀｲﾏ/ｶｳﾝﾀn動作停止)
0
1
0
clkI/O (前置分周なし)
001
clkI/O/8 (8分周)01
1
clkI/O/64 (64分周)
100
clkI/O/256 (256分周)
1
10
clkI/O/1024 (1024分周)
10
1
Tnﾋﾟﾝの下降端 (外部ｸﾛｯｸ)
1
1
1
Tnﾋﾟﾝの上昇端 (外部ｸﾛｯｸ)14.10.5. TCCR1C - ﾀｲﾏ/ｶｳﾝﾀ1制御ﾚｼﾞｽﾀC (Timer/Counter1 Control Register C)
ﾋﾞｯﾄ
($82)
Read/Write
初期値

7

6

5

4

3

2

1

0

FOC1A

FOC1B

FOC1C

-

-

-

-

-

W
0

W
0

W
0

R
0

R
0

R
0

R
0

R
0

TCCR1C

14.10.6. TCCR3C - ﾀｲﾏ/ｶｳﾝﾀ3制御ﾚｼﾞｽﾀC (Timer/Counter3 Control Register C)
ﾋﾞｯﾄ
($92)
Read/Write
初期値

7

6

5

4

3

2

1

0

FOC3A

-

-

-

-

-

-

-

W
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

TCCR3C● ﾋﾞｯﾄ7 - FOCnA : OCnA強制変更 (Force Output Compare A)● ﾋﾞｯﾄ6 - FOCnB : OCnB強制変更 (Force Output Compare B)● ﾋﾞｯﾄ5 - FOCnC : OCnC強制変更 (Force Output Compare C)

FOCnA/FOCnB/FOCnCﾋﾞｯﾄはWGMn3～0ﾋﾞｯﾄが非PWM動作を指示する時だけ有効です。FOCnA/FOCnB/FOCnCﾋﾞｯﾄに論理1を書くと波形生成部で直ちに比較一致が強制されます。OCnx出力はCOMnx1,0ﾋﾞｯﾄ設定に従って変更されます。FOCnA/FOCnB/FOCnCﾋﾞｯﾄがｽﾄﾛｰﾌﾞとして実行されることに注意してください。それによって強制された比較の効果を決めるのはCOMnx1,0ﾋﾞｯﾄに存在する値です。
FOCnA/FOCnB/FOCnCｽﾄﾛｰﾌﾞは何れの割り込みの生成もTOPとしてOCRnAを使う比較一致ﾀｲﾏ解除(CTC)動作でのﾀｲﾏ/ｶｳﾝﾀの解除($0000)も行いません。
FOCnA/FOCnB/FOCnCﾋﾞｯﾄは常に0として読まれます。
● ﾋﾞｯﾄ4～0 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは将来の使用に対して予約されています。将来のﾃﾞﾊﾞｲｽとの共通性を保つため、TCCRnCが書かれるとき、これらのﾋﾞｯ
ﾄは0を書かれなければなりません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]85

14.10.7. TCNT1H,TCNT1L (TCNT1) - ﾀｲﾏ/ｶｳﾝﾀ1 (Timer/Counter1)
ﾋﾞｯﾄ
($85)
Read/Write
初期値
ﾋﾞｯﾄ
($84)
Read/Write
初期値

15

14

13

12

11

10

9

8

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

(MSB)

TCNT1H

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

10

9

8

TCNT1L

14.10.8. TCNT3H,TCNT3L (TCNT3) - ﾀｲﾏ/ｶｳﾝﾀ3 (Timer/Counter3)
ﾋﾞｯﾄ
($95)
Read/Write
初期値
ﾋﾞｯﾄ
($94)
Read/Write
初期値

15

14

13

12

11

(MSB)

TCNT3H

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

R/W
0
0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

TCNT3L

R/W
0

この2つのﾀｲﾏ/ｶｳﾝﾀ I/O位置(TCNTnHとTCNTnLを合わせたTCNTn)は、読み書き両方についてﾀｲﾏ/ｶｳﾝﾀ部の16ﾋﾞｯﾄ ｶｳﾝﾀに
直接ｱｸｾｽします。CPUがこれらのﾚｼﾞｽﾀをｱｸｾｽする時に上位と下位の両ﾊﾞｲﾄが同時に読み書きされるのを保証するため、このｱｸｾｽは8ﾋﾞｯﾄ上位ﾊﾞｲﾄ一時ﾚｼﾞｽﾀ(TEMP)を使って実行されます。この一時ﾚｼﾞｽﾀは他の全ての16ﾋﾞｯﾄ ﾚｼﾞｽﾀによって共用されます。71
頁の「16ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」をご覧ください。
ｶｳﾝﾀが走行中にｶｳﾝﾀ(TCNTn)を変更することはOCRnxの1つとTCNTn間の比較一致消失の危険を誘発します。
TCNTnへの書き込みは全ての比較部に対して次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸでの比較一致を妨害(除去)します。

14.10.9. OCR1AH,OCR1AL (OCR1A) - ﾀｲﾏ/ｶｳﾝﾀ1 比較Aﾚｼﾞｽﾀ (Timer/Counter1 Output Compare Register A)
ﾋﾞｯﾄ
($89)
Read/Write
初期値
ﾋﾞｯﾄ
($88)
Read/Write
初期値

15

14

13

12

11

10

9

8

(MSB)

OCR1AH

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

R/W
0
0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR1AL

R/W
0

14.10.10. OCR1BH,OCR1BL (OCR1B) - ﾀｲﾏ/ｶｳﾝﾀ1 比較Bﾚｼﾞｽﾀ (Timer/Counter1 Output Compare Register B)
ﾋﾞｯﾄ
($8B)
Read/Write
初期値
ﾋﾞｯﾄ
($8A)
Read/Write
初期値

15

14

13

12

11

10

9

8

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

(MSB)

OCR1BH

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR1BL

R/W
0

14.10.11. OCR1CH,OCR1CL (OCR1C) - ﾀｲﾏ/ｶｳﾝﾀ1 比較Cﾚｼﾞｽﾀ (Timer/Counter1 Output Compare Register C)
ﾋﾞｯﾄ
($8D)
Read/Write
初期値
ﾋﾞｯﾄ
($8C)
Read/Write
初期値

15

14

13

12

11

10

9

8

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

(MSB)

OCR1CH

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR1CL

R/W
0

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]86

14.10.12. OCR3AH,OCR3AL (OCR3A) - ﾀｲﾏ/ｶｳﾝﾀ3 比較Aﾚｼﾞｽﾀ (Timer/Counter3 Output Compare Register A)
ﾋﾞｯﾄ
($99)
Read/Write
初期値
ﾋﾞｯﾄ
($98)
Read/Write
初期値

15

14

13

12

11

10

9

8

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

(MSB)

OCR3AH

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR3AL

R/W
0

14.10.13. OCR3BH,OCR3BL (OCR3B) - ﾀｲﾏ/ｶｳﾝﾀ3 比較Bﾚｼﾞｽﾀ (Timer/Counter3 Output Compare Register B)
ﾋﾞｯﾄ
($9B)
Read/Write
初期値
ﾋﾞｯﾄ
($9A)
Read/Write
初期値

15

14

13

12

11

10

9

8

(MSB)

OCR3BH

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

R/W
0
0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR3BL

R/W
0

14.10.14. OCR3CH,OCR3CL (OCR3C) - ﾀｲﾏ/ｶｳﾝﾀ3 比較Cﾚｼﾞｽﾀ (Timer/Counter3 Output Compare Register C)
ﾋﾞｯﾄ
($9D)
Read/Write
初期値
ﾋﾞｯﾄ
($9C)
Read/Write
初期値

15

14

13

12

11

10

9

8

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

(MSB)

OCR3CH

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR3CL

R/W
0

この比較ﾚｼﾞｽﾀは継続的にｶｳﾝﾀ(TCNTn)値と比較される16ﾋﾞｯﾄ値を含みます。一致は比較一致割り込みやOCnxﾋﾟﾝでの波形出力を生成するのに使えます。
この比較ﾚｼﾞｽﾀは容量が16ﾋﾞｯﾄです。CPUがこれらのﾚｼﾞｽﾀへ書く時に上位と下位の両ﾊﾞｲﾄが同時に書かれるのを保証するため、このｱｸｾｽは8ﾋﾞｯﾄ上位ﾊﾞｲﾄ一時ﾚｼﾞｽﾀ(TEMP)を使って実行されます。この一時ﾚｼﾞｽﾀは他の全ての16ﾋﾞｯﾄ ﾚｼﾞｽﾀによって共用されます。71頁の「16ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]87

14.10.15. ICR1H,ICR1L (ICR1) - ﾀｲﾏ/ｶｳﾝﾀ1 捕獲ﾚｼﾞｽﾀ (Timer/Counter1 Input Capture Register)
ﾋﾞｯﾄ
($87)
Read/Write
初期値
ﾋﾞｯﾄ
($86)
Read/Write
初期値

15

14

13

12

11

10

9

8

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

(MSB)

ICR1H

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

ICR1L

R/W
0

14.10.16. ICR3H,ICR3L (ICR3) - ﾀｲﾏ/ｶｳﾝﾀ3 捕獲ﾚｼﾞｽﾀ (Timer/Counter3 Input Capture Register)
ﾋﾞｯﾄ
($97)
Read/Write
初期値
ﾋﾞｯﾄ
($96)
Read/Write
初期値

15

14

13

12

11

10

9

8

(MSB)

ICR3H

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

R/W
0
0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

ICR3L

R/W
0

この捕獲ﾚｼﾞｽﾀはICPnﾋﾟﾝ(またはﾀｲﾏ/ｶｳﾝﾀ1については任意のｱﾅﾛｸﾞ比較器出力)で出来事が起こる毎にｶｳﾝﾀ(TCNTn)値で更新されます。この捕獲ﾚｼﾞｽﾀはﾀｲﾏ/ｶｳﾝﾀのTOP値を定義するのに使えます。
この捕獲ﾚｼﾞｽﾀは容量が16ﾋﾞｯﾄです。CPUがこれらのﾚｼﾞｽﾀをｱｸｾｽする時に上位と下位の両ﾊﾞｲﾄが同時に読まれるのを保証するため、このｱｸｾｽは8ﾋﾞｯﾄ上位ﾊﾞｲﾄ一時ﾚｼﾞｽﾀ(TEMP)を使って実行されます。この一時ﾚｼﾞｽﾀは他の全ての16ﾋﾞｯﾄ ﾚｼﾞｽﾀによって共用されます。71頁の「16ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」をご覧ください。

14.10.17. TIMSK1 - ﾀｲﾏ/ｶｳﾝﾀ1割り込み許可ﾚｼﾞｽﾀ (Timer/Counter1 Interrupt Mask Register)
ﾋﾞｯﾄ
($6F)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

ICIE1

-

OCIE1COCIE1BOCIE1A

TOIE1

R
0

R
0

R/W
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

TIMSK114.10.18. TIMSK3 - ﾀｲﾏ/ｶｳﾝﾀ3割り込み許可ﾚｼﾞｽﾀ (Timer/Counter3 Interrupt Mask Register)
ﾋﾞｯﾄ
($71)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

ICIE3

-

OCIE3COCIE3B

OCIE3A

TOIE3

R
0

R
0

R/W
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

TIMSK3● ﾋﾞｯﾄ5 - ICIEn : ﾀｲﾏ/ｶｳﾝﾀn捕獲割り込み許可 (Timer/Counter n Input Capture Interrupt Enable)

このﾋﾞｯﾄが1を書かれて、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀn捕獲割り込みが許可されます。ﾀｲﾏ/ｶｳﾝﾀn割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFRn)に配置された捕獲割り込み要求ﾌﾗｸﾞ(ICFn)が設定(1)されると、対応する割り込み
ﾍﾞｸﾀ(36頁の「割り込み」参照)が実行されます。
● ﾋﾞｯﾄ3 - OCIEnC : ﾀｲﾏ/ｶｳﾝﾀn比較C割り込み許可 (Timer/Counter n Output Compare C Match Interrupt Enable)

このﾋﾞｯﾄが1を書かれて、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀn比較C一致割り込みが許可されます。ﾀｲﾏ/ｶｳﾝﾀn割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFRn)に配置された比較nC割り込み要求ﾌﾗｸﾞ(OCFnC)が設定(1)されると、対応する割り込みﾍﾞｸﾀ(36頁の「割り込み」参照)が実行されます。
● ﾋﾞｯﾄ2 - OCIEnB : ﾀｲﾏ/ｶｳﾝﾀn比較B割り込み許可 (Timer/Counter n Output Compare B Match Interrupt Enable)

このﾋﾞｯﾄが1を書かれて、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀn比較B一致割り込みが許可されます。ﾀｲﾏ/ｶｳﾝﾀn割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFRn)に配置された比較nB割り込み要求ﾌﾗｸﾞ(OCFnB)が設定(1)されると、対応する割り込みﾍﾞｸﾀ(36頁の「割り込み」参照)が実行されます。
● ﾋﾞｯﾄ1 - OCIEnA : ﾀｲﾏ/ｶｳﾝﾀn比較A割り込み許可 (Timer/Counter n Output Compare A Match Interrupt Enable)

このﾋﾞｯﾄが1を書かれて、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀn比較A一致割り込みが許可されます。ﾀｲﾏ/ｶｳﾝﾀn割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFRn)に配置された比較nA割り込み要求ﾌﾗｸﾞ(OCFnA)が設定(1)されると、対応する割り込みﾍﾞｸﾀ(36頁の「割り込み」参照)が実行されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]88

● ﾋﾞｯﾄ0 - TOIEn : ﾀｲﾏ/ｶｳﾝﾀn溢れ割り込み許可 (Timer/Counter n Overflow Interrupt Enable)

このﾋﾞｯﾄが1を書かれて、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀn溢れ割り込みが許可されます。ﾀｲﾏ/ｶｳﾝﾀn割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFRn)に配置されたﾀｲﾏ/ｶｳﾝﾀn溢れ割り込み要求ﾌﾗｸﾞ(TOVn)が設定(1)されると、対応する割り込みﾍﾞｸﾀ(36頁の「割り込み」参照)が実行されます。

14.10.19. TIFR1 - ﾀｲﾏ/ｶｳﾝﾀ1割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ (Timer/Counter1 Interrupt Flag Register)ﾋﾞｯﾄ$16 ($36)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

ICF1

-

OCF1C

OCF1B

OCF1A

TOV1

R
0

R
0

R/W
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

TIFR1

14.10.20. TIFR3 - ﾀｲﾏ/ｶｳﾝﾀ3割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ (Timer/Counter3 Interrupt Flag Register)ﾋﾞｯﾄ$18 ($38)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

ICF3

-

OCF3C

OCF3B

OCF3A

TOV3

R
0

R
0

R/W
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

TIFR3

● ﾋﾞｯﾄ5 - ICFn : ﾀｲﾏ/ｶｳﾝﾀn捕獲割り込み要求ﾌﾗｸﾞ (Timer/Conter n, Input Capture Flag)

ICPnﾋﾟﾝに捕獲の事象が起こると、このﾌﾗｸﾞが設定(1)されます。捕獲ﾚｼﾞｽﾀ(ICRn)がWGMn3～0によってTOP値として設定されると、
ICFnﾌﾗｸﾞはｶｳﾝﾀがTOP値に到達する時に設定(1)されます。
捕獲割り込みﾍﾞｸﾀが実行されると、ICFnは自動的に解除(0)されます。代わりにこのﾋﾞｯﾄ位置へ論理1を書くことによってもICFnは解除(0)できます。
● ﾋﾞｯﾄ3 - OCFnC : ﾀｲﾏ/ｶｳﾝﾀn比較C割り込み要求ﾌﾗｸﾞ (Timer/Conter n, Output Compare C Match Flag)

このﾌﾗｸﾞはｶｳﾝﾀ(TCNTn)値が比較Cﾚｼﾞｽﾀ(OCRnC)と一致した後(次)のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。
強制的な比較出力(FOCnC)ｽﾄﾛｰﾌﾞがOCFnCﾌﾗｸﾞを設定(1)しないことに注意してください。
比較C一致割り込みﾍﾞｸﾀが実行されると、OCFnCは自動的に解除(0)されます。代わりにこのﾋﾞｯﾄ位置へ論理1を書くことによっても
OCFnCは解除(0)できます。
● ﾋﾞｯﾄ2 - OCFnB : ﾀｲﾏ/ｶｳﾝﾀn比較B割り込み要求ﾌﾗｸﾞ (Timer/Conter n, Output Compare B Match Flag)

このﾌﾗｸﾞはｶｳﾝﾀ(TCNTn)値が比較Bﾚｼﾞｽﾀ(OCRnB)と一致した後(次)のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。
強制的な比較出力(FOCnB)ｽﾄﾛｰﾌﾞがOCFnBﾌﾗｸﾞを設定(1)しないことに注意してください。
比較B一致割り込みﾍﾞｸﾀが実行されると、OCFnBは自動的に解除(0)されます。代わりにこのﾋﾞｯﾄ位置へ論理1を書くことによっても
OCFnBは解除(0)できます。
● ﾋﾞｯﾄ1 - OCFnA : ﾀｲﾏ/ｶｳﾝﾀn比較A割り込み要求ﾌﾗｸﾞ (Timer/Conter n, Output Compare A Match Flag)

このﾌﾗｸﾞはｶｳﾝﾀ(TCNTn)値が比較Aﾚｼﾞｽﾀ(OCRnA)と一致した後(次)のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。
強制的な比較出力(FOCnA)ｽﾄﾛｰﾌﾞがOCFnAﾌﾗｸﾞを設定(1)しないことに注意してください。
比較A一致割り込みﾍﾞｸﾀが実行されると、OCFnAは自動的に解除(0)されます。代わりにこのﾋﾞｯﾄ位置へ論理1を書くことによっても
OCFnAは解除(0)できます。
● ﾋﾞｯﾄ0 - TOVn : ﾀｲﾏ/ｶｳﾝﾀn溢れ割り込み要求ﾌﾗｸﾞ (Timer/Counter n Overflow Flag)

このﾌﾗｸﾞの設定(1)はWGMn3～0ﾋﾞｯﾄ設定に依存します。標準またはCTC動作でのTOVnﾌﾗｸﾞはﾀｲﾏ/ｶｳﾝﾀn溢れ時に設定(1)されます。他のWGMn3～0ﾋﾞｯﾄ設定を使う時のTOVnﾌﾗｸﾞ動作については84頁の表14-5.を参照してください。
ﾀｲﾏ/ｶｳﾝﾀn溢れ割り込みﾍﾞｸﾀが実行されると、TOVnは自動的に解除(0)されます。代わりにこのﾋﾞｯﾄ位置へ論理1を書くことによってもTOVnは解除(0)できます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]89

15. 10ﾋﾞｯﾄ高速ﾀｲﾏ/ｶｳﾝﾀ4
15.1. 特徴
・ 最大10ﾋﾞｯﾄ精度・ 3つの独立した比較出力部
・ 比較一致でのﾀｲﾏ/ｶｳﾝﾀ解除 (自動再設定)
・ 不具合なしで正しい位相と周波数のﾊﾟﾙｽ幅変調器 (PWM)
・ 増強されたPWM動作: 出力周波数への影響なしの
1つの任意付加精度ﾋﾞｯﾄ

・ 可変PWM周期
・ 各PWMﾁｬﾈﾙ用の独立した沈黙時間生成器
・ PWMﾚｼﾞｽﾀの同期更新
・ 5つの独立した割り込み (TOV4,OCF4A,OCF4B,OCF4D,FPF4)
・ 高速非同期と同期のｸﾛｯｸ動作
・ 独立した前置分周器部

15.2. 概要
ﾀｲﾏ/ｶｳﾝﾀ4は3つの独立した比較出力部とPWM支援付きの汎用高速ﾀｲﾏ/ｶｳﾝﾀ部です。
ﾀｲﾏ/ｶｳﾝﾀ4は低前置分周(使用)機会での高分解能及び高精度の使用が特徴です。64MHzまでのｸﾛｯｸ速度を使う正確で高速な3つのPWMも支援できます。PWM動作でのﾀｲﾏ/ｶｳﾝﾀ4と比較ﾚｼﾞｽﾀは重複しない反転と非反転出力の3つの自立型PWMとして扱います。増強されたPWM動作は通常動作と同じ周波数を保つ一方で、もう1つの精度ﾋﾞｯﾄを得ることを許します(増強動作での8ﾋﾞｯﾄ
PWM精度は通常動作での7ﾋﾞｯﾄ PWM精度と同じ周波数を出力します)。同様に高前置分周(使用)機会は低速な目的やまれに動く
正確なﾀｲﾐﾝｸﾞの目的についてこの単位部を有用にします。固定化機能はPWMﾚｼﾞｽﾀの同時更新を使用者に許します。
ﾀｲﾏ/ｶｳﾝﾀ4の簡単化した構成図は図15-1.で示されます。I/Oﾋﾟﾝの実際の配置については2頁の「ﾋﾟﾝ配置」を参照してください。ﾃﾞﾊﾞｲｽ仕様のI/Oﾚｼﾞｽﾀとﾋﾞｯﾄ位置は106頁の「ﾀｲﾏ/ｶｳﾝﾀ4用ﾚｼﾞｽﾀ」で一覧されます。
29頁での「PRR1 - 電力削減ﾚｼﾞｽﾀ1」のPRTIM4ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ4部を許可するために0を書かれなければなりません(訳注:共通性から本行追加)。
図15-1. ﾀｲﾏ/ｶｳﾝﾀ4構成図
ﾀｲﾏ/ｶｳﾝﾀ4比較D割り込み
ﾀｲﾏ/ｶｳﾝﾀ4比較A割り込み
ﾀｲﾏ/ｶｳﾝﾀ4比較B割り込み
ﾀｲﾏ/ｶｳﾝﾀ4溢れ割り込み

OC4A OC4A

OC4B OC4B

OC4D OC4D

ﾀｲﾏ/ｶｳﾝﾀ4
障害保護割り込み

沈黙時間生成器 沈黙時間生成器 沈黙時間生成器
CCW4A
CCW4B

T/C4割り込み
要求ﾌﾗｸﾞ
ﾚｼﾞｽﾀ (TIFR4)

T/C4制御ﾚｼﾞｽﾀA(TCCR4A)

T/C4制御ﾚｼﾞｽﾀB(TCCR4B)

T/C4制御ﾚｼﾞｽﾀC(TCCR4C)

T/C4制御ﾚｼﾞｽﾀD(TCCR4D)

COM4A1
COM4A0COM4B1COM4B0
FOC4A
FOC4B
PWM4A
PWM4B
PWM4X
PSR4
DTPS1
DTPS0
CS43
CS42
CS41
CS40
COM4A1S
COM4A0S
COM4B1S
COM4B0S
COM4D1
COM4D0
FOC4D
PWM4D
FPIE4
FPEN4
FPNC4
FPES4
FPAC4
FPF4
WGM41
WGM40

T/C4割り込み
許可ﾚｼﾞｽﾀ(TIMSK4)

TOV4

OCF4D
OCF4A
OCF4B

TOIE4

OCIE4DOCIE4A
OCIE4B

CCW4D

CK
PCK

ﾀｲﾏ/ｶｳﾝﾀ4 制御回路

10ﾋﾞｯﾄ比較器

10ﾋﾞｯﾄ比較器

10ﾋﾞｯﾄ比較器

10ﾋﾞｯﾄ比較器

OC4OE5
OC4OE4OC4OE3
OC4OE2
OC4OE1
OC4OE0

ﾀｲﾏ/ｶｳﾝﾀ4(TCNT4) R

計数
ｸﾛｯｸ
解除
方向

10ﾋﾞｯﾄ比較A
ﾚｼﾞｽﾀ

10ﾋﾞｯﾄ比較B
ﾚｼﾞｽﾀ

10ﾋﾞｯﾄ比較C
ﾚｼﾞｽﾀ

10ﾋﾞｯﾄ比較D
ﾚｼﾞｽﾀ

T/C4制御ﾚｼﾞｽﾀE(TCCR4E)

8ﾋﾞｯﾄ T/C4
比較Aﾚｼﾞｽﾀ
(OCR4A)

8ﾋﾞｯﾄ T/C4
比較Bﾚｼﾞｽﾀ
(OCR4B)

8ﾋﾞｯﾄ T/C4
比較Cﾚｼﾞｽﾀ
(OCR4C)

8ﾋﾞｯﾄ T/C4
比較Dﾚｼﾞｽﾀ
(OCR4D)

2(+1)ﾋﾞｯﾄ T/C4
上位ﾊﾞｲﾄ ﾚｼﾞｽﾀ(TC4H)

8-bit Data Bus

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]90

15.2.1. 速度
ﾀｲﾏ/ｶｳﾝﾀ4の最高速は64MHzです。けれども4V以下の供給電圧が使われる場合、ﾀｲﾏ/ｶｳﾝﾀ4が低電圧状態で充分速く動作しな
いため、入力周波数を下げることが推奨されます。

15.2.2. 精度
ﾀｲﾏ/ｶｳﾝﾀ4は8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀとして代替使用できる10ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ部です。ﾀｲﾏ/ｶｳﾝﾀ4 ﾚｼﾞｽﾀは基本的に8ﾋﾞｯﾄ ﾚｼﾞｽﾀです
が、10ﾋﾞｯﾄ精度が使われる場合に8ﾋﾞｯﾄ ﾃﾞｰﾀ ﾊﾞｽ経由でAVR CPUによって10ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ4の上位2ﾋﾞｯﾄをｱｸｾｽするための共通
一時緩衝部として使える、2ﾋﾞｯﾄ上位ﾊﾞｲﾄ(TC4H)ﾚｼﾞｽﾀが上位にあります。然るに、この10ﾋﾞｯﾄ ﾚｼﾞｽﾀの上位2ﾋﾞｯﾄが0を書かれるな
ら、ﾀｲﾏ/ｶｳﾝﾀ4は8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀとして働きます。何れかの8ﾋﾞｯﾄ ﾚｼﾞｽﾀの下位ﾊﾞｲﾄ読み込み時、上位2ﾋﾞｯﾄがTC4Hﾚｼﾞｽﾀへ書かれ、何れかの8ﾋﾞｯﾄ ﾚｼﾞｽﾀの下位ﾊﾞｲﾄ書き込み時、上位2ﾋﾞｯﾄがTC4Hﾚｼﾞｽﾀから書かれます。8ﾋﾞｯﾄ ﾊﾞｽ経由で10ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ値
をｱｸｾｽする時は特別な手順に従わなければなりません。これらの手順は104頁の「10ﾋﾞｯﾄ ﾚｼﾞｽﾀ ｱｸｾｽ」項で記述されます。
増強PWM動作は出力周波数が通常動作と同じに留まる一方、各比較A/B/Dﾚｼﾞｽﾀに分解能ﾋﾞｯﾄ追加を可能にします。これはTC4Hﾚｼﾞｽﾀが11ﾋﾞｯﾄ増強PWM動作でのMSBとなる、もう1ﾋﾞｯﾄを含むことを意味します。この機能についての詳細とその使用法に関しては96頁の「増強された比較/PWM動作」項をご覧ください。

15.2.3. 関係ﾚｼﾞｽﾀ
ﾀｲﾏ/ｶｳﾝﾀ4(TCNT4)と比較ﾚｼﾞｽﾀ(OCR4A,OCR4B,OCR4C,OCR4D)はTCNT4内容と比較されるべきﾃﾞｰﾀ元として使われる8ﾋﾞｯﾄ ﾚ
ｼﾞｽﾀです。OCR4A,OCR4B,OCR4DはOC4A,OC4B,OC4Dﾋﾟﾝの動作を決め、それらは比較一致割り込みも生成できます。OCR4C
はﾀｲﾏ/ｶｳﾝﾀ4のTOP値、換言すると比較一致での解除値を保持します。ﾀｲﾏ/ｶｳﾝﾀ4上位ﾊﾞｲﾄ(TC4H)ﾚｼﾞｽﾀは10ﾋﾞｯﾄ精度が使われる場合に、ﾀｲﾏ/ｶｳﾝﾀ4 ﾚｼﾞｽﾀの上位ﾋﾞｯﾄへのｱｸｾｽに共通一時緩衝部として使われる2(+1)ﾋﾞｯﾄ ﾚｼﾞｽﾀです。
割り込み要求(TOV4,OCF4A,OCF4B,OCF4Dと障害保護のFPF4)信号はﾀｲﾏ/ｶｳﾝﾀ4割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFR4)とﾀｲﾏ/ｶｳﾝ
ﾀ4制御ﾚｼﾞｽﾀD(TCCR4D)で見えます。この割り込みはﾀｲﾏ/ｶｳﾝﾀ4割り込み許可ﾚｼﾞｽﾀ(TIMSK4)とTCCR4Dの障害保護割り込許可(FPIE4)ﾋﾞｯﾄとで個別に遮蔽(許可/禁止)されます。
制御信号はﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀ、TCCR4A,TCCR4B,TCCR4C,TCCR4D,TCCR4Eで見つかります。

15.2.4. 同期化
図15-2. ﾀｲﾏ/ｶｳﾝﾀ4同期化ﾚｼﾞｽﾀ構成図

OCR4A
OCR4B
OCR4C
OCR4D
TCCR4A
TCCR4B
TCCR4CTCCR4D

入力同期化
ﾚｼﾞｽﾀ
OCR4A_SI
OCR4B_SIOCR4C_SIOCR4D_SI
TCCR4A_SI
TCCR4B_SI
TCCR4C_SI
TCCR4D_SI

TCNT4
TC4H

TCNT4_SI
TC4H_SI

OCF4B_SO

OCF4A
OCF4B
OCF4D
TOV4

OCF4A_SI
OCF4B_SIOCF4D_SI
TOV4_SI

OCF4D_SO

I/Oﾚｼﾞｽﾀ

8-bit Data Bus

同期ｸﾛｯｸ動作でのﾀｲﾏ/ｶｳﾝﾀ4と前置分周器は前置分周器が非同期動作で高速64MHzのPCKｸﾛｯｸ
動作をする一方、どのｸﾛｯｸ元からもCPUの走行(動作)を許します。これはCPUｸﾛｯｸ範囲と高速周辺ｸﾛｯ
ｸ範囲間の境界同期化があるので可能です。図15-2.はﾀｲﾏ/ｶｳﾝﾀ4
同期化ﾚｼﾞｽﾀ構成図を示し、ﾚｼﾞｽﾀ間の遅延を記載します。全てのｸﾛｯ
ｸ開閉の詳細はこの図で示されません。
ﾀｲﾏ/ｶｳﾝﾀ4 ﾚｼﾞｽﾀ値は計数動作に影響を及ぼす前に入力同期化遅延を引き起こす内部同期化ﾚｼﾞｽﾀを通ります。TCCR4A,TCCR4B,TC
CR4C,TCCR4D,OCR4A,OCR4B,O
CR4C,OCR4Dのﾚｼﾞｽﾀはﾚｼﾞｽﾀ書
き込み後に正しく読み戻せます。読
み戻し値はﾀｲﾏ/ｶｳﾝﾀ4(TCNT4)、
ﾀｲﾏ/ｶｳﾝﾀ4上位ﾊﾞｲﾄ(TC4H)ﾚｼﾞｽ
ﾀとﾌﾗｸﾞ(TOV4,OCF4A,OCF4B,O
CF4D)に関して入力と出力の同期化のために遅延されます。
非同期ﾀｲﾏ/ｶｳﾝﾀ4の同期化機構
はｼｽﾃﾑ ｸﾛｯｸがHighの時に最低2
つのPCK端を必要とするため、ｼｽﾃ
ﾑ ｸﾛｯｸ周波数はPCK周波数の1/2よりも低くなければならなりません。
ｼｽﾃﾑ ｸﾛｯｸ周波数が高すぎる場合にﾃﾞｰﾀまたは制御値を失う危険があります。

ﾀｲﾏ/ｶｳﾝﾀ4

出力同期化
ﾚｼﾞｽﾀ
TCNT4_SO

TCNT4
TC4H

TC4H_SO

OCF4A_SO

OCF4A

TCNT4

TOV4_SO

OCF4B
OCF4D
TOV4

PCKE
CK

S
A

PCK
同期動作
非同期動作

1/2CK遅延～1/2CK
遅延

S
A
1CK遅延
1PCK
遅延

1/2CK遅延
1PCK
遅延

1/2CK遅延～1CK
遅延ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]91

15.2.5. 定義
本項でのﾚｼﾞｽﾀとﾋﾞｯﾄ参照の多くは一般形で書かれます。小文字の'n'はﾀｲﾏ/ｶｳﾝﾀ番号、この場合は4で置き換えます。小文字のxは比較出力部のﾁｬﾈﾙ名を表し、この場合はA,B,CまたはDです。然しながらﾌﾟﾛ
ｸﾞﾗﾑでﾚｼﾞｽﾀまたはﾋﾞｯﾄ定義に使う時は正確な形式が使われなければなりません(例えばﾀｲﾏ/ｶｳﾝﾀ4のｶｳﾝﾀ値のｱｸｾｽに対してのTCNT4のように)。
表の定義は本資料を通して広範囲に渡って使われます。

表15-1. 用語定義
用語
意味
BOTTOM ﾀｲﾏ/ｶｳﾝﾀが$000に到達した時。
ﾀｲﾏ/ｶｳﾝﾀが$3FF(1023)に到達した時。
MAX
ﾀｲﾏ/ｶｳﾝﾀが計数中に最高値と等しくなるTOP
時の(OCR1Cに格納された)TOP値。TOP
はﾘｾｯﾄ後の既定として値$FFを持ちます。

15.3. 計数器部
ﾀｲﾏ/ｶｳﾝﾀ4の主な部分は設定可能な双方向ｶｳﾝﾀ部です。図15-3.は、このｶｳﾝﾀとその周辺環境の構成図を示します。
図15-3. ｶｳﾝﾀ部構成図
8-bit Data Bus

TOVn (割り込み要求)

clkTn
TCNT4
(ﾀｲﾏ/ｶｳﾝﾀ)

countdirection
clear

制御回路

BOTTOM

信号説明(内部信号)

ﾀｲﾏ/ｶｳﾝﾀ4計数許可(前置分周器から)
PLLTM1,0
PCK
CK

TOP

count
direction
clear

TCNT4を1つ進めるまたは戻す信号。
進行方向(上昇または下降)選択信号。
TCNT4のﾘｾｯﾄ($000設定)信号。
clkTn
以降でclkT4として参照されるﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ信号。
TOP
TCNT4が最大値に到達したことを示す信号。
BOTTOM TCNT4が最小値($000)に到達したことを示す信号。

使用した動作種別に依存してｶｳﾝﾀは各ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkT4)で解除($000)、増加(+1)、または減少(-1)されます。ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkT4)はｸﾛｯｸ選択(CS43～0)ﾋﾞｯﾄと高速ﾀｲﾏ用PLL後置分周器(PLLTM1,0)ﾋﾞｯﾄを使って同期ｸﾛｯｸまたは非同期PLLｸﾛｯｸから生成されます。ｸﾛｯｸ元が選択されない(CS43～0=0000)時にﾀｲﾏ/ｶｳﾝﾀは停止されます。けれどもTCNT4値はﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkT4)が存在するしないに拘らず、CPUによってｱｸｾｽできます。CPU書き込みは全てのｶｳﾝﾀ解除や計数動作を無視します(上位優先権を持ちます)。
計数順序(方法)はﾀｲﾏ/ｶｳﾝﾀ制御ﾚｼﾞｽﾀ(TCCR4A,TCCR4C,TCCR4D)に配置された波形生成種別(WGM41,0)ﾋﾞｯﾄとﾊﾟﾙｽ幅変調x
許可(PWM4x)ﾋﾞｯﾄの設定によって決定されます。進化した計数順序と波形生成についてより多くの詳細に関しては97頁の「動作種別」をご覧ください。
ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV4)ﾌﾗｸﾞはWGM41,0とPWM4xﾋﾞｯﾄによって選択された動作種別に従って設定(=1)されます。この溢れﾌﾗｸﾞはCPU割り込み発生に使えます。

15.3.1. 非同期動作に対するﾀｲﾏ/ｶｳﾝﾀ4の初期化
ﾀｲﾏ/ｶｳﾝﾀ4を非同期動作へ変更するには以下の手順に従ってください。
1. PLLを許可してください。
2. PLLの安定のために100µs待機してください。
3. PLOCKﾋﾞｯﾄが設定(1)されるまでﾎﾟｰﾘﾝｸﾞしてください。
4. 非同期動作を許可するためにPLL周波数制御(PLLFRQ)ﾚｼﾞｽﾀで高速ﾀｲﾏ用後置分周器選択(PLLTM1,0)ﾋﾞｯﾄを(00以外の値に)設定してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]92

15.4. 比較出力部
この比較器はTCNT4と比較ﾚｼﾞｽﾀ(OCR4A,OCR4B,OCR4CとOCR4D)を継続的に比較します。TCNT4が比較ﾚｼﾞｽﾀと等しければ比較器は一致を指示します。一致は次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で比較割り込み要求ﾌﾗｸﾞ(OCF4A,OCF4BまたはOCF4D)を設定(1)します。対応する割り込みが許可(I=1,OCIE4x=1)されているなら、その比較割り込み要求ﾌﾗｸﾞは比較割り込みを発生します。比較割り込み要求ﾌﾗｸﾞは割り込みが実行されると、自動的に解除(0)されます。代わりにこのﾌﾗｸﾞはこのI/Oﾋﾞｯﾄ位置に論理1を書くことによってｿﾌﾄｳｪｱでも解除(0)できます。波形生成器は波形生成種別(WGM41,0)ﾋﾞｯﾄとPWMx許可(PWM4x)ﾋﾞｯﾄによって設定された動作種別に従った出力を生成するのにこの一致信号を使います。TOPとBOTTOM信号は動作種別(97頁の「動作種別」参照)のいくつかで両端値の特別な場合を扱うために波形生成器によって使われます。
図15-4.は比較出力部の構成図を示します。
図15-4. 比較出力部構成図
8-bit Data Bus

図15-5. 同期/非同期OCR4xの効果
OCRnx

TCnH

10ﾋﾞｯﾄ OCRnx

10ﾋﾞｯﾄ TCNTn= (10ﾋﾞｯﾄ比較器)
TOP
BOTTOM
FOCnx

波形生成器

比較ﾚｼﾞｽﾀ 比較ﾚｼﾞｽ
書き込み ﾀ値更新

TCNTn

OCFnx (割り込み要求)
PWMnx
WGMn1,0COMnx1,0

OCWnx

比較ﾚｼﾞｽﾀ値
ﾀｲﾏ/ｶｳﾝﾀn値
同期OCRnx
OCnx PWM出力比較ﾚｼﾞｽﾀ値
ﾀｲﾏ/ｶｳﾝﾀn値
非同期OCRnx
OCnx PWM出力不具合

OCR4xはﾊﾟﾙｽ幅変調(PWM)のどれかを使う時に2重緩衝化されます。標準動作については2重緩衝動作が禁止されます。2重緩衝
動作は計数の流れのTOPまたはBOTTOMのどちらかに対してOCR4xの更新を同期化します。この同期化は奇数長や非対称PWM
ﾊﾟﾙｽの発生を防ぎ、それによって不具合なしの出力を作成します。例については図15-5.をご覧ください。書き込みと更新動作の間の時間中、OCR4A,OCR4B,OCR4C,OCR4Dからの読み込みは一時位置の内容を読みます。これは最も最近書かれた値が常にOCR4A,OCR4B,OPCR4C,OCR4Dの読み出しであることを意味します。

15.4.1. 強制比較出力
非PWM波形生成動作での比較器の一致出力は強制変更(FOC4x)ﾋﾞｯﾄに1を書くことによって強制(変更)できます。比較一致の強制
は比較割り込み要求ﾌﾗｸﾞ(OCF4x)の設定(1)やﾀｲﾏ/ｶｳﾝﾀの再設定/解除を行いませんが、波形出力(OCW4x)は実際の比較一致が起きた場合と同様に更新されます(COM4x1,0ﾋﾞｯﾄ設定が波形出力(OCW4x)の設定(1)、解除(0)、1/0交互のどれかを定義)。

15.4.2. TCNT4書き込みによる比較一致妨害
TCNT4への全てのCPU書き込みは、例えﾀｲﾏ/ｶｳﾝﾀが停止されていても、次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で起こるどんな比較一致をも妨げます。この特質はﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸが許可されている時に割り込みを起動することなしにTCNT4と同じ値に初期化されるのを
OCR4xに許します。

15.4.3. 比較一致部の使用
どの動作種別でのTCNT4書き込みでも、1ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期間、全ての比較一致を妨げるので、ﾀｲﾏ/ｶｳﾝﾀが走行中であるかな
いかに拘らず、比較出力部を使う場合、TCNT4を変更する時に危険を伴います。TCNT4に書かれた値がOCR4x値と同じ場合に、比較一致は失われ(一致が発生せず)、不正な波形生成に終わります。同様にﾀｲﾏ/ｶｳﾝﾀが下降計数の時はBOTTOMに等しいTCNT
4値を書いてはいけません。
波形出力(OCW4x)の初期設定はﾎﾟｰﾄ ﾋﾟﾝに対するﾎﾟｰﾄ方向ﾚｼﾞｽﾀを出力に設定する前に行われるべきです。OCW4x値を設定する一番簡単な方法は標準動作で強制変更(FOC4x)ｽﾄﾛｰﾌﾞ ﾋﾞｯﾄを使うことです。波形生成動作種別間を変更する時でも、OC4x(内部)ﾚｼﾞｽﾀはその値を保ちます。
比較出力選択(COM4x1,0)ﾋﾞｯﾄが比較値(OCR4x)と共に2重緩衝されないことに気付いてください。COM4x1,0ﾋﾞｯﾄの変更は直ちに有効となります。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]93

15.5. 沈黙時間生成器 (Dead Time Generator)
沈黙時間生成器は外部電力制御ｽｨｯﾁの安全な駆動を可能とするためにﾀｲﾏ/ｶｳﾝﾀ4のPWM出力対に対して提供されます。この沈黙時間生成器はPWM動作が許可され、比較出力選択(COM4x1,0)ﾋﾞｯﾄが'01'に設定される時のﾀｲﾏ/ｶｳﾝﾀ4相互補完出力対(OC4xとOC4x)に対して沈黙時間(非重複時間)の挿入に使える独立部です。作業の分担は次のとおりです。波形生成器が波形出力(OCW4x)を生成し、沈黙時間生成器がこの波形出力から非重複PWM出力を生成します。各PWM出力に対して1つで、3つの沈黙時間生成器が提供されます。非重複時間は調整可能で、PWM出力とその補完出力は独立して調整でき、両PWM出力に対して無関係です。
図15-6. ﾀｲﾏ/ｶｳﾝﾀ1と沈黙時間生成器
TOP
BOTTOM
FOCn

波形生成器

OCWnx

OCnx
沈黙時間生成器
OCnx

PWMnx WGMn1,0 COMnx
DTPSn
CKまたはPCKｸﾛｯｸ

DTnH

DTnL

沈黙時間生成器は図15-7.で示されるように沈黙時間を計数する4ﾋﾞｯﾄ下降ｶｳﾝﾀを基にします。これはﾀｲﾏ/ｶｳﾝﾀ4 ｸﾛｯｸ(CKまたはPCK)を1,2,4,8分周できる沈黙時間生成器前の専用前置分周器です。これは生成可能な広範囲の沈黙時間を提供します。この前置分周器はDTPS41,DTPS40の2つの制御ﾋﾞｯﾄによって制御されます。本単位部には沈黙時間計時区間を開始するのに使われる上
昇端と下降端の検出器もあります。このｴｯｼﾞに対応してOC4xまたはOC4xの上昇端の遷移は、この(4ﾋﾞｯﾄ)計数器が0へ計数されるまで遅らされます。比較器は計数器と0との比較に使われ、0に達した時に沈黙時間挿入を止めます。この計数器は沈黙時間挿入を開始する時に波形出力(OCW4x)のｴｯｼﾞに応じてDT4 I/OﾚｼﾞｽﾀからDT4xHまたはDT4xLの4ﾋﾞｯﾄ値が読み込まれます。比較出力は沈
黙時間が0に調節される時に波形出力から最小で1ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期遅延されます。PWM反転動作(PWM4X)ﾋﾞｯﾄが設定(1)なら、OC4xとOC4xは反転されます。これは両出力を沈黙時間中、Highにもさせます。
図15-7. 沈黙時間生成器
比較器

CKまたはPCKｸﾛｯｸ

沈黙時間
前置分周器

ｸﾛｯｸ制御OCnx

4ﾋﾞｯﾄ計数器
DTnxH
DTnxL
沈黙時間nﾚｼﾞｽﾀ(DTn)

DTPSn0
DTPSn1
ﾀｲﾏ/ｶｳﾝﾀn制御
ﾚｼﾞｽﾀB (TCCRnB)
OCWnx

OCnx

PWMnX

8-bit Data Bus

この計数時間長はDTPS41,0ﾋﾞｯﾄを使うことによる沈黙時間前置分周器設定の選択と、そして沈黙時間(DT4)I/Oﾚｼﾞｽﾀの沈黙時間
値選択による使用者調整が可能です。DT4ﾚｼﾞｽﾀはPWM出力とその補完出力を前置分周された沈黙時間生成器ｸﾛｯｸ周期数に換算し、独立して制御するDT4xHとDT4xLの2つの4ﾋﾞｯﾄ領域から成ります。従ってOC4xとOC4xの上昇端は4ﾋﾞｯﾄのDT4H値によって調節されるtnon-overlap/上昇端と、4ﾋﾞｯﾄのDT4L値によって調節されるtnon-overlap/下降端として異なる沈黙時間区間を持ちます。
図15-8. 非重複出力対 (COM4x1,0=01)
OCWnx
OCnx
OCnx

tnon-overlap/下降端
tnon-overlap/上昇端

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]94

15.6. 比較一致出力部
比較出力選択(COM4x1,0)ﾋﾞｯﾄは2つの機能を持ちます。波形生成器は次の比較一致での非反転または反転の波形出力(OCW4x)を定義するのにCOM4x1,0ﾋﾞｯﾄを使います。またCOM4x1,0ﾋﾞｯﾄはOC4xとOC4xのﾋﾟﾝ出力元を制御します。図15-9.はCOM4x1,0ﾋﾞｯﾄ
設定によって影響を及ぼされる論理回路の簡単化した回路図を示します。図のI/Oﾚｼﾞｽﾀ、I/Oﾋﾞｯﾄ、I/Oﾋﾟﾝは赤文字(訳注:原文太字)で示されます。COM4x1,0ﾋﾞｯﾄによって影響を及ぼされる標準I/Oﾎﾟｰﾄ制御ﾚｼﾞｽﾀ(PORTとDDR)の部分だけが示されます。
標準動作(非PWM)での沈黙時間生成器は禁止され、比較出力(OC4x)は波形出力(OCW4x)から1ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期遅延される
同期化器のように働きます。ところがCOM4x1,0ﾋﾞｯﾄが'01'に設定される時の高速PWM動作と位相/周波数基準PWM動作では、非反転と反転の両比較出力が生成され、使用者が設定可能な沈黙時間がそれらの相互補完出力対(OC4xとOC4x)に対して挿入されます。その他のCOM4x1,0ﾋﾞｯﾄ設定が使われる時のPWM動作での機能は標準動作と同じです。OC4xの状態を参照する時のその参照
はOC4xﾋﾟﾝでなく沈黙時間生成器からの比較出力(OC4x)に対してです。ｼｽﾃﾑ ﾘｾｯﾄが起こると、OC4xは'0'にﾘｾｯﾄされます。
COM4x1,0ﾋﾞｯﾄのどちらかが設定(1)されると、標準I/Oﾎﾟｰﾄ機能は沈黙時間生成器からの比較出力(OC4x/OC4x)によって無効にされます。けれどもOC4xﾋﾟﾝの方向(入出力)はﾎﾟｰﾄ ﾋﾟﾝに対するﾎﾟｰﾄ方向ﾚｼﾞｽﾀ(DDR)によって未だ制御されます。OC4xとOC4xﾋﾟﾝに対するﾎﾟｰﾄ方向ﾚｼﾞｽﾀのﾋﾞｯﾄ(DDR_OC4xとDDR_OC4x)はOC4xとOC4x値がﾋﾟﾝで見えるのに先立って出力として設定されなければなりません。このﾎﾟｰﾄの交換機能は比較出力動作種別と無関係です。
比較出力ﾋﾟﾝ論理回路の設計は出力が許可される前のOC4x状態の初期化を許します。いくつかのCOM4x1,0ﾋﾞｯﾄ設定が或る種の動作種別に対して予約されることに注意してください。比較出力ﾋﾟﾝ構成については97頁の表15-2.、98頁の表15-3.、99頁の表15-4.
と104頁の表15-5.を参照してください。
図15-9. 比較一致出力回路図
D

D

D

Q

Q

Q

PORTC6

clkTn

DDC6

8-bit Data Bus

Q

D

Q

D

Q

D

Q

PORTC7

Q

D

Q

D

Q

D

Q

OC4OE3,2
COM4B1,0

PORTB5DDB5PORTB6

clkI/O

Q

OC4B
沈黙時間 Q
OC4B
生成器B Q

OC4OE5,4
COM4D1,0

DDD6

DDD7

OC4D
沈黙時間 Q
OC4D
生成器D Q

1
0

OC4A

0
1

OC4B

1
0

OC4B

比較出力ﾋﾟﾝ構成

2
1
0

PORTD7

OC4A

1
0

DDB6

PORTD601

比較出力ﾋﾟﾝ構成

2
1
0

OCW4D
D

OC4A
沈黙時間 Q
OC4A
生成器A Q

DDC7

OCW4B
D

比較出力ﾋﾟﾝ構成

0
1

OCW4A
D

WGM41,0OC4OE1,0
COM4A1,0

0
1

OC4D

1
0

OC4D

1
0

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]95

15.6.1. 比較一致出力選択と波形生成波形生成器は標準とPWM動作でCOM4x1,0ﾋﾞｯﾄを違うふうに使います。全ての動作種別に対してCOM4x1,0='00'設定は次の比較一
致で実行すべきOCW4x出力の動きがないことを波形生成器へ告げます。非PWM動作での比較出力動作については106頁の表
15-6.を参照してください。高速PWM動作については106頁の表15-7.、位相基準PWMについては106頁の表15-8.を参照してください。
COM4x1,0ﾋﾞｯﾄの状態変更はこのﾋﾞｯﾄが書かれた後の最初の比較一致で有効になります。非PWM動作に対して、この動作は強制変
更(FOC4x)ｽﾄﾛｰﾌﾞ ﾋﾞｯﾄを使うことによって直ちに効果を得ることを強制できます。

15.6.2. 増強された比較/PWM動作(LSB)

ﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀE(TCCR4E)の増強化比較/PWM動作許可(ENHC4)ﾋﾞｯﾄが設定(1)されると、増強化比較/PWM動作が許可されます。この動作は使用者に比較ﾚｼﾞｽﾀ(OCR4A,OCR4B,OCR4D)への精度ﾋﾞｯﾄ追加を許します。前で説明したように、比較条件は3つの比較ﾚｼﾞｽﾀ(OCR4A/B/D)の1つがTCNT4の(10ﾋﾞｯﾄ分解能)値と一致する時に現れます。基本PWM動作では対応する許可された出力が比較一致で交互に切り替わります。増強化比較/PWM動作は比較一致状態がどちらの内部ｸﾛｯｸ端で実際に合図されるのかを決めるﾋﾞｯﾄを導入します。これは対応する出力がOCR4A/B/DのLSBが0の場合に通常ｸﾛｯｸ端で、またはそのLSBが1の場合に逆(次)端で交互に切り替わることを意味します。
使用者は通常と増強のPWM動作間で、出力 図15-10. 増強動作でのﾚｼﾞｽﾀ ｱｸｾｽの働き方
周波数が同一である一方、PWM分解能が後
TC4H
OCR4A/B/D
者でより良くなることに気付くでしょう。
使用者
10 9 87 6 5 4 3 2 1 0
ｲﾝﾀｰﾌｪｰｽ側
比較ﾚｼﾞｽﾀ(OCR4A/B/D)への書き込みまたはそれらの読み込みは両(PWM)動作種別で同じ
ﾀｲﾏ/ｶｳﾝﾀ
真の(内部)です。増強動作に於いて、使用者はﾀｲﾏ/ｶｳﾝ
論理回路側
9
8
7
6
5
4
3
2
1
0
OCR4A/B/D
ﾀ4上位ﾊﾞｲﾄ(TC4H)ﾚｼﾞｽﾀが3ﾋﾞｯﾄ幅までにできる(そしてそれが2ﾋﾞｯﾄ動作中と同じ動きを持
TCNT4[9～0]つ)ことを充分考慮しなければなりません。これ
比較出力部A/B/D波形生成 増強動作
ENHC4
OCR4C[9～0]はOCR4A,OCR4B,OCR4Dのﾚｼﾞｽﾀ ｱｸｾｽだ
構成設定ﾋﾞｯﾄ
けに関係します。実際にOCR4Cﾚｼﾞｽﾀは追加の精度ﾋﾞｯﾄを含めてはならず、これは出力信ﾋﾟﾝ交互切り替え
号周期を決める分解能に留まります。
この図は最下位ﾋﾞｯﾄを波形生成部へ直接転送するために、使用者によって格納された値に対応する真(内部)のOCR4A/B/D値が右移動されることを示します。
利用可能な最大分解能は11ﾋﾞｯﾄですが、(それ以下の)他のどの分解能も指定することができます。例えば、(増強動作での)8ﾋﾞｯﾄ分
解能は7ﾋﾞｯﾄ分解能での通常動作と同じ周波数を得ることを可能にします。
例：
PLL後置分周器出力=64MHz、ﾀｲﾏ/ｶｳﾝﾀ4の前置分周なし。
OCR4C=$7F設定は理論上の完全7ﾋﾞｯﾄ分解能、故に500kHz出力周波数を決めます。
● OCR4A=$85('10000101')設定は比較Aﾚｼﾞｽﾀの真の値が$42('01000010')で、且つ増強ﾋﾞｯﾄの設定(1)を指定します。これは得られるﾃﾞｭｰﾃｨ ｻｲｸﾙ(51.95%)が、(通常動作に於ける)$42と$43の比較値によって得られるﾃﾞｭｰﾃｨ ｻｲｸﾙ(51.56%,52.34%)間の中間値であることを意味します。
●●

15.7. 同期更新
周期での同時性のない矛盾した値を避けるため、多くの値の1つの同期更新が必要な場合、ﾀｲﾏ/ｶｳﾝﾀ制御器によってPWM周期の最後で全ての値を同時に更新することができます。新しい値一式はｿﾌﾄｳｪｱによって計算され、ｿﾌﾄｳｪｱによって効率的な更新を開始することができます。
図15-11. 固定化機能と同期更新
TLOCK4=1
ｿﾌﾄｳｪｱ処理
PWM周期

定常計算繰り返し
設定 i

TLOCK4=0(更新要求)

T/C4ﾚｼﾞｽﾀへ設定j書き込み

設定 i

設定 i

設定 i

設定 j

通常動作では各書き込みが現在の周期の最後で有効になります。しかし、或る場合には複数の比較ﾚｼﾞｽﾀの同時更新を必要とし、それは高速PWM周波数で大抵、常に可能ではないかもしれません。これは矛盾値でのいくつかのPWM周期に終わるかもしれません。
固定化機能(TLOCK4=1)使用時、比較ﾚｼﾞｽﾀに書かれる値は有効にならず、一時的に緩衝されます。TLOCK4ﾋﾞｯﾄ開放(=0)時、更新が開始され、新しい値一式全体が現在のPWM周期の最後で格納されます。
111頁の「TCCR4E - ﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀE」を参照してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]96

15.8. 動作種別
動作種別、換言するとﾀｲﾏ/ｶｳﾝﾀと比較出力ﾋﾟﾝの動作は波形生成種別(WGM41,0とPWM4xﾋﾞｯﾄ)と比較出力選択(COM4x1,0)ﾋﾞｯﾄの組み合わせによって定義されます。比較出力選択ﾋﾞｯﾄは計数順序(動作)に影響を及ぼしませんが、一方波形生成種別ﾋﾞｯﾄは影響を及ぼします。COM4x1,0ﾋﾞｯﾄは生成されるPWM出力が反転されるべきか、されないべきか、または相互補完かのどれかを制御します。非PWM動作に対するCOM4x1,0ﾋﾞｯﾄは比較一致で出力が解除(0)、設定(1)、1/0交互のどれにされるべきかを制御します。

15.8.1. 標準動作
最も単純な動作種別が標準動作(PWM4x=0)で、ｶｳﾝﾀはBOTTOMから(OCR4Cとして定義した)TOPへ計数し、そしてBOTTOMから再び始めます。OCR4Cはｶｳﾝﾀに対するTOP値、従って分解能も定義し、比較一致出力周波数の制御を許します。交互切り替え比
較出力動作での波形出力(OCW4x)はTCNT4とOCR4x間の比較一致で交互切り替えされます。非反転比較出力動作(COM4x1,0=10)での波形出力は比較一致で解除(0)されます。反転比較出力動作(COM4x1,0=11)での波形出力は比較一致で設定(1)されます。
標準動作に対するﾀｲﾐﾝｸﾞ図は図15-12.で示されます。このﾀｲﾐﾝｸﾞ図で折れ線として示されるｶｳﾝﾀ値(TCNT4)はｶｳﾝﾀ値はTOP値に達するまで増加(+1)されます。そしてｶｳﾝﾀは次のｸﾛｯｸ周期で解除されます。この図は交互切り替え比較出力動作での波形出力(OCW4x)を含みます。細い赤線はOCR4x値を示し、TCNT4値との交点(接点)がTCNT4とOCR4x間の比較一致を示します(訳注:図補正に伴い本行若干変更)。
図15-12. 標準動作ﾀｲﾐﾝｸﾞ
OCFnx割り込み要求ﾌﾗｸﾞ設定

TOVn割り込み要求ﾌﾗｸﾞ設定

TOP
TCNTn
OCRnx
OCWnx(交互)
周期

1

2

3

4

5

注: COMnx1,0=01

ﾀｲﾏ/ｶｳ ﾝﾀ溢れ(TOV4)ﾌﾗｸﾞはTCNT4が$000になるのと同じﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で設定(1)されます。この場合のTOV4ﾌﾗｸﾞは設定(1)のみで解除(0)されないことを除いて第11ﾋﾞｯﾄのようになります。けれどもTOV4ﾌﾗｸﾞを自動的に解除(0)するﾀｲﾏ/ｶｳﾝﾀ4溢れ割り込みと組み合わせたﾀｲﾏ/ｶｳﾝﾀの分解能はｿﾌﾄｳｪｱによって増やせます。標準動作での考慮に特別な場合はなく、新しいｶｳﾝﾀ値は何時でも書けます。
比較出力部は与えられた或る時間に割り込みを生成するのに使えます。標準動作で波形を生成するのに比較出力を使うのはそれが大変多くのCPU時間を占有するために推奨されません。波形生成に関して、OCW4x出力は比較出力選択(COM4x1,0)ﾋﾞｯﾄを交互動作(=01)に設定することによって各比較一致での論理ﾚﾍﾞﾙ交互切り替えに設定できます。OC4x値はそのﾋﾟﾝに対するﾃﾞｰﾀ方向が出力に設定されない限りﾎﾟｰﾄ ﾋﾟﾝで見えないでしょう。生成された波形はOCR4Cが0($000)に設定される時に fOC4x= fclkT4/2の最大周波数を得ます。生成波形周波数は次式によって定義されます。
fOC4x =

fclkT42×(1＋OCR4C)

分解能はOCR4C内の表現するのに何ﾋﾞｯﾄ必要とされるかを示します。これは次式によって計算されます。
分解能 PWM = log 2(OCR4C+1)
標準動作での比較出力ﾋﾟﾝ構成は下表で記述されます。

表15-2. 標準動作比較出力ﾋﾟﾝ構成
COM4x1 COM4x0
OC4xﾋﾟﾝ
00
標準ﾎﾟｰﾄ動作 (OC4x切断)
0
1
OC4x
1
0
OC4x
1
1
OC4x

OC4xﾋﾟﾝ
標準ﾎﾟｰﾄ動作 (OC4x切断)
標準ﾎﾟｰﾄ動作 (OC4x切断)
標準ﾎﾟｰﾄ動作 (OC4x切断)
標準ﾎﾟｰﾄ動作 (OC4x切断)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]97

15.8.2. 高速PWM動作
高速ﾊﾟﾙｽ幅変調または高速PWM動作(WGM41,0=00とPWM4x=1)は高周波数PWM波形生成選択を提供します。高速PWMはそれが単一傾斜(鋸波)動作であることで他のPWM動作と異なります。ｶｳﾝﾀはBOTTOMから(OCR4Cとして定義された)TOPまで計数し、その後にBOTTOMから再び始めます。非反転比較出力動作(COM4x1,0=10)での波形出力(OCW4x)はTCNT4とOCR4x間の比較一致で解除(0)され、BOTTOMで設定(1)されます。反転出力動作(COM4x1,0=11)の出力は比較一致で設定(1)され、BOTTOMで解除(0)されます。相互補完比較出力動作(COM4x1,0=01)での波形出力は比較一致で解除(0)され、BOTTOMで設定(1)されます。
この単一傾斜動作のため、高速PWM動作の動作周波数は両傾斜(三角波)動作を使う位相/周波数基準PWM動作よりも2倍高くできます。この高い周波数は電力調節、整流、D/A変換に対して高速PWM動作を都合よく適合させます。高い周波数は物理的に小さな外部部品(ｺｲﾙやｺﾝﾃﾞﾝｻ)を許し、従ってｼｽﾃﾑ総費用を削減します。
高速PWM動作に関するﾀｲﾐﾝｸﾞ図は図15-13.で示されます。ｶｳﾝﾀはｶｳﾝﾀ値がTOP値と一致するまで増加されます。そして、ｶｳﾝﾀは(一致の)次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で解除($000)されます。TCNT4値はﾀｲﾐﾝｸﾞ図で単一傾斜動作(鋸波)を表す折れ線ｸﾞﾗﾌとして示されます。この図は非反転と反転の波形出力を含みます。細い赤線はOCR4x値を示し、TCNT4値との交点(接点)がTCNT4とOCR4x間の比較一致を示します(訳注:図補正に伴い本行若干変更)。
図15-13. 高速PWM動作ﾀｲﾐﾝｸﾞ
OCRnx更新、TOVn割り込み要求ﾌﾗｸﾞ設定

OCFnx割り込み要求ﾌﾗｸﾞ設定

OCRnx
TCNTn

OCWnx(非反転)(COMnx1,0=10)
OCWnx(反転)(COMnx1,0=11)
周期

1

2

3

4

5

6

7

ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV4)ﾌﾗｸﾞはｶｳﾝﾀがTOPに到達する時毎に設定(1)されます。割り込みが許可されるなら、その割り込み処理ﾙｰﾁ
ﾝは比較値を更新するのに使えます。
高速PWM動作での比較部はOC4xﾋﾟﾝでのPWM波形の生成を許します。COM4x1,0ﾋﾞｯﾄの'10'設定は非反転PWM出力を作成し、COM4x1,0の'11'設定は反転PWM出力を生成します。COM4x1,0ﾋﾞｯﾄの'01'設定は相互補完比較出力動作を許可し、非反転(OC4x)と反転(OC4x)の両出力を生成します。実際の値はﾎﾟｰﾄ ﾋﾟﾝに対するﾃﾞｰﾀ方向が出力として設定される場合にだけ見えるでしょう。
PWM波形はTCNT4とOCR4x間の比較一致で、OCW4xを設定(1)(または解除(0))することによって生成されます。
PWM出力周波数は次式によって計算できます。
fOCnxPWM =fclkT4
N

変数Nは単一傾斜動作での段数を表します。Nの値はTOP値と同じです。
OCR4Cの両端値は高速PWM動作でPWM波形出力を生成する時の特別な場合にあたります。OCR4CがBOTTOM($000)に等しく設
定されると、出力はMAX+1 ﾀｲﾏ/ｶｸﾝﾀ ｸﾛｯｸ周期毎の狭いｽﾊﾟｲｸ(ﾊﾟﾙｽ)になるでしょう。OCR4CがMAXに等しく設定されると、(COM
4x1,0ﾋﾞｯﾄによって設定される出力極性に依存して)定常的なLowまたはHigh出力に終わるでしょう。
高速PWM動作での(ﾃﾞｭｰﾃｨ比50%)周波数の波形出力は比較一致毎に論理反転する波形出力(OCW4x)設定(COM4x1,0=01)によって達成できます。生成された波形はOCR4Cが3($003)に設定される時に fOC4x= fclkT4/4の最大周波数でしょう。
COM4x1,0ﾋﾞｯﾄのどちらかが設定(1)され、OC4xとOC4xのﾋﾟﾝに対するﾃﾞｰﾀ方向ﾚｼﾞｽﾀ ﾋﾞｯﾄが出力として設定されている場合、標準
I/Oﾎﾟｰﾄ機能は沈黙時間生成器からの比較出力値(OC4x/OC4x)によって無効にされます。COM4x1,0ﾋﾞｯﾄが解除(00)なら、ﾎﾟｰﾄ出
力ﾚｼﾞｽﾀからの実際の値がﾎﾟｰﾄ ﾋﾟﾝで見えるでしょう。比較出力ﾋﾟﾝ構成は下表で記述されます。
表15-3. 高速PWM動作比較出力ﾋﾟﾝ構成
COM4x1 COM4x0
OC4xﾋﾟﾝ
OC4xﾋﾟﾝ
00
標準ﾎﾟｰﾄ動作 (OC4x切断) 標準ﾎﾟｰﾄ動作 (OC4x切断)
0
1
OC4x
OC4x
1
0
OC4x
標準ﾎﾟｰﾄ動作 (OC4x切断)
1
1
OC4x標準ﾎﾟｰﾄ動作 (OC4x切断)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]98

15.8.3. 位相/周波数基準PWM動作
位相/周波数基準PWM動作(WGM41,0=01とPWM4x=1)は高分解能で正しい位相と周波数のPWM波形生成選択を提供します。位相/周波数基準PWM動作は両傾斜(三角波)動作が基準です。ｶｳﾝﾀはBOTTOM($000)から(OCR4Cとして定義した)TOPへ、そしてその後TOPからBOTTOMへを繰り返し計数します。非反転比較出力動作(COM4x1,0=10)と相互補完比較出力動作(COM4x1,0=01)での波形出力(OCW4x)は上昇計数中のTCNT4とOCR4x間の比較一致で解除(0)され、下降計数中の比較一致で設定(1)されます。
反転出力動作(COM4x1,0=11)での動作は逆にされます。両傾斜(三角波)動作は単一傾斜(鋸波)動作よりも低い最大動作周波数になります。けれども両傾斜(三角波)PWM動作の対称特性なのでこれらの動作種別は電動機制御の応用に好まれます。TCNT4値は1
ﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期間TOPと等しくなります。
TCNT4値がﾀｲﾐﾝｸﾞ図で両傾斜動作(三角波)を表す折れ線ｸﾞﾗﾌとして示される、位相/周波数基準PWM動作のﾀｲﾐﾝｸﾞ図は図15-14.
で示されます。ｶｳﾝﾀはｶｳﾝﾀ値がTOPと一致するまで増加されます。ｶｳﾝﾀがTOPに到達した時に計数方向を変更します。この図は非反転と反転での波形出力(OCW4x)を含みます。細い赤線はOCR4x値を示し、TCNT4値との交点(接点)がTCNT4とOCR4x間の比較一致を示します (訳注:図補正に伴い本行若干変更)。
図15-14. 位相/周波数基準PWM動作ﾀｲﾐﾝｸﾞ
OCFnA割り込み
要求ﾌﾗｸﾞ設定

OCRnx更新、TOVn割り込み
要求ﾌﾗｸﾞ設定(BOTTOM値割り込み)

TOP
OCRnx
TCNTn
OCWnx(非反転)(COMnx1,0=10)
OCWnx(反転)(COMnx1,0=11)
周期

1

2

3

4

ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV4)ﾌﾗｸﾞはｶｳﾝﾀがBOTTOMに達する時毎に設定(1)されます。割り込み要求ﾌﾗｸﾞはｶｳﾝﾀがBOTTOMに達する
時毎に割り込みを発生するのに使えます。

位相/周波数基準PWM動作での比較部はOC4xﾋﾟﾝでのPWM波形の生成を許します。COM4x1,0ﾋﾞｯﾄの'10'設定は非反転PWMを作成し、COM4x1,0の'11'設定は反転PWM出力を生成します。COM4x1,0ﾋﾞｯﾄの'01'設定は相互補完比較出力動作を許可し、非反転(OC4x)と反転(OC4x)の両出力を生成します。実際の値はﾎﾟｰﾄ ﾋﾟﾝに対するﾃﾞｰﾀ方向が出力として設定される場合だけ見えるでしょう。PWM波形はｶｳﾝﾀが増加する時のTCNT4とOCR4x間の比較一致で波形出力(OCW4x)を設定(1)(または解除(0))と、ｶｳﾝﾀが減少する時のTCNT4とOCR4x間の比較一致で波形出力を解除(0)(または設定(1))することによって生成されます。位相/周波数基準
PWMを使う時の出力に対するPWM周波数は次式によって計算できます。
ffOCnxPFCPWM = clkT4
N
変数Nは両傾斜動作での段数を表します。Nの値はTOP値と同じです。
OCR4Cに対する両端値は位相/周波数基準PWM動作でPWM波形出力を生成する時の特別な場合にあたります。非反転PWM動作ではOCR4xがBOTTOMに等しく設定されると出力は定常的なLow、TOPに等しく設定されると定常的なHighになるでしょう。反転
PWMに対する出力は逆の論理値になります。
COM4x1,0ﾋﾞｯﾄのどちらかが設定(1)され、OC4xとOC4xのﾋﾟﾝに対するﾃﾞｰﾀ方向ﾚｼﾞｽﾀ ﾋﾞｯﾄが出力として設定されている場合、標準
I/Oﾎﾟｰﾄ機能は沈黙時間生成器からの比較出力値(OC4x/OC4x)によって無効にされます。COM4x1,0ﾋﾞｯﾄが解除(00)なら、ﾎﾟｰﾄ出
力ﾚｼﾞｽﾀからの実際の値がﾎﾟｰﾄ ﾋﾟﾝで見えるでしょう。比較出力ﾋﾟﾝ構成は下表で記述されます。

表15-4. 位相/周波数基準PWM動作比較出力ﾋﾟﾝ構成
COM4x1 COM4x0
OC4xﾋﾟﾝ
OC4xﾋﾟﾝ
00
標準ﾎﾟｰﾄ動作 (OC4x切断) 標準ﾎﾟｰﾄ動作 (OC4x切断)
0
1
OC4x
OC4x
1
0
OC4x
標準ﾎﾟｰﾄ動作 (OC4x切断)
1
1
OC4x標準ﾎﾟｰﾄ動作 (OC4x切断)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]99

15.8.4. PWM6動作
PWM6動作(WGM41,0=1xとPWM4A=1)は例えばﾌﾞﾗｼﾚｽDC電動機用のPWM波形生成選択を提供します。WPM6動作でのOCR4A
は全波形を生成するのに使われる波形生成器からの同じ波形出力(OCW4A)として6つ全ての比較出力波形を制御します。PWM6動
作は比較出力ﾋﾟﾝを許可/禁止するための瞬時応答で使える比較出力での無効化許可(OC4OEm:m=0～5)ﾋﾞｯﾄも提供します。比較
出力での無効化許可ﾋﾞｯﾄが解除(0)なら、ﾎﾟｰﾄ出力ﾚｼﾞｽﾀからの実際の値がﾎﾟｰﾄ ﾋﾟﾝで見えるでしょう。
PWM6動作は単一傾斜動作と両傾斜動作の2つのｶｳﾝﾀ操作種別を提供します。単一傾斜動作が選択(WGM40=0)されるなら、ｶｳﾝﾀ
は高速PWM動作のようにBOTTOMから(OCR4Cとして定義された)TOPまで計数し、その後BOTTOMから再び始めます。PWM波形
はTCNT4とOCR4A間の比較一致で波形出力(OCW4A)を解除(0)(または設定(1))と、ｶｳﾝﾀが解除($000、TOPからBOTTOMへ変更)
されるﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で波形出力を設定(1)(または解除(0))することによって生成されます。ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV4)ﾌﾗｸﾞはｶｳﾝ
ﾀがTOPに到達する時毎に設定(1)され、割り込みが許可されるなら、その割り込み処理ﾙｰﾁﾝは比較値を更新するのに使えます。
ところが両傾斜動作が選択(WGM40=1)される場合、ｶｳﾝﾀは位相/周波数基準PWM動作のようにBOTTOM($000)から(OCR4Cとして定義した)TOPへ、そしてその後TOPからBOTTOMへを繰り返し計数します。PWM波形は上昇計数中のTCNT4とOCR4A間の比較
一致で波形出力(OCW4A)を解除(0)(または設定(1))と、下降計数中の比較一致で波形出力を設定(1)(または解除(0))することによって生成されます。ﾀｲﾏ/ｶｳﾝﾀ溢れ(TOV4)ﾌﾗｸﾞはｶｳﾝﾀがBOTTOMに到達する時毎に設定(1)され、割り込みが許可されるなら、その割り込み処理ﾙｰﾁﾝは比較値を更新するのに使えます。
COM4x1,0ﾋﾞｯﾄが'10'に設定される時の単一傾斜動作(WGM40=0)でのPWM6動作に関するﾀｲﾐﾝｸﾞ図は図15-15.で示されます。ｶｳﾝ
ﾀはｶｳﾝﾀ値がTOP値と一致するまで増加(+1)されます。そしてｶｳﾝﾀは次のﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ周期で解除($000)されます。TCNT4値
はﾀｲﾐﾝｸﾞ図で単一傾斜動作(鋸波)を表す折れ線ｸﾞﾗﾌとして示されます。この図はOC4AとOC4Aの比較出力ﾋﾟﾝと、対応する比較出力有効許可(OC4OE1,OC4OE0)ﾋﾞｯﾄを含みます。
図15-15. PWM6単一傾斜動作ﾀｲﾐﾝｸﾞ
OCRnx更新、TOVn割り込み要求ﾌﾗｸﾞ設定(BOTTOM値割り込み)

TOP
OCR4A
TCNT4
OCW4A
OC4OE0OC4Aﾋﾟﾝ
OC4OE1OC4Aﾋﾟﾝ
OC4OE2OC4Bﾋﾟﾝ
OC4OE3OC4Bﾋﾟﾝ
OC4OE4
OC4Dﾋﾟﾝ
OC4OE5
OC4Dﾋﾟﾝ
注: COM4x1,0=10,非反転動作
COM4x1,0ﾋﾞｯﾄのどちらかが設定(1)されている場合、標準I/Oﾎﾟｰﾄ機能は沈黙時間生成器からの比較出力値(OC4x/OC4x)によって無効にされます。比較出力ﾋﾟﾝは比較出力での無効化許可(OC4OE5～OC4OE0)ﾋﾞｯﾄによっても無効にできます。無効化許可ﾋﾞｯﾄが解除(0)なら、ﾎﾟｰﾄ出力ﾚｼﾞｽﾀからの実際の値がﾎﾟｰﾄ ﾋﾟﾝで見え、無効化許可ﾋﾞｯﾄが設定(1)なら、比較出力ﾋﾟﾝはﾎﾟｰﾄ ﾋﾟﾝへの接続が許されます。比較出力ﾋﾟﾝ構成は表15-5.で記述されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]100表15-5. PWM6動作比較出力ﾋﾟﾝ構成
COM4A1 COM4A0
OC4Aﾋﾟﾝ (PC7)00標準ﾎﾟｰﾄ動作 (OC4A切断)
0
1
OC4A・OC4OE1
1
0
OC4A・OC4OE1
1
1
OC4A・OC4OE1
COM4B1 COM4B0
OC4Bﾋﾟﾝ (PB6)00
標準ﾎﾟｰﾄ動作 (OC4A切断)
0
1
OC4A・OC4OE3
1
0
OC4A・OC4OE3
1
1
OC4A・OC4OE3
COM4D1 COM4D0
OC4Dﾋﾟﾝ (PD7)00
標準ﾎﾟｰﾄ動作 (OC4A切断)
0
1
OC4A・OC4OE5
1
0
OC4A・OC4OE5
1
1
OC4A・OC4OE5

OC4Aﾋﾟﾝ (PC6)
標準ﾎﾟｰﾄ動作 (OC4A切断)
OC4A・OC4OE0
OC4A・OC4OE0
OC4A・OC4OE0
OC4Bﾋﾟﾝ (PB5)
標準ﾎﾟｰﾄ動作 (OC4A切断)
OC4A・OC4OE2
OC4A・OC4OE2
OC4A・OC4OE2
OC4Dﾋﾟﾝ (PD6)
標準ﾎﾟｰﾄ動作 (OC4A切断)
OC4A・OC4OE4
OC4A・OC4OE4
OC4A・OC4OE4(訳補) PWM6動作は基本的に高速PWM動作と位相/周波数基準PWM動作に対して波形出力にOCW4Aを共通で使い、各比較出力ﾋﾟﾝを比較出力での無効化許可ﾋﾞｯﾄによって個別に許可/禁止できるようにしたものと考えられます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]101

15.9. ﾀｲﾏ/ｶｳﾝﾀのﾀｲﾐﾝｸﾞ
このﾀｲﾏ/ｶｳﾝﾀは同期設計で、従って以下の図でﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ(clkT4)がｸﾛｯｸ許可信号として示されます。この図は割り込みﾌﾗｸﾞが設定(1)される時の情報を含みます。
図15-16.は基本的なﾀｲﾏ/ｶｳﾝﾀ動作についてのﾀｲﾐﾝｸﾞ ﾃﾞｰﾀを含みます。この図は位相/周波数基準PWM動作以外の全ての動作
種別でのTOP値近辺の計数の流れを示します。図15-17.は位相/周波数基準PWM動作と両傾斜PWM6動作以外の全ての動作種
別での同じﾀｲﾐﾝｸﾞ ﾃﾞｰﾀを示しますが、前置分周器が許可されています。図15-18.は全動作種別でのOCF4A,OCF4B,OCF4Dの設定を示します。図15-19.は位相/周波数基準PWM動作と両傾斜PWM6動作でのTOV4の設定を示します。
図15-16. 前置分周なし(1/1)のﾀｲﾏ/ｶｳﾝﾀ ﾀｲﾐﾝｸﾞ

clkPCK
clkTn (clkPCK/1)
TCNTn

TOP-1

TOP

BOTTOM

BOTTOM+1

TOVn
図15-17. 前置分周器(fclkPCK/8)のﾀｲﾏ/ｶｳﾝﾀ ﾀｲﾐﾝｸﾞ (位相/周波数基準PWM動作と両傾斜PWM6動作以外)

clkPCK
clkTn (clkPCK/8)
TCNTn

TOP-1

TOP

BOTTOM

BOTTOM+1

OCRnx+1

OCRnx+2

TOVn
図15-18. 前置分周器(fclk_PCK/8)のﾀｲﾏ/ｶｳﾝﾀ、OCF1x設定 ﾀｲﾐﾝｸﾞ

clkPCK
clkTn (clkPCK/8)
TCNTn

OCRnx-1

OCRnx

OCRnx
OCRnx値

OCFnx
図15-19. 前置分周器(fclkPCK/8)のﾀｲﾏ/ｶｳﾝﾀ ﾀｲﾐﾝｸﾞ (位相/周波数基準PWM動作と両傾斜PWM6動作)

clkPCK
clkTn (clkPCK/8)
TCNTn

BOTTOM+2

BOTTOM+1

BOTTOM

BOTTOM+1

TOVn

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]102

15.10. 障害保護部
ﾀｲﾏ/ｶｳﾝﾀ4は外部事象が起動される場合にPWM出力ﾋﾟﾝを禁止にできる障害保護部を併設します。出来事を指示する外部信号は外部割り込みINT0経由、または代わりにｱﾅﾛｸﾞ比較器部経由で印加できます。障害保護部は図15-20.で示される構成図によって表されます。障害保護部の直接の部分でない構成図の要素は青枠(訳注:原文は灰色背景)で示されます。
図15-20. 障害保護部構成図
ｱﾅﾛｸﾞ比較器 FPAC4
ACO
+
-

INT0

FPNC4
雑音消去器

FPES4

FPEN4

ｴｯｼﾞ検出器

FPF4 (割り込み要求)
TC4H(8ﾋﾞｯﾄ)

TCNT4(8ﾋﾞｯﾄ)

TCNT4 (10/8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ)

障害保護動作は障害保護許可(FPEN4)ﾋﾞｯﾄと外部割り込み(INT0)ﾋﾟﾝ、または代わりにｱﾅﾛｸﾞ比較器出力で論理ﾚﾍﾞﾙ(事象)の変化によって許可され、この変化がｴｯｼﾞ検出器の設定に通知して障害保護が起動されます。障害保護が起動されると、比較出力選択(COM4x1.0)ﾋﾞｯﾄが解除(00)され、比較出力はPWM出力ﾋﾟﾝから切断されてPORTxﾚｼﾞｽﾀ ﾋﾞｯﾄがPWM出力ﾋﾟﾝに接続されます。障害保護許可(FPEN4)はCOM4xﾋﾞｯﾄが解除(00)されるのと同じｼｽﾃﾑ ｸﾛｯｸで自動的に解除(0)されます。障害保護割り込み許可(FPIE4)が設定(1)なら、障害保護割り込みが生成され、FPEN4ﾋﾞｯﾄが解除(0)されます。代わりにFPEN4はﾀｲﾏ/ｶｳﾝﾀが障害保護動作へ移行されてしまった時を了解するのにｿﾌﾄｳｪｱによってﾎﾟｰﾘﾝｸﾞすることもできます。

15.10.1. 障害保護起動元
障害保護部に対する主な起動元は外部割り込み(INT0)ﾋﾟﾝです。代わりにｱﾅﾛｸﾞ比較器出力が障害保護部に対する起動元として使えます。ｱﾅﾛｸﾞ比較器はﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀD(TCCR4D)の障害保護ｱﾅﾛｸﾞ比較器(FPAC4)ﾋﾞｯﾄの設定(1)によって選択されます。起動元変更が障害保護動作を起動し得ることに注意してください。従って起動元変更、ｴｯｼﾞ検出器設定、または障害保護許可
後に障害保護割り込み要求ﾌﾗｸﾞ(FPF4)を解除(0)することが推奨されます。
外部割り込み(INT0)ﾋﾟﾝとｱﾅﾛｸﾞ比較器出力(ACO)入力はTnﾋﾟﾝ(55頁の図12-1.参照)についてと同じ技法を使って採取されます。ｴｯｼﾞ検出器も全く同じです。けれども雑音消去が許可されると、付加論理回路がｴｯｼﾞ検出器の前に挿入され、そして遅延を4ｼｽﾃﾑ ｸ
ﾛｯｸ周期増やします。障害保護動作はINT0ﾋﾟﾝのﾎﾟｰﾄを制御することによってｿﾌﾄｳｪｱでも起動できます。

15.10.2. 雑音消去器
雑音消去器は簡単なﾃﾞｼﾞﾀﾙ濾波器機構を使うことによって雑音耐性を改善します。雑音消去器の入力は4採取に渡って監視され、ｴｯｼﾞ検出器によって使われる方向転換となる出力を変更するには4回全てが同じでなければなりません。
雑音消去器はﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀD(TCCR4D)の障害保護雑音消去許可(FPNC4)ﾋﾞｯﾄの設定(1)によって許可されます。許可した時に雑音消去器は入力に印加した変更から4ｼｽﾃﾑ ｸﾛｯｸ周期の追加遅延をもたらします。雑音消去器はｼｽﾃﾑ ｸﾛｯｸを使い、従って前置分周器によって影響を及ぼされません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]103

15.11. 10ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ
10ﾋﾞｯﾄ値がTCNT4とOCR4A/B/C/Dﾚｼﾞｽﾀに書かれる場合、その10ﾋﾞｯﾄ ﾚｼﾞｽﾀは2回の読みまたは書き操作を使って8ﾋﾞｯﾄ ﾊﾞｽ経由
でAVR CPUによってｱｸｾｽできます。10ﾋﾞｯﾄ ﾚｼﾞｽﾀは10ﾋﾞｯﾄ ｱｸｾｽの上位2ﾋﾞｯﾄの一時保存用に共通2ﾋﾞｯﾄのﾀｲﾏ/ｶｳﾝﾀ1上位ﾊﾞｲﾄ(TC4H)ﾚｼﾞｽﾀを持ちます。全ての10ﾋﾞｯﾄ ﾚｼﾞｽﾀ間で、この同じTC4Hﾚｼﾞｽﾀが共用されます。下位ﾊﾞｲﾄ ｱｸｾｽが10ﾋﾞｯﾄ読み書き動作を起動します。10ﾋﾞｯﾄ ﾚｼﾞｽﾀの下位ﾊﾞｲﾄがCPUによって書かれると、TC4Hﾚｼﾞｽﾀに格納した上位ﾊﾞｲﾄと書かれた下位ﾊﾞｲﾄは同じｸ
ﾛｯｸ周期で10ﾋﾞｯﾄ ﾚｼﾞｽﾀに両方が複写されます。10ﾋﾞｯﾄ ﾚｼﾞｽﾀの下位ﾊﾞｲﾄがCPUによって読まれると、10ﾋﾞｯﾄ ﾚｼﾞｽﾀの上位ﾊﾞｲﾄは下位ﾊﾞｲﾄが読まれるのと同じｸﾛｯｸ周期でTC4Hﾚｼﾞｽﾀに複写されます。
10ﾋﾞｯﾄ書き込みを行うために上位ﾊﾞｲﾄは下位ﾊﾞｲﾄが書かれるのに先立ってTC4Hﾚｼﾞｽﾀへ書かれなければなりません。10ﾋﾞｯﾄ読み込みについては下位ﾊﾞｲﾄが上位ﾊﾞｲﾄに先立って読まれなければなりません。
次のｺｰﾄﾞ例は割り込みがTC4Hﾚｼﾞｽﾀを更新しないことが前提の10ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ ﾚｼﾞｽﾀのｱｸｾｽ法を示します。OCR4A/B/C/Dﾚ
ｼﾞｽﾀのｱｸｾｽに対して同じ原理が直接的に使えます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
～
LDI
LDI
OUT
OUT

R17,$01
R16,$FF
TCnH,R17
TCNTn,R16

IN
IN～
C言語ﾌﾟﾛｸﾞﾗﾑ例
unsigned int i;～

R16,TCNTn
R17,TCnH

TCnH = 0x01;
TCNTn = 0xFF;
i = TCNTn;
i |= ((unsigned int)TCnH<<8);～;;[10ﾋﾞｯﾄ($1FF)書き込み];$1FFの上位ﾊﾞｲﾄ値取得;$1FFの下位ﾊﾞｲﾄ値取得;上位ﾊﾞｲﾄ設定(TCnHﾚｼﾞｽﾀ);下位ﾊﾞｲﾄ設定(TCnH⇒上位ﾊﾞｲﾄ);[10ﾋﾞｯﾄ読み込み];下位ﾊﾞｲﾄ取得(上位ﾊﾞｲﾄ⇒一時ﾚｼﾞｽﾀ);上位ﾊﾞｲﾄ取得(TCnHﾚｼﾞｽﾀ);/* *//* [10ﾋﾞｯﾄ($1FF)書き込み] *//* 上位ﾊﾞｲﾄ設定(TCnHﾚｼﾞｽﾀ) *//* 下位ﾊﾞｲﾄ設定(TCnHﾚｼﾞｽﾀ⇒上位ﾊﾞｲﾄ) *//* [10ﾋﾞｯﾄ読み込み] *//* 下位ﾊﾞｲﾄ取得(上位ﾊﾞｲﾄ⇒TCnHﾚｼﾞｽﾀ) *//* 上位ﾊﾞｲﾄ取得(TCnHﾚｼﾞｽﾀ)合成 *//* */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
ｱｾﾝﾌﾞﾘ言語ｺｰﾄﾞ例はR17:R16ﾚｼﾞｽﾀ対にTCNT4値を戻します。
10ﾋﾞｯﾄ ﾚｼﾞｽﾀ ｱｸｾｽが非分断操作であるのに注意することが重要です。10ﾋﾞｯﾄ ﾚｼﾞｽﾀをｱｸｾｽする2命令間で割り込みが起き、割り込みｺｰﾄﾞがその10ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ ﾚｼﾞｽﾀの同じ若しくは他の何れかをｱｸｾｽすることによってTC4Hﾚｼﾞｽﾀを更新する場合、割り込
み外のその後のｱｸｾｽ結果は不正にされます。従って主ｺｰﾄﾞと割り込みｺｰﾄﾞの両方がTC4Hﾚｼﾞｽﾀを更新する時に主ｺｰﾄﾞは10ﾋﾞｯﾄ
ｱｸｾｽ中の割り込みを禁止しなければなりません。

訳補: 増強化比較/PWM動作時のOCR4A/B/Dに対する11ﾋﾞｯﾄ ｱｸｾｽも同様で、TC4Hの下位3ﾋﾞｯﾄが11ﾋﾞｯﾄ値の上位3ﾋﾞｯﾄを含みます。従って、その場合の本項に於いては10ﾋﾞｯﾄを11ﾋﾞｯﾄ、TC4Hの2ﾋﾞｯﾄを3ﾋﾞｯﾄと読み換えてください。
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

104

次のｺｰﾄﾞ例はTCNT4ﾚｼﾞｽﾀ内容の非分断読み込み法を示します。同じ原理を使うことにより、OCR4A/B/C/Dのどんな読み込みも行えます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
RD_TCNTn:
IN
R18,SREG
CLI
IN
R16,TCNTn
IN
R17,TCnH
OUT
SREG,R18
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
unsigned int TIM10_Read_TCNTn(void){
unsigned char sreg;
unsigned int i;sreg = SREG;_CLI();
i = TCNTn;
i |= ((unsigned int)TCnH<<8);
SREG = sreg;
return i;};現全割り込み許可ﾌﾗｸﾞ(I)を保存;全割り込み禁止;TCNTn下位ﾊﾞｲﾄ取得(上位ﾊﾞｲﾄ⇒TCnHﾚｼﾞｽﾀ);TCNTn上位ﾊﾞｲﾄ取得(TCnHﾚｼﾞｽﾀ);全割り込み許可ﾌﾗｸﾞ(I)を復帰;呼び出し元へ復帰/* ｽﾃｰﾀｽ ﾚｼﾞｽﾀ一時保存変数定義 *//* TCNTn読み出し変数定義 *//* 現全割り込み許可ﾌﾗｸﾞ(I)を保存 *//* 全割り込み禁止 *//* 下位ﾊﾞｲﾄ取得(上位ﾊﾞｲﾄ⇒TCnHﾚｼﾞｽﾀ) *//* 上位ﾊﾞｲﾄ取得(TCnHﾚｼﾞｽﾀ)合成 *//* 全割り込み許可ﾌﾗｸﾞ(I)を復帰 *//* TCNTn値で呼び出し元へ復帰 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
ｱｾﾝﾌﾞﾘ言語ｺｰﾄﾞ例はR17:R16ﾚｼﾞｽﾀ対にTCNT4値を戻します。
次のｺｰﾄﾞ例はTCNT4ﾚｼﾞｽﾀ内容の非分断書き込み法を示します。同じ原理を使うことにより、OCR4A/B/C/Dのどんな書き込みも行えます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
WR_TCNTn:
IN
R18,SREG
CLI
OUT
TCnH,R17
OUT
TCNTn,R16
OUT
SREG,R18
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void TIM10_Write_TCNTn(unsigned int i){
unsigned char sreg;
unsigned int i;sreg = SREG;_CLI();
TCnH = (i>>8);
TCNTn = (unsigned char)i;
SREG = sreg;};現全割り込み許可ﾌﾗｸﾞ(I)を保存;全割り込み禁止;TCNTn上位ﾊﾞｲﾄ設定(TCnHﾚｼﾞｽﾀ);TCNTn下位ﾊﾞｲﾄ設定(TCnHﾚｼﾞｽﾀ⇒上位ﾊﾞｲﾄ);全割り込み許可ﾌﾗｸﾞ(I)を復帰;呼び出し元へ復帰/* ｽﾃｰﾀｽ ﾚｼﾞｽﾀ一時保存変数定義 *//* TCNTn書き込み変数定義 *//* 現全割り込み許可ﾌﾗｸﾞ(I)を保存 *//* 全割り込み禁止 *//* 上位ﾊﾞｲﾄ設定(TCnHﾚｼﾞｽﾀ) *//* 下位ﾊﾞｲﾄ設定(TCnHﾚｼﾞｽﾀ⇒上位ﾊﾞｲﾄ) *//* 全割り込み許可ﾌﾗｸﾞ(I)を復帰 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
ｱｾﾝﾌﾞﾘ言語ｺｰﾄﾞ例はR17:R16ﾚｼﾞｽﾀ対がTCNT4へ書かれるべき値を含むことが必要です。

15.11.1. 上位ﾊﾞｲﾄ一時ﾚｼﾞｽﾀの再使用
書かれる全ﾚｼﾞｽﾀについて上位ﾊﾞｲﾄが同じ複数10ﾋﾞｯﾄ ﾚｼﾞｽﾀ書き込みなら、上位ﾊﾞｲﾄは1度書かれることだけが必要です。けれども直前で記述した非分断操作の同じ規則が、この場合にも適用されることに注意してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]105

15.12. ﾀｲﾏ/ｶｳﾝﾀ4用ﾚｼﾞｽﾀ15.12.1. TCCR4A - ﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀA (Timer/Counter4 Control Register A)
ﾋﾞｯﾄ
($C0)
Read/Write
初期値

7

6

5

4

COM4A1 COM4A0 COM4B1 COM4B0
R/W
0

R/W
0

R/W
0

R/W
0

3

2

1

0

FOC4A

FOC4B

PWM4A

PWM4B

W
0

W
0

R/W
0

R/W
0

TCCR4A● ﾋﾞｯﾄ7,6 - COM4A1,0 : 比較A出力選択 (Compare A Output Mode bits 1 and 0)

これらのﾋﾞｯﾄは波形出力(OCW4A)の動きとOC4A比較出力ﾋﾟﾝの接続を制御します。COM4A1,0ﾋﾞｯﾄの1つまたは両方が1を書かれると、OC4A出力はそのI/Oﾋﾟﾝの標準ﾎﾟｰﾄ機能を無効にし、そのI/Oﾋﾟﾝに接続されます。相互補間OC4A出力はCOM4A1,0ﾋﾞｯﾄが'01'に設定される時のPWM動作でだけ接続されます。けれども出力駆動部を許可するのにOC4AとOC4Aﾋﾟﾝに対応するﾎﾟｰﾄ方向ﾚｼﾞｽﾀ(DDR)のﾋﾞｯﾄが設定(1)されなければならないことに注意してください。
COM4A1,0ﾋﾞｯﾄの機能はPWM4AとWGM41,0ﾋﾞｯﾄ設定に依存します。
右表はPWM4Aﾋﾞｯﾄが 表15-6. 標準(非PWM)動作比較A出力選択
標準動作(つまり非P
COM4A1,0
OCW4Aの動き
OC4Aﾋﾟﾝ OC4AﾋﾟﾝWM)に設定される時
00
標準ﾎﾟｰﾄ動作
切断
切断のCOM4A 1,0 ﾋﾞｯﾄの01
比較一致でﾄｸﾞﾙ(交互切り替え)出力
接続
切断
機能を示します。
10
比較一致で解除(0)接続
切断
11比較一致で設定(1)接続
切断
右表はPWM4AとWG
M4 1,0 ﾋﾞｯﾄが高速PW
M動作に設定される時のCOM4A 1,0 ﾋﾞｯﾄの機能を示します。

表15-7. 高速PWM動作比較A出力選択
COM4A1,0
OCW4Aの動き
00
標準ﾎﾟｰﾄ動作
01
比較一致で解除(0)、TCNT4=$000で設定(1)10比較一致で解除(0)、TCNT4=$000で設定(1)11比較一致で設定(1)、TCNT4=$000で解除(0)右表はPWM4AとWG
M4 1,0ﾋﾞｯﾄが位相/周波数基準PWM動作に設定される時のCO
M4A1,0ﾋﾞｯﾄの機能を示します。

表15-8. 位相/周波数基準PWM動作比較A出力選択
COM4A1,0
OCW4Aの動き
OC4Aﾋﾟﾝ OC4Aﾋﾟﾝ00
標準ﾎﾟｰﾄ動作
切断
切断
01
上昇計数時の比較一致で解除(0)、下降計数時の比較一致で設定(1)接続
接続
10上昇計数時の比較一致で解除(0)、下降計数時の比較一致で設定(1)接続
切断
11上昇計数時の比較一致で設定(1)、下降計数時の比較一致で解除(0)接続
切断

OC4Aﾋﾟﾝ OC4Aﾋﾟﾝ
切断
切断
接続
接続
接続
切断
接続
切断

下表はPWM4AとWGM41,0ﾋﾞｯﾄが単一傾斜PWM6動作に設定される時のCOM4A1,0ﾋﾞｯﾄの機能を示します。PWM6動作では全ての波形生成に波形出力(OCW4A)が使われ、以下で記述されるようにOC4AとOC4Aが全てのOC4xとOC4xﾋﾟﾝに接続されます。
表15-9. 単一傾斜PWM6動作比較x出力選択
COM4A1,0
OCW4Aの動き
00
標準ﾎﾟｰﾄ動作
01
比較一致で解除(0)、TCNT4=$000で設定(1)10比較一致で解除(0)、TCNT4=$000で設定(1)11比較一致で設定(1)、TCNT4=$000で解除(0)右表はPWM4AとWG
M4 1,0 ﾋﾞｯﾄが両傾斜
PWM6動作に設定される時のCOM4A 1,0
ﾋﾞｯﾄの機能を示します。

OC4xﾋﾟﾝ OC4xﾋﾟﾝ
切断
切断
OC4A
OC4A
OC4A
OC4A
OC4A
OC4A

表15-10. 両傾斜PWM6動作比較x出力選択
COM4A1,0
OCW4Aの動き
OC4xﾋﾟﾝ OC4xﾋﾟﾝ00
標準ﾎﾟｰﾄ動作
切断
切断
01
上昇計数時の比較一致で解除(0)、下降計数時の比較一致で設定(1) OC4A
OC4A
10
上昇計数時の比較一致で解除(0)、下降計数時の比較一致で設定(1) OC4A
OC4A
11
上昇計数時の比較一致で設定(1)、下降計数時の比較一致で解除(0) OC4A
OC4A

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]106

● ﾋﾞｯﾄ5,4 - COM4B1,0 : 比較B出力選択 (Compare B Output Mode bits 1 and 0)

これらのﾋﾞｯﾄは波形出力(OCW4B)の動きとOC4B比較出力ﾋﾟﾝの接続を制御します。COM4B1,0ﾋﾞｯﾄの1つまたは両方が1を書かれると、OC4B出力はそのI/Oﾋﾟﾝの標準ﾎﾟｰﾄ機能を無効にし、そのI/Oﾋﾟﾝに接続されます。相互補間OC4B出力はCOM4B1,0ﾋﾞｯﾄが'01'に設定される時のPWM動作でだけ接続されます。けれども出力駆動部を許可するのにOC4AとOC4Bﾋﾟﾝに対応するﾎﾟｰﾄ方向ﾚｼﾞｽﾀ(DDR)のﾋﾞｯﾄが設定(1)されなければならないことに注意してください。
COM4B1,0ﾋﾞｯﾄの機能はPWM4BとWGM41,0ﾋﾞｯﾄ設定に依存します。
右表はPWM4Bﾋﾞｯﾄが 表15-11. 標準(非PWM)動作比較B出力選択
標準動作(つまり非P
COM4B1,0
OCW4Bの動き
OC4Bﾋﾟﾝ OC4BﾋﾟﾝWM)に設定される時
00
標準ﾎﾟｰﾄ動作
切断
切断のCOM4B 1,0 ﾋﾞｯﾄの01
比較一致でﾄｸﾞﾙ(交互切り替え)出力
接続
切断
機能を示します。
10
比較一致で解除(0)接続
切断
11比較一致で設定(1)接続
切断
右表はPWM4BとWG
M4 1,0 ﾋﾞｯﾄが高速PW
M動作に設定される時のCOM4B 1,0 ﾋﾞｯﾄの機能を示します。

表15-12. 高速PWM動作比較B出力選択
COM4B1,0
OCW4Bの動き
00
標準ﾎﾟｰﾄ動作
01
比較一致で解除(0)、TCNT4=$000で設定(1)10比較一致で解除(0)、TCNT4=$000で設定(1)11比較一致で設定(1)、TCNT4=$000で解除(0)右表はPWM4BとWG
M4 1,0ﾋﾞｯﾄが位相/周波数基準PWM動作に設定される時のCO
M4B 1,0 ﾋﾞｯﾄの機能を示します。

表15-13. 位相/周波数基準PWM動作比較B出力選択
COM4B1,0
OCW4Bの動き
OC4Bﾋﾟﾝ OC4Bﾋﾟﾝ00
標準ﾎﾟｰﾄ動作
切断
切断
01
上昇計数時の比較一致で解除(0)、下降計数時の比較一致で設定(1)接続
接続
10上昇計数時の比較一致で解除(0)、下降計数時の比較一致で設定(1)接続
切断
11上昇計数時の比較一致で設定(1)、下降計数時の比較一致で解除(0)接続
切断

OC4Bﾋﾟﾝ OC4Bﾋﾟﾝ
切断
切断
接続
接続
接続
切断
接続
切断

● ﾋﾞｯﾄ3 - FOC4A : 比較A強制変更 (Force Output Compare Match 4A)

FOC4AﾋﾞｯﾄはPWM4Aﾋﾞｯﾄが非PWM動作を指示する時だけ有効です。
このﾋﾞｯﾄへの1書き込みは波形出力(OCW4A)と既にCOM4A1,0ﾋﾞｯﾄで設定した値に従って比較出力(OC4A,OC4A)ﾋﾟﾝの変更を強制します。COM4A1,0をFOC4Aと同じ周期で書いた場合、新しい設定が使われます。比較出力強制ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ値と無関係に出力ﾋﾟﾝを変更するのに使えます。COM4A1,0で設定した自動動作は比較一致が起こった場合のように実行しますが、割り込みは生成されません。
FOC4Aﾋﾞｯﾄは常に0として読まれます。
● ﾋﾞｯﾄ2 - FOC4B : 比較B強制変更 (Force Output Compare Match 4B)

FOC4BﾋﾞｯﾄはPWM4Bﾋﾞｯﾄが非PWM動作を指示する時だけ有効です。
このﾋﾞｯﾄへの1書き込みは波形出力(OCW4B)と既にCOM4B1,0ﾋﾞｯﾄで設定した値に従って比較出力(OC4B,OC4B)ﾋﾟﾝの変更を強制します。COM4B1,0をFOC4Bと同じ周期で書いた場合、新しい設定が使われます。比較出力強制ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ値と無関係に出力ﾋﾟﾝを変更するのに使えます。COM4B1,0で設定した自動動作は比較一致が起こった場合のように実行しますが、割り込みは生成されません。
FOC4Bﾋﾞｯﾄは常に0として読まれます。
● ﾋﾞｯﾄ1 - PWM4A : PWM-A許可 (Pulse width Moduration A Enable)

設定(1)時、このﾋﾞｯﾄはOCR4A比較器を基にしたPWM動作を許可します。
● ﾋﾞｯﾄ0 - PWM4B : PWM-B許可 (Pulse width Moduration B Enable)

設定(1)時、このﾋﾞｯﾄはOCR4B比較器を基にしたPWM動作を許可します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]107

15.12.2. TCCR4B - ﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀB (Timer/Counter4 Control Register B)
ﾋﾞｯﾄ
($C1)
Read/Write
初期値

7

6

5

4

3

2

1

0

PWM4X

PSR4

DTPS41

DTPS40

CS43

CS42

CS41

CS40

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

TCCR4B● ﾋﾞｯﾄ7 - PWM4X : PWM反転動作 (PWM Inversion Mode)

このﾋﾞｯﾄが設定(1)されると、PWM反転動作が選択され、沈黙時間生成器出力、OC4xとOC4xが反転されます。
● ﾋﾞｯﾄ6 - PSR4 : ﾀｲﾏ/ｶｳﾝﾀ4前置分周器ﾘｾｯﾄ (Prescaler Reset Timer/Counter4)

このﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ4の前置分周器がﾘｾｯﾄされます(TCNT4は影響されません)。このﾋﾞｯﾄはこの動作完了後にﾊｰﾄﾞｳｪｱによって解除(0)されます。このﾋﾞｯﾄへの0書き込みは無効です。このﾋﾞｯﾄは常に0として読めます。
● ﾋﾞｯﾄ5,4 - DTPS41,0 : 沈黙時間前置分周器選択 (Dead Time Prescaler Bits)

沈黙時間生成器前の沈黙時間専用前置分周器はﾀｲﾏ/ｶｳﾝﾀ4 ｸﾛｯｸ(CKまたはPCK)を1,2,4,8分周でき、生成され得る広範囲な沈黙時間を提供します。この前置分周器はﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀB(TCCR4B)からのDTPS41,DTPS40の2つの制御ﾋﾞｯﾄによって制御されます。これらのﾋﾞｯﾄは沈黙時間前置分周器の分周値を定義します。この分周値は下表で与えられます。
表15-14. 沈黙時間前置分周器の分周値
DTPS41 DTPS40
ﾀｲﾏ/ｶｳﾝﾀ4 ｸﾛｯｸ分周数00
1 (分周なし)
0
1
2分周
1
0
4分周
1
1
8分周
● ﾋﾞｯﾄ3～0 - CS43～0 : ｸﾛｯｸ選択4 (Clock Select Bits 3,2,1 and 0)

このｸﾛｯｸ選択ﾋﾞｯﾄ3～0はﾀｲﾏ/ｶｳﾝﾀ4の前置分周元を定義します。
表15-15. ﾀｲﾏ/ｶｳﾝﾀ4 前置分周ｸﾛｯｸ選択
CS43 CS42 CS41 CS40
0
0
0
0
0
0
0
0

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

意味
CS43 CS42 CS41 CS40
非同期動作
同期動作
停止 (ﾀｲﾏ/ｶｳﾝﾀ4動作停止)
1
0
0
0
PCK
CK(CPUｸﾛｯｸ)
1
0
0
1
PCK/2
CK/2
1
0
1
0
PCK/4
CK/4
1
0
1
1
PCK/8
CK/8
1
1
0
0
PCK/16
CK/16
1
1
0
1
PCK/32
CK/32
1
1
1
0
PCK/64
CK/64
1
1
1
1

意味
非同期動作
PCK/128
PCK/256
PCK/512
PCK/1024
PCK/2048
PCK/4096
PCK/8192
PCK/16384

同期動作CK/128
CK/256
CK/512
CK/1024
CK/2048
CK/4096
CK/8192
CK/16384

停止状態はﾀｲﾏ/ｶｳﾝﾀの許可/禁止機能を提供します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

108

15.12.3. TCCR4C - ﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀC (Timer/Counter4 Control Register C)
ﾋﾞｯﾄ
($C2)
Read/Write
初期値

7

6

5

4

3

2

1

COM4A1S COM4A0S COM4B1S COM4B0S COM4D1 COM4D0 FOC4D
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

W
0

0

PWM4D

TCCR4C

R/W
0● ﾋﾞｯﾄ7,6 - COM4A1S,COM4A0S : 比較A出力選択 (Compare A Output Mode bits 1 and 0)

これらのﾋﾞｯﾄは73頁の「ﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀA(TCCR4A)」項で記述されたCOM4A1,0ﾋﾞｯﾄの投影ﾋﾞｯﾄです。
● ﾋﾞｯﾄ5,4 - COM4B1S,COM4B0S : 比較B出力選択 (Compare B Output Mode bits 1 and 0)

これらのﾋﾞｯﾄは106頁の「TCCR4A - ﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀA」項で記述されたCOM4B1,0ﾋﾞｯﾄの投影ﾋﾞｯﾄです。
● ﾋﾞｯﾄ3,2 - COM4D1,0 : 比較D出力選択 (Compare D Output Mode bits 1 and 0)

これらのﾋﾞｯﾄは波形出力(OCW4D)の動きとOC4D比較出力ﾋﾟﾝの接続を制御します。COM4D1,0ﾋﾞｯﾄの1つまたは両方が1を書かれると、OC4D出力はそのI/Oﾋﾟﾝの標準ﾎﾟｰﾄ機能を無効にし、そのI/Oﾋﾟﾝに接続されます。相互補間OC4D出力はCOM4D 1,0ﾋﾞｯﾄが'01'に設定される時のPWM動作でだけ接続されます。けれども出力駆動部を許可するのにOC4DとOC4Dﾋﾟﾝに対応するﾎﾟｰﾄ方向ﾚｼﾞｽﾀ(DDR)のﾋﾞｯﾄが設定(1)されなければならないことに注意してください。
COM4D1,0ﾋﾞｯﾄの機能はPWM4DとWGM41,0ﾋﾞｯﾄ設定に依存します。
右表はPWM4Dﾋﾞｯﾄ 表15-16. 標準(非PWM)動作比較D出力選択
が標準動作(つまり非COM4D1,0
OCW4Dの動き
OC4Dﾋﾟﾝ OC4Dﾋﾟﾝ
PWM)に設定される時
00
標準ﾎﾟｰﾄ動作
切断
切断のCOM4D 1,0 ﾋﾞｯﾄの01
比較一致でﾄｸﾞﾙ(交互切り替え)出力
接続
切断
機能を示します。
10
比較一致で解除(0)接続
切断
11比較一致で設定(1)接続
切断
右表はPWM4DとWG
M4 1,0 ﾋﾞｯﾄが高速PW
M動作に設定される時のCOM4D 1,0 ﾋﾞｯﾄの機能を示します。

表15-17. 高速PWM動作比較D出力選択
COM4D1,0
OCW4Dの動き
00
標準ﾎﾟｰﾄ動作
01
比較一致で解除(0)、TCNT4=$000で設定(1)10比較一致で解除(0)、TCNT4=$000で設定(1)11比較一致で設定(1)、TCNT4=$000で解除(0)右表はPWM4DとWG
M4 1,0ﾋﾞｯﾄが位相/周波数基準PWM動作に設定される時のCO
M4D 1,0ﾋﾞｯﾄの機能を示します。

表15-18. 位相/周波数基準PWM動作比較D出力選択
COM4D1,0
OCW4Dの動き
OC4Dﾋﾟﾝ OC4Dﾋﾟﾝ00
標準ﾎﾟｰﾄ動作
切断
切断
01
上昇計数時の比較一致で解除(0)、下降計数時の比較一致で設定(1)接続
接続
10上昇計数時の比較一致で解除(0)、下降計数時の比較一致で設定(1)接続
切断
11上昇計数時の比較一致で設定(1)、下降計数時の比較一致で解除(0)接続
切断

OC4Dﾋﾟﾝ OC4Dﾋﾟﾝ
切断
切断
接続
接続
接続
切断
接続
切断

● ﾋﾞｯﾄ1 - FOC4D : 比較D強制変更 (Force Output Compare Match 4D)

FOC4DﾋﾞｯﾄはPWM4Dﾋﾞｯﾄが非PWM動作を指示する時だけ有効です。
このﾋﾞｯﾄへの1書き込みは波形出力(OCW4D)と既にCOM4D1,0ﾋﾞｯﾄで設定した値に従って比較出力(OC4D,OC4D)ﾋﾟﾝの変更を強制します。COM4D1,0をFOC4Dと同じ周期で書いた場合、新しい設定が使われます。比較出力強制ﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ値と無関係に出力ﾋﾟﾝを変更するのに使えます。COM4D1,0で設定した自動動作は比較一致が起こった場合のように実行しますが、割り込みは生成されません。
FOC4Dﾋﾞｯﾄは常に0として読まれます。
● ﾋﾞｯﾄ0 - PWM4D : PWM-D許可 (Pulse width Moduration D Enable)

設定(1)時、このﾋﾞｯﾄはOCR4D比較器を基にしたPWM動作を許可します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]109

15.12.4. TCCR4D - ﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀD (Timer/Counter4 Control Register D)
ﾋﾞｯﾄ
($C3)
Read/Write
初期値

7

6

5

4

3

2

1

0

FPIE4

FPEN4

FPNC4

FPES4

FPAC4

FPF4

WGM41

WGM40

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

TCCR4D● ﾋﾞｯﾄ7 - FPIE4 : 障害保護割り込み許可 (Fault Protection Interrupt Enable)

このﾋﾞｯﾄの(1への)設定が障害保護割り込みを許可します。
● ﾋﾞｯﾄ6 - FPEN4 : 障害保護動作許可 (Fault Protection Mode Enable)

このﾋﾞｯﾄの(1への)設定が障害保護動作を活性(有効)にします。
● ﾋﾞｯﾄ5 - FPNC4 : 障害保護雑音消去許可 (Fault Protection Noise Canceler)

このﾋﾞｯﾄの(1)設定が障害保護雑音消去器を活性(有効)にします。雑音消去器が有効にされると、障害保護入力(INT0)ﾋﾟﾝからの入力が濾波されます。この濾波器機能はそれが出力を更新するのに対して連続4回等しく評価されたINT0ﾋﾟﾝの採取を必要とします。
従って障害保護は雑音消去器が許可される時に4発振器(ｼｽﾃﾑ ｸﾛｯｸ)周期遅らされます。
● ﾋﾞｯﾄ4 - FPES4 : 障害保護起動入力端選択 (Fault Protection Edge Select)

このﾋﾞｯﾄは障害事象を起動するのに使われる障害保護入力(INT0)ﾋﾟﾝのどちらかのｴｯｼﾞを選択します。FPES4ﾋﾞｯﾄが0を書かれると起動動作として下降(負)端が使われ、FPES4ﾋﾞｯﾄが1を書かれると上昇(正)端が障害を起動します。
● ﾋﾞｯﾄ3 - FPAC4 : 障害保護ｱﾅﾛｸﾞ比較器許可 (Fault Protection Analog Comparator Enable)

論理1を書かれると、このﾋﾞｯﾄはｱﾅﾛｸﾞ比較器によって起動されるﾀｲﾏ/ｶｳﾝﾀ4の障害保護機能を許可します。この場合、比較器出力
は比較器にﾀｲﾏ/ｶｳﾝﾀ4障害保護割り込みの雑音消去機能とｴｯｼﾞ選択機能を利用させる障害保護前置論理回路へ直接的に接続されます。論理0を書かれると、ｱﾅﾛｸﾞ比較器と障害保護機能間の接続は存在しません。比較器がﾀｲﾏ/ｶｳﾝﾀ4障害保護割り込みを起動するにはﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀD(TCCR1D)の障害保護割り込み許可(FPIE4)ﾋﾞｯﾄが設定(1)されなければなりません。
● ﾋﾞｯﾄ2 - FPF4 : 障害保護割り込み要求ﾌﾗｸﾞ (Fault Protection Interrupt Flag)

FPIE4ﾋﾞｯﾄが設定(1)されると、障害保護割り込みが許可されます。ﾋﾟﾝ上の動きは例え障害保護ﾋﾟﾝが出力として設定されていても割り込み要求を引き起こします。障害保護割り込み要求に対応する割り込みは障害保護割り込みﾍﾞｸﾀから実行されます。FPF4ﾋﾞｯﾄは対応する割り込み処理ﾍﾞｸﾀを実行するとき、ﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにFPF4はこのﾌﾗｸﾞへの論理1書き込みによっても同期化ｸﾛｯｸ周期後に解除(0)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄ、FP1E4とFPF4が設定(1)される時に障害保護割り込みが実行されます。
● ﾋﾞｯﾄ1,0 - WGM41,0 : 波形生成種別 (Waveform Generation Mode Bits)

PWM4xﾋﾞｯﾄと組み合わせたこれらのﾋﾞｯﾄはｶｳﾝﾀの計数順序(方向)と使われるべき波形生成のどの形式かを制御します(下表参照)。
ﾀｲﾏ/ｶｳﾝﾀ4によって支援される動作種別は標準動作(ｶｳﾝﾀ)、高速PWM動作、位相/周波数基準PWM動作とPWM6動作です。
表15-19. 波形生成種別選択
ﾀｲﾏ/ｶｳﾝﾀ動作種別
PWM4x
WGM41,0
標準動作
0xx
高速PWM動作100
位相/周波数基準PWM動作
101
単一傾斜PWM6動作
1
10
11
1
両傾斜PWM6動作

TOP値
OCR4C
OCR4C
OCR4C
OCR4C
OCR4C

OCR4x更新時
即時
TOP
BOTTOMTOP
BOTTOM

TOV4設定時TOPTOP
BOTTOMTOP
BOTTOM

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]110

15.12.5. TCCR4E - ﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀE (Timer/Counter4 Control Register E)
ﾋﾞｯﾄ
($C4)
Read/Write
初期値

7

6

TLOCK4

ENHC4

R/W
0

R/W
0

5

4

3

2

1

0

OC4OE5 OC4OE4 OC4OE3 OC4OE2 OC4OE1 OC4OE0 TCCR4E
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

● ﾋﾞｯﾄ7 - TLOCK4 : ﾚｼﾞｽﾀ更新固定化 (Register Update Lock)

このﾋﾞｯﾄは比較ﾚｼﾞｽﾀの更新を制御します。このﾋﾞｯﾄが設定(1)されると、比較ﾚｼﾞｽﾀへの書き込みは出力に影響を及ぼしませんが、その値は格納され、TLOCK4ﾋﾞｯﾄが解除(0)される時に比較ﾚｼﾞｽﾀが(その値で)更新されます。
より多くの詳細については96頁の「同期更新」項を参照してください。
● ﾋﾞｯﾄ6 - ENHC4 : 増強化比較/PWM動作許可 (Enhanced Compare/PWM Mode)

このﾋﾞｯﾄが設定(1)されると、波形生成部は増強動作で働きます。増強動作ではOCR4A/B/D比較ﾚｼﾞｽﾀが更なる1つの精度ﾋﾞｯﾄを受
け入れることができ、一方LSBは比較条件が合図されるのと出力ﾋﾟﾝのﾚﾍﾞﾙが更新されるのがどちらのｸﾛｯｸ端かを決めます。
● ﾋﾞｯﾄ5～0 - OC4OE5～OC4OE0 : 比較出力での無効化許可 (Output Compare Override Enable Bits)

これらのﾋﾞｯﾄは対応する比較出力ﾋﾟﾝでの瞬時応答を持つPWM6動作で比較出力ﾋﾟﾝを接続または切断する、比較出力での(標準ﾎﾟｰﾄ機能)無効化許可ﾋﾞｯﾄです。比較出力での無効化許可ﾋﾞｯﾄが解除(0)されると、ﾎﾟｰﾄ出力ﾚｼﾞｽﾀからの実際の値がﾎﾟｰﾄ ﾋﾟﾝで見えるでしょう。この表は比較出力での無効化許可ﾋﾞｯﾄとそれらに対応する比較出力ﾋﾟﾝを示します。
表15-20. 比較出力での無効化許可ﾋﾞｯﾄ 対 比較出力ﾋﾟﾝ
OC4OE3
OC4OE2
OC4OE5
OC4OE4OC4B (PB5)
OC4D (PD7) OC4D (PD6)
OC4B(PB6)

OC4OE1
OC4A (PC7)OC4OE0
OC4A (PC6)

15.12.6. TCNT4 - ﾀｲﾏ/ｶｳﾝﾀ4 (Timer/Counter4)
ﾋﾞｯﾄ
($BE)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

TCNT4

R/W
0

この8ﾋﾞｯﾄ ﾚｼﾞｽﾀはﾀｲﾏ/ｶｳﾝﾀ4の下位ﾊﾞｲﾄを含みます。
ﾀｲﾏ/ｶｳﾝﾀ4は読み書きｱｸｾｽで10ﾋﾞｯﾄ昇降ｶｳﾝﾀとして実現されます。CPUの同期化のため、ﾀｲﾏ/ｶｳﾝﾀ4に書かれたﾀｲﾏ/ｶｳﾝﾀ4
ﾃﾞｰﾀは同期動作で1.5CPUｸﾛｯｸ周期、非同期動作で更に1CPUｸﾛｯｸ周期遅延されます。10ﾋﾞｯﾄ精度が好まれる時は8ﾋﾞｯﾄ AVRﾃﾞｰ
ﾀ ﾊﾞｽ経由での10ﾋﾞｯﾄTCNT4ｱｸｾｽに関して特別な手順に従わなければなりません。これらの手順は104頁の「10ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」項で記述されます。代わりにﾀｲﾏ/ｶｳﾝﾀ4は8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀとしても使えます。ﾀｲﾏ/ｶｳﾝﾀ4が常にTCNT4ﾚｼﾞｽﾀ書き込み後に計数を開始することに注意してください。

15.12.7. TC4H - ﾀｲﾏ/ｶｳﾝﾀ4上位ﾊﾞｲﾄ ﾚｼﾞｽﾀ (Timer/Counter4 High Byte)
ﾋﾞｯﾄ
($BF)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

-

TC410

TC49

TC48

R
0

R
0

R
0

R
0

R
0

R/W
0

R/W
0

R/W
0

TC4H

このﾀｲﾏ/ｶｳﾝﾀ4一時ﾚｼﾞｽﾀは3ﾋﾞｯﾄ読み書きﾚｼﾞｽﾀです。
● ﾋﾞｯﾄ7～3 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ2 - TC410 : 増強動作11ﾋﾞｯﾄ ｱｸｾｽ用追加最上位ﾋﾞｯﾄ (Additional MSB bits for 11-bit accesses in Enhanced PWM mode)

増強動作で11ﾋﾞｯﾄを扱う場合のOCR4A/B/D比較ﾚｼﾞｽﾀ用の最上位ﾋﾞｯﾄです。これらﾚｼﾞｽﾀへのｱｸｾｽは107頁の「10ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱ
ｸｾｽ」項の手順に準じなければなりません。増強動作の詳細については96頁の「増強された比較/PWM動作」をご覧ください。(訳注:本ﾋﾞｯﾄ記述全体を変更)● ﾋﾞｯﾄ1,0 - TC49,8 : 10ﾋﾞｯﾄ ｱｸｾｽの上位2ﾋﾞｯﾄ (Two MSB bits of the 10-bit accesses)

通常動作で10ﾋﾞｯﾄ精度が使われる場合、ﾀｲﾏ/ｶｳﾝﾀ4上位ﾊﾞｲﾄ ﾚｼﾞｽﾀは10ﾋﾞｯﾄ ｱｸｾｽのMSB(TC49,TC48)ﾋﾞｯﾄを一時的に格納するのに使われます。ﾀｲﾏ/ｶｳﾝﾀ4内の全10ﾋﾞｯﾄ ﾚｼﾞｽﾀ間で同じTC4Hﾚｼﾞｽﾀが共用されます。10ﾋﾞｯﾄTCNT4を8ﾋﾞｯﾄ AVRﾃﾞｰﾀ ﾊﾞｽ経由でｱｸｾｽする時に特別な手順に従わなければならないことに注意してください。これらの手順は104頁の「10ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」項で記述されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]111

15.12.8. OCR4A - ﾀｲﾏ/ｶｳﾝﾀ4 比較Aﾚｼﾞｽﾀ (Timer/Counter4 Output Compare Register A)
ﾋﾞｯﾄ
($CF)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR4A

R/W
0

この比較Aﾚｼﾞｽﾀは8ﾋﾞｯﾄ読み書きﾚｼﾞｽﾀです。
比較Aﾚｼﾞｽﾀは継続的にﾀｲﾏ/ｶｳﾝﾀ(TCNT4)と比較されるﾃﾞｰﾀを含みます。比較一致での動作はﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀA(TCCR4A)で指定されます。比較一致はﾀｲﾏ/ｶｳﾝﾀ4がOCR4A値へ計数する場合にだけ起こります。TCNT4とOCR4Aを同じ値に設定するｿ
ﾌﾄｳｪｱ書き込みは比較一致を生成しません。
比較一致は比較事象に続く同期化遅延後に比較A一致割り込み要求ﾌﾗｸﾞ(OCF4A)を設定(1)します。
10(11)ﾋﾞｯﾄ精度が使われる場合、8ﾋﾞｯﾄ AVRﾃﾞｰﾀ ﾊﾞｽ経由で10ﾋﾞｯﾄ比較A内部ﾚｼﾞｽﾀをｱｸｾｽする時に特別な手順に従わなければならないことに注意してください。これらの手順は104頁の「10ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」項で記述されます。

15.12.9. OCR4B - ﾀｲﾏ/ｶｳﾝﾀ4 比較Bﾚｼﾞｽﾀ (Timer/Counter4 Output Compare Register B)
ﾋﾞｯﾄ
($D0)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR4B

R/W
0

この比較Bﾚｼﾞｽﾀは8ﾋﾞｯﾄ読み書きﾚｼﾞｽﾀです。
比較Bﾚｼﾞｽﾀは継続的にﾀｲﾏ/ｶｳﾝﾀ(TCNT4)と比較されるﾃﾞｰﾀを含みます。比較一致での動作はﾀｲﾏ/ｶｳﾝﾀ4制御ﾚｼﾞｽﾀA(TCCR4A)で指定されます。比較一致はﾀｲﾏ/ｶｳﾝﾀ4がOCR4B値へ計数する場合にだけ起こります。TCNT4とOCR4Bを同じ値に設定するｿﾌ
ﾄｳｪｱ書き込みは比較一致を生成しません。
比較一致は比較事象に続く同期化遅延後に比較B一致割り込み要求ﾌﾗｸﾞ(OCF4B)を設定(1)します。
10(11)ﾋﾞｯﾄ精度が使われる場合、8ﾋﾞｯﾄ AVRﾃﾞｰﾀ ﾊﾞｽ経由で10ﾋﾞｯﾄ比較B内部ﾚｼﾞｽﾀをｱｸｾｽする時に特別な手順に従わなければならないことに注意してください。これらの手順は104頁の「10ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」項で記述されます。

15.12.10. OCR4C - ﾀｲﾏ/ｶｳﾝﾀ4 比較Cﾚｼﾞｽﾀ (Timer/Counter4 Output Compare Register C)
ﾋﾞｯﾄ
($D1)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR4C

R/W
0

この比較Cﾚｼﾞｽﾀは8ﾋﾞｯﾄ読み書きﾚｼﾞｽﾀです。
比較Cﾚｼﾞｽﾀは継続的にﾀｲﾏ/ｶｳﾝﾀ(TCNT4)と比較されるﾃﾞｰﾀを含み、比較一致はTCNT4を解除(=$000)します。このﾚｼﾞｽﾀは標準動作とPWM動作で同じ機能を持ちます。
3より小さな値が比較Cﾚｼﾞｽﾀに書かれると、このﾚｼﾞｽﾀへ書き込むことが許された最小値である3によって置換されることに注意してください。
10ﾋﾞｯﾄ精度が使われる場合、8ﾋﾞｯﾄ AVRﾃﾞｰﾀ ﾊﾞｽ経由で10ﾋﾞｯﾄ比較C内部ﾚｼﾞｽﾀをｱｸｾｽする時に特別な手順に従わなければならないことに注意してください。これらの手順は104頁の「10ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」項で記述されます。

15.12.11. OCR4D - ﾀｲﾏ/ｶｳﾝﾀ4 比較Dﾚｼﾞｽﾀ (Timer/Counter4 Output Compare Register D)
ﾋﾞｯﾄ
($D2)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
0

0

(LSB)
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCR4D

R/W
0

この比較Dﾚｼﾞｽﾀは8ﾋﾞｯﾄ読み書きﾚｼﾞｽﾀです。
比較Dﾚｼﾞｽﾀは継続的にﾀｲﾏ/ｶｳﾝﾀ(TCNT4)と比較されるﾃﾞｰﾀを含みます。比較一致での動作はﾀｲﾏ/ｶｳﾝﾀ1制御ﾚｼﾞｽﾀC(TCCR4C)で指定されます。比較一致はﾀｲﾏ/ｶｳﾝﾀ4がOCR4D値へ計数する場合にだけ起こります。TCNT4とOCR4Dを同じ値に設定するｿ
ﾌﾄｳｪｱ書き込みは比較一致を生成しません。
比較一致は比較事象に続く同期化遅延後に比較D一致割り込み要求ﾌﾗｸﾞ(OCF4D)を設定(1)します。
10(11)ﾋﾞｯﾄ精度が使われる場合、8ﾋﾞｯﾄ AVRﾃﾞｰﾀ ﾊﾞｽ経由で10ﾋﾞｯﾄ比較D内部ﾚｼﾞｽﾀをｱｸｾｽする時に特別な手順に従わなければならないことに注意してください。これらの手順は104頁の「10ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ」項で記述されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]112

15.12.12. TIMSK4 - ﾀｲﾏ/ｶｳﾝﾀ4 割り込み許可ﾚｼﾞｽﾀ (Timer/Counter4 Interrupt Mask Register)
ﾋﾞｯﾄ
($72)
Read/Write
初期値

7

6

5

4

3

2

1

0

OCIE4DOCIE4A

OCIE4B

-

-

TOIE4

-

-

R/W
0

R/W
0

R/W
0

R
0

R
0

R/W
0

R
0

R
0

TIMSK4● ﾋﾞｯﾄ7 - OCIE4D : ﾀｲﾏ/ｶｳﾝﾀ4比較D割り込み許可 (Timer/Counter4 Output Compare Match D Interrupt Enable)

OCIE4Dﾋﾞｯﾄが設定(1)され、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ4比較D一致割り込みが許可されます。比較D一致が起きると、ﾍﾞｸﾀ$0050の対応する割り込みが実行されます。ﾀｲﾏ/ｶｳﾝﾀ4の比較D一致ﾌﾗｸﾞ(OCF4D)がﾀｲﾏ/ｶｳﾝﾀ4割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFR4)で設定(1)されます。
● ﾋﾞｯﾄ6 - OCIE4A : ﾀｲﾏ/ｶｳﾝﾀ4比較A割り込み許可 (Timer/Counter4 Output Compare Match A Interrupt Enable)

OCIE4Aﾋﾞｯﾄが設定(1)され、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ4比較A一致割り込みが許可されます。比較A一致が起きると、ﾍﾞｸﾀ$004Cの対応する割り込みが実行されます。ﾀｲﾏ/ｶｳﾝﾀ4の比較A一致ﾌﾗｸﾞ(OCF4A)がﾀｲﾏ/ｶｳﾝﾀ4割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFR4)で設定(1)されます。
● ﾋﾞｯﾄ5 - OCIE4B : ﾀｲﾏ/ｶｳﾝﾀ4比較B割り込み許可 (Timer/Counter4 Output Compare Match B Interrupt Enable)

OCIE4Bﾋﾞｯﾄが設定(1)され、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ4比較B一致割り込みが許可されます。比較B一致が起きると、ﾍﾞｸﾀ$004Aの対応する割り込みが実行されます。ﾀｲﾏ/ｶｳﾝﾀ4の比較B一致ﾌﾗｸﾞ(OCF4B)がﾀｲﾏ/ｶｳﾝﾀ4割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFR4)で設定(1)されます。
● ﾋﾞｯﾄ2 - TOIE4 : ﾀｲﾏ/ｶｳﾝﾀ4溢れ割り込み許可 (Timer/Counter4 Overflow Interrupt Enable)

TOIE4ﾋﾞｯﾄが設定(1)され、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ4溢れ割り込みが許可されます。ﾀｲﾏ/ｶｳﾝﾀ4溢れが起きると、(ﾍﾞｸﾀ$0052の)対応する割り込みが実行されます。(ﾀｲﾏ/ｶｳﾝﾀ4)溢れ割り込み要求(TOV4)ﾌﾗｸﾞ
はﾀｲﾏ/ｶｳﾝﾀ4割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ(TIFR4)で設定(1)されます。

15.12.13. TIFR4 - ﾀｲﾏ/ｶｳﾝﾀ4 割り込み要求ﾌﾗｸﾞ ﾚｼﾞｽﾀ (Timer/Counter4 Interrupt Flag Register)ﾋﾞｯﾄ$19 ($39)
Read/Write
初期値

7

6

5

4

3

2

1

0

OCF4D

OCF4A

OCF4B

-

-

TOV4

-

-

R/W
0

R/W
0

R/W
0

R
0

R
0

R/W
0

R
0

R
0

TIFR4

● ﾋﾞｯﾄ7 - OCF4D : ﾀｲﾏ/ｶｳﾝﾀ4比較D割り込み要求ﾌﾗｸﾞ (Timer/Conter4, Output Compare D Match Flag)

OCF4Dﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ4(TCNT4)と比較Dﾚｼﾞｽﾀ(OCR4D)のﾃﾞｰﾀ値間で比較一致が起こる時に設定(1)されます。対応する割り込
み処理ﾍﾞｸﾀ実行時にOCF4Dはﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにこのﾌﾗｸﾞへの論理1書き込みによっても同期化ｸﾛｯｸ周期後にOCF4Dが解除(0)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄ、ﾀｲﾏ/ｶｳﾝﾀ4割り込み許可ﾚｼﾞｽﾀ(TIMSK4)のﾀｲ
ﾏ/ｶｳﾝﾀ4比較D一致割り込み許可(OCIE4D)ﾋﾞｯﾄ、OCF4Dが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ4比較D一致割り込みが実行されます。
● ﾋﾞｯﾄ6 - OCF4A : ﾀｲﾏ/ｶｳﾝﾀ4比較A割り込み要求ﾌﾗｸﾞ (Timer/Conter4, Output Compare A Match Flag)

OCF4Aﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ4(TCNT4)と比較Aﾚｼﾞｽﾀ(OCR4A)のﾃﾞｰﾀ値間で比較一致が起こる時に設定(1)されます。対応する割り込
み処理ﾍﾞｸﾀを実行すると、OCF4Aはﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにこのﾌﾗｸﾞへの論理1書き込みによっても同期化ｸﾛｯ
ｸ周期後にOCF4Aが解除(0)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄ、ﾀｲﾏ/ｶｳﾝﾀ4割り込み許可ﾚｼﾞｽﾀ(TIMSK4)のﾀｲﾏ/ｶｳﾝﾀ4比較A一致割り込み許可(OCIE4A)ﾋﾞｯﾄ、OCF4Aが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ4比較A一致割り込みが実行されます。
● ﾋﾞｯﾄ5 - OCF4B : ﾀｲﾏ/ｶｳﾝﾀ4比較B割り込み要求ﾌﾗｸﾞ (Timer/Conter4, Output Compare B Match Flag)

OCF4Bﾋﾞｯﾄはﾀｲﾏ/ｶｳﾝﾀ4(TCNT4)と比較Bﾚｼﾞｽﾀ(OCR4B)のﾃﾞｰﾀ値間で比較一致が起こる時に設定(1)されます。対応する割り込
み処理ﾍﾞｸﾀを実行すると、OCF4Bはﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにこのﾌﾗｸﾞへの論理1書き込みによっても同期化ｸﾛｯ
ｸ周期後にOCF4Bが解除(0)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄ、ﾀｲﾏ/ｶｳﾝﾀ4割り込み許可ﾚｼﾞｽﾀ(TIMSK4)のﾀｲﾏ/ｶｳﾝﾀ4比較B一致割り込み許可(OCIE4B)ﾋﾞｯﾄ、OCF4Bが設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ4比較B一致割り込みが実行されます。
● ﾋﾞｯﾄ2 - TOV4 : ﾀｲﾏ/ｶｳﾝﾀ4溢れ割り込み要求ﾌﾗｸﾞ (Timer/Counter4 Overflow Flag)

標準動作と高速PWM動作でのTOV4ﾋﾞｯﾄはｶｳﾝﾀがTOPに達する時毎で、ｶｳﾝﾀがBOTTOMにﾘｾｯﾄされる時と同じｸﾛｯｸ周期で設定(1)されます。位相/周波数基準PWM動作でのTOV4ﾋﾞｯﾄはBOTTOMに達する時毎で、$000がｶｳﾝﾀへ計数される時と同じｸﾛｯｸ周期
で設定(1)されます。
対応する割り込み処理ﾍﾞｸﾀを実行すると、TOV4はﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにこのﾌﾗｸﾞへの論理1書き込みによっても同期化ｸﾛｯｸ周期後にTOV4が解除(0)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄ、ﾀｲﾏ/ｶｳﾝﾀ4割り込み許可ﾚｼﾞ
ｽﾀ(TIMSK4)のﾀｲﾏ/ｶｳﾝﾀ4溢れ割り込み許可(TOIE4)ﾋﾞｯﾄ、TOV4が設定(1)されると、ﾀｲﾏ/ｶｳﾝﾀ4溢れ割り込みが実行されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]113

15.12.14. DT4 - ﾀｲﾏ/ｶｳﾝﾀ4 沈黙時間値ﾚｼﾞｽﾀ (Timer/Counter4 Dead Time Value)
ﾋﾞｯﾄ
($D4)
Read/Write
初期値

7

6

5

4

3

2

1

0

DT4H3

DT4H2

DT4H1

DT4H0

DT4L3

DT4L2

DT4L1

DT4L0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

DT4

この沈黙時間値ﾚｼﾞｽﾀは8ﾋﾞｯﾄ読み書きﾚｼﾞｽﾀです。
ﾀｲﾏ/ｶｳﾝﾀ4の全ﾁｬﾈﾙの沈黙時間遅延は沈黙時間値ﾚｼﾞｽﾀ(DT4)によって調節されます。このﾚｼﾞｽﾀは各相互補完出力に対して1
組のDT4H3～0とDT4L3～0の2つの領域から成ります。従ってOC4xの上昇端とOC4xの上昇端に対して異なる沈黙時間遅延に調節できます。
● ﾋﾞｯﾄ7～4 - DT4H3～0 : OC4x沈黙時間 (Dead Time Value for OC4x Output)

OC4x出力に対する沈黙時間値です。沈黙時間遅延は前置分周したﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ数として設定されます。最小沈黙時間は0で、最大沈黙時間は前置分周したﾀｲﾏ/ｶｳﾝﾀ4 ｸﾛｯｸ周期×15です。
● ﾋﾞｯﾄ3～0 - DT4L3～0 : OC4x沈黙時間 (Dead Time Value for OC4x Output)

OC4x出力に対する沈黙時間値です。沈黙時間遅延は前置分周したﾀｲﾏ/ｶｳﾝﾀ ｸﾛｯｸ数として設定されます。最小沈黙時間は0で、最大沈黙時間は前置分周したﾀｲﾏ/ｶｳﾝﾀ4 ｸﾛｯｸ周期×15です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]114

16. 比較出力変調器 (OCM1C0A)
16.1. 概要
比較出力変調器(OCM)は搬送波を変調した波形の生成を許します。この変調器は16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ1の比較C出力部と8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ0の比較A出力部
からの出力を使います。これらのﾀｲﾏ/ｶｳﾝﾀについてのより多くの詳細に関しては69頁の「16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ(ﾀｲﾏ/ｶｳﾝﾀ1,ﾀｲﾏ/ｶｳﾝﾀ3)」と57頁の「8ﾋﾞｯﾄ ﾀｲ
ﾏ/ｶｳﾝﾀ0(PWM付き)」をご覧ください。
この変調器が許可されると、構成図(図16-1.)で示されるように2つの比較出力が共に変調されます。

図16-1. 比較出力変調器構成図
ﾀｲﾏ/ｶｳﾝﾀ1

OC1C

ﾀｲﾏ/ｶｳﾝﾀ0

OC0A

PB7
OC1C
OC0A

16.2. 説明
比較1C出力部と比較0A出力部は出力に関してPB7ﾎﾟｰﾄ ﾋﾟﾝを共用します。比較出力部の出力(OC1CとOC0A)はこれらの1つが許可(換言すると、COMnx1,0≠00に)されると、標準PORTB7ﾚｼﾞｽﾀを無効にします。OC1CとOC0Aの両方が同時に許可されると、この変調器が自動的に許可されます。
この変調器の機能等価回路図は図16-2.で示されます。この図はﾀｲﾏ/ｶｳﾝﾀ部とﾎﾟｰﾄBのﾋﾞｯﾄ7ﾋﾟﾝ出力駆動回路部分を含みます。
図16-2. 比較出力変調器等価回路図
COM0A1
COM0A0
COM1C1
COM1C0(T/C1C波形生成器から)

VCC
変調器
D

0
1

Q

OC1C
(T/C0A波形生成器から)

D

PB7
OC1C
OC0A

1
0

Q

OC0A
D

Q

D

8-bit Data Bus

PORTB7Q

DDRB7

変調器が許可されると、PORTB7ﾚｼﾞｽﾀによって変調形式(論理積(AND)または論理和(OR))が選択できます。PORTB7=0の時は論理積(AND)が実行され、PORTB7=1の時は論理和(OR)が実行されます(図16-3.)。
COMnx1,0ﾋﾞｯﾄ設定に拘らず、DDB7がﾎﾟｰﾄの方向を制御することに注意してください。

16.2.1. ﾀｲﾐﾝｸﾞ例
図16-3.は変調器の動作を図解します。この例でのﾀｲﾏ/ｶｳﾝﾀ1は(非反転)高速PWM動作に設定され、ﾀｲﾏ/ｶｳﾝﾀ0は比較交互出力(COM01,0=01)のCTC波形動作を使用します。
図16-3. 比較出力変調器ﾀｲﾐﾝｸﾞ図

clkI/OOC1C(FPWM動作)
OC0A(CTC動作)
PB7(PORTB7=0)
PB7(PORTB7=1)
周期

1

2

3

この例ではﾀｲﾏ/ｶｳﾝﾀ0が搬送波を供給し、一方変調する信号(変調波)はﾀｲﾏ/ｶｳﾝﾀ1の比較C出力によって生成されます。
PWM信号(OC1C)の分解能は変調によって減らされます。この減少係数は搬送波(OC0A)1周期のｼｽﾃﾑ ｸﾛｯｸ周期数と等価です。この例の分解能は係数2で減らされます(即ち1/2)。この減少理由は図16-3.のPORTB7=0時のPB7出力の第2周期と第3周期で図解されます。第2周期のHigh区間は第3周期のHigh区間よりも1周期長いけれども、PB7出力の結果は両周期で等しくなります。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]115

17. 直列周辺ｲﾝﾀｰﾌｪｰｽ (SPI: Serial Peripheral Interface)

8-bit Data Bus

SPIE
SPE
DORD
MSTR
CPOL
CPHA
SPR1
SPR0

SPI2X

÷2
÷4
÷8
÷16
÷32
÷64
÷128

SPIF
WCOL

移動クロック

SPI従装置動作では制御論理回路がSCKﾋﾟﾝの到
着信号を採取します。このｸﾛｯｸ信号の正しい採取を保証するため、High/Lowの最小時間は各々2CPUｸﾛｯｸ周期よりも長くあるべきです。
SPIが許可されると、MOSI, MISO, SCK, SSﾋﾟﾝのﾃﾞｰﾀ方向は右表に従って無視されます。自動的
なﾎﾟｰﾄ無視のより多くの詳細については44頁の「交換ﾎﾟｰﾄ機能」を参照してください。

ピン制御回路直列周辺ｲﾝﾀｰﾌｪｰｽはATmega16U4/32U4と、様々なAVRﾃﾞﾊﾞｲｽや周辺ﾃﾞﾊﾞｲｽ間の高速同期ﾃﾞｰﾀ転送を許します。SPIは次の特徴を含みます。
図17-1. SPI構成図
・ 全二重3線同期ﾃﾞｰﾀ転送
・ 主装置/従装置動作
S
MISO
clkI/O・ LSB/MSB先行ﾃﾞｰﾀ転送
M
MSB (SPDR) LSB
・ 設定変更可能な7つのﾋﾞｯﾄ速度
M
MOSI
分周器
8ﾋﾞｯﾄ移動ﾚｼﾞｽﾀ
S・ 送信完了割り込み要求ﾌﾗｸﾞ
・ 送信上書きﾌﾗｸﾞ保護・ ｱｲﾄﾞﾙ動作からの起動
・ 倍速(CK/2)主装置SPI動作
受信ﾃﾞｰﾀ緩衝部
USARTはSPI主装置動作も使えます。
(M)
S
SCK
140頁の「USARTでのSPI動作」をごｸﾛｯｸ回路選択
M
SPI
覧ください。28頁の「PRR0 - 電力削
割り込み
SS
減ﾚｼﾞｽﾀ」のPRSPIﾋﾞｯﾄはSPI部を許可要求するために0を書かれなければなりま
せん。
SPI制御回路
SPIでの主装置と従装置のCPU間相互連結は図17-2.で示されます。このｼｽﾃﾑは2つの移動ﾚｼﾞｽﾀと主装置ｸﾛｯｸ発生器から成ります。SPI主装置は希望した従装置のSS(従装置選択)
SPI状態ﾚｼﾞｽﾀ
SPI制御ﾚｼﾞｽﾀ(SPSR)(SPCR)
ﾋﾟﾝをLowへ引き込む時に一群の通信を開始します。主装置と従装置は各々の移動ﾚｼﾞｽﾀに送出すべきﾃﾞｰﾀ 注: SPIﾋﾟﾝ配置については2頁の「ﾋﾟﾝ配置」と45頁の表11-3.を参照してください。
を用意し、主装置はﾃﾞｰﾀを交換するのに必要なｸﾛｯｸ ﾊﾟﾙｽをSCK信号線に生成します。ﾃﾞｰﾀは常にMOSI(Master Out Slave In)信号線を主装置から従装置へ、MISO(Master In Slave Out)信号線を従装置から主装置へ移動されます。各ﾃﾞｰﾀ ﾊﾟｹｯﾄ後、主装置はSS(従装置選択)ﾋﾟﾝをHighへ引き上げることによって従装置と同期を取ります。
主装置として設定されると、SPIｲﾝﾀｰﾌｪｰｽにはSS信号線の自動制御がありません。これは通信が開始できるのに先立って使用者ｿﾌ
ﾄｳｪｱによって操作されなければなりません。これが行われると、SPIﾃﾞｰﾀ ﾚｼﾞｽﾀ(SPDR)へのﾊﾞｲﾄ書き込みがSPIｸﾛｯｸ発生器を始動
し、ﾊｰﾄﾞｳｪｱが従装置内へ8ﾋﾞｯﾄを移動します。1ﾊﾞｲﾄの移動後、SPIｸﾛｯｸ発生器は停止し、SPI状態ﾚｼﾞｽﾀ(SPSR)の転送完了ﾌﾗｸﾞ(SPIF)を設定(1)します。SPI制御ﾚｼﾞｽﾀ(SPCR)でSPI割り込み許可(SPIE)ﾋﾞｯﾄが設定(1)されていれば割り込みが要求されます。主装
置はSPDR内へ次ﾊﾞｲﾄを書くことによって次ﾊﾞｲﾄの移動を継続、またはSS(従装置選択)信号線をHighへ引き上げることによってﾊﾟｹｯﾄの終了を指示することができます。最後の到着ﾊﾞｲﾄはその後の使用のため、緩衝ﾚｼﾞｽﾀ内に保持されます。
従装置として設定されると、SPIｲﾝﾀｰﾌｪｰｽはSSﾋﾟﾝがHighに駆動される限り、MISOをHi-Zにした休止状態に留まります。この状態でﾌﾟﾛｸﾞﾗﾑはSPIﾃﾞｰﾀ ﾚｼﾞｽﾀ(SPDR)の内容を更新できますが、そのﾃﾞｰﾀはSSﾋﾟﾝがLowに駆動されるまでSCKﾋﾟﾝでの到着ｸﾛｯｸ ﾊﾟﾙｽ
によって移動出力されません。1ﾊﾞｲﾄが完全に移動されてしまうと転送完了ﾌﾗｸﾞ(SPIF)が設定(1)されます。SPCRでSPI割り込み許可(SPIE)ﾋﾞｯﾄが設定(1)されていれば割り込みが要求されます。従装置は受信ﾃﾞｰﾀを読む前にSPDR内へ送られるべき次のﾃﾞｰﾀの配置
を続けられます。最後の到着ﾊﾞｲﾄはその後の使用のため、緩衝ﾚｼﾞｽﾀ内に保持されます。
このｼｽﾃﾑは送信側で単一緩衝、受信側で2重緩 図17-2. SPI 主装置/従装置の連結衝です。これは一連の移動全体が完了される前
MSB 主装置 LSB
MSB 従装置 LSBに送信されるべきﾊﾞｲﾄがSPIﾃﾞｰﾀ ﾚｼﾞｽﾀ(SPDR)MISO MISO
8ﾋﾞｯﾄ移動ﾚｼﾞｽﾀ
8ﾋﾞｯﾄ移動ﾚｼﾞｽﾀへ書けないことを意味します。けれども、ﾃﾞｰﾀを
MOSI MOSI
受信するとき、次のﾃﾞｰﾀが完全に移動入力される前に受信したﾃﾞｰﾀがSPIﾃﾞｰﾀ ﾚｼﾞｽﾀ(SPDR)か
SCK
SCKら読まれなければなりません。さもなければ始め
SS
SS
移動許可
ｸﾛｯｸ回路のﾊﾞｲﾄは失われます。
表17-1. SPIﾋﾟﾝ方向規定
ﾋﾟﾝ名
主装置時の方向規定
従装置時の方向規定
SCK ﾎﾟｰﾄB方向ﾚｼﾞｽﾀ(DDRB)の指定 入力
MISO 入力
ﾎﾟｰﾄB方向ﾚｼﾞｽﾀ(DDRB)の指定
MOSI ﾎﾟｰﾄB方向ﾚｼﾞｽﾀ(DDRB)の指定 入力
SS
ﾎﾟｰﾄB方向ﾚｼﾞｽﾀ(DDRB)の指定 入力
注: 使用者定義SPIﾋﾟﾝの方向定義方法の詳細記述については45頁の「ﾎﾟｰﾄBの交換機能」を参照してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]116

次のｺｰﾄﾞ例は主装置としてSPIを初期化する方法と簡単な送信を実行する方法を示します。例でのDDR_SPIはSPIﾋﾟﾝを制御する実際のﾎﾟｰﾄ方向ﾚｼﾞｽﾀに置き換えられなければなりません。DD_MOSI, DD_MISO, DD_SCKはこれらのﾋﾟﾝに対する実際のﾎﾟｰﾄ方向ﾋﾞｯﾄに置き換えられなければなりません。例えばMOSIがPB5ﾋﾟﾝに配置されるなら、DD_MOSIはDDB5、DDR_SPIはDDRBに置き換えます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
SPI_M_Init: LDI
OUT
LDI
OUT
RET

R17,(1<<DD_MOSI)|(1<<DD_SCK)
DDR_SPI,R17
R17,(1<<SPE)|(1<<MSTR)|(1<<SPR0)SPCR,R17

SPI_M_Tx:
OUT
SPDR,R16
SPI_M_Tx_W: SBISSPSR,SPIFRJMP
SPI_M_Tx_W;
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void SPI_MasterInit(void){
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);}
void SPI_MasterTransmit(char cData){
SPDR = cData;
while(!(SPSR & (1<<SPIF)));};MOSI, SCK=出力、他は入力値を取得;MOSI, SCK=出力、他は入力に設定;SPI許可、主装置、16分周値を取得;SPI許可、主装置、16分周に設定;呼び出し元へ復帰;ﾃﾞｰﾀ(R16)送信開始;転送完了ならばｽｷｯﾌﾟ;転送完了まで待機;呼び出し元へ復帰/* MOSI, SCK=出力、他は入力に設定 *//* SPI許可、主装置、16分周に設定 *//* ﾃﾞｰﾀ送信開始 *//* 転送完了まで待機 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
次のｺｰﾄﾞ例は従装置としてSPIを初期化する方法と簡単な受信を実行する方法を示します。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
SPI_S_Init: LDI
OUT
LDI
OUT
RET
SPI_S_Rx:

SBIS
RJMP

R17,(1<<DD_MISO)
DDR_SPI,R17
R17,(1<<SPE)
SPCR,R17;MISO出力、他は入力値を取得;MISO出力、他は入力に設定;SPI許可値を取得;SPI許可設定;呼び出し元へ復帰

SPSR,SPIFSPI_S_Rx;受信(転送)完了ならばｽｷｯﾌﾟ;受信(転送)完了まで待機;
IN
R16,SPDRRET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void SPI_SlaveInit(void){
DDR_SPI = (1<<DD_MISO);SPCR = (1<<SPE);}char SPI_SlaveReceive(void){
while(!(SPSR & (1<<SPIF)));
return SPDR;};受信ﾃﾞｰﾀを取得;呼び出し元へ復帰/* MISO出力、他は入力に設定 *//* SPI許可設定 *//* 受信(転送)完了まで待機 *//* 受信ﾃﾞｰﾀと共に復帰 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]117

17.1. SSﾋﾟﾝの機能
17.1.1. 従装置動作
SPIが従装置として設定されると、従装置選択(SS)ﾋﾟﾝは常に入力です。SSがLowに保たれるとSPIは活性に(作動)され、使用者によってそのように設定されていればMISOは出力になります。他の全てのﾋﾟﾝは入力です。SSがHighに駆動されると、出力として使用者設定され得るMISOを除く全てのﾋﾟﾝは入力、SPIは非活動で、それは到着ﾃﾞｰﾀを受信しないことを意味します。一旦SSﾋﾟﾝがHighに駆動されると、SPI論理回路がﾘｾｯﾄすることに注意してください。
このSSﾋﾟﾝはﾊﾟｹｯﾄ/ﾊﾞｲﾄ同期に対して、従装置ﾋﾞｯﾄ計数器が主装置ｸﾛｯｸ発生器との同期を保つのに有用です。SSﾋﾟﾝがHighに駆動されると、SPI従装置は直ちに送受信論理回路をﾘｾｯﾄし、それは移動ﾚｼﾞｽﾀ内で部分的に受信したどのﾃﾞｰﾀも取り落とします。

17.1.2. 主装置動作
SPIが主装置(SPI制御ﾚｼﾞｽﾀ(SPCR)の主装置許可(MSTR)ﾋﾞｯﾄ=1)として設定されると、SSﾋﾟﾝの方向は使用者が決められます。
SSが出力として設定されると、このﾋﾟﾝはSPIｼｽﾃﾑに影響を及ぼされない標準出力ﾋﾟﾝです。代表的にはこのﾋﾟﾝがSPI従装置のSSﾋﾟﾝを駆動するでしょう。
SSが入力として設定されると、SPI主装置動作を保証するため、それはHighに保持されなければなりません。SSﾋﾟﾝが入力として定義されたSPI主装置として設定される時に周辺回路によってSSﾋﾟﾝがLowに駆動されると、SPIｼｽﾃﾑは他の主装置が従装置として選択してﾃﾞｰﾀ送信を始めると解釈します。ﾊﾞｽの衝突を避けるためにSPIｼｽﾃﾑは次の動作を行います。
1. SPCRで主/従選択(MSTR)ﾋﾞｯﾄが解除(0)され、SPIｼｽﾃﾑは従装置になります。SPIｼｽﾃﾑが従装置になる結果としてMOSIとSCKﾋﾟﾝが入力になります。
2. SPI状態ﾚｼﾞｽﾀ(SPSR)でSPI割り込み要求ﾌﾗｸﾞ(SPIF)が設定(1)され、そしてSPI割り込みが許可(SPCRのSPIE=1)され、且つｽﾃｰﾀｽ
ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)なら、割り込みﾙｰﾁﾝが実行されます。
従って割り込み駆動SPI送信が主装置動作で使われ、SSがLowに駆動される可能性があるとき、その割り込み(処理)はMSTRﾋﾞｯﾄが未だ設定(1)されていることを常に検査すべきです。MSTRﾋﾞｯﾄが従装置選択によって解除(0)されてしまっていると、それはSPI主装置
動作を再び許可するため、使用者によって設定(1)されなければなりません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]118

17.1.3. ﾃﾞｰﾀ転送形式
直列ﾃﾞｰﾀに関してはSPI制御ﾚｼﾞｽﾀ(SPCR)のSCK位相(CPHA)とSCK極性(CPOL)制御ﾋﾞｯﾄによって決定されるSCK位相と極性で4つの組み合わせがあります。このSPIﾃﾞｰﾀ転送形式は図17-3.と図17-4.で示されます。ﾃﾞｰﾀ ﾋﾞｯﾄは安定のためﾃﾞｰﾀ信号に対して充分な時間を保証するSCK信号の反対端で移動出力と(入力)ﾗｯﾁが行われます。これは以下で行われるように表17-3.と表17-4.を要約することによって明解にされます。
表17-2. CPOL,CPHA機能動作
SPI動作種別番号 CPOL CPHA
0
0
0
1
1
0
0
2
1
1
3
1

SCK後行端出力設定/下降端
入力採取/下降端
出力設定/上昇端
入力採取/上昇端

SCK先行端入力採取/上昇端
出力設定/上昇端
入力採取/下降端
出力設定/下降端

図17-3. SPIﾃﾞｰﾀ転送形式 (CPHA=0)MSB先行 (DORD=0)
LSB先行 (DORD=1)

MSB
LSB

ﾋﾞｯﾄ6
ﾋﾞｯﾄ1

ﾋﾞｯﾄ5
ﾋﾞｯﾄ2

ﾋﾞｯﾄ4
ﾋﾞｯﾄ3

ﾋﾞｯﾄ3
ﾋﾞｯﾄ4

ﾋﾞｯﾄ2
ﾋﾞｯﾄ5

ﾋﾞｯﾄ1
ﾋﾞｯﾄ6

LSB
MSB

SCK (CPOL=0)
動作種別 0SCK (CPOL=1)
動作種別 2
MOSI/MISO入力採取
MOSI (主装置送出)
MISO (従装置送出)
SS (従装置選択)
図17-4. SPIﾃﾞｰﾀ転送形式 (CPHA=1)MSB先行 (DORD=0)
LSB先行 (DORD=1)

MSB
LSB

ﾋﾞｯﾄ6
ﾋﾞｯﾄ1

ﾋﾞｯﾄ5
ﾋﾞｯﾄ2

ﾋﾞｯﾄ4
ﾋﾞｯﾄ3

ﾋﾞｯﾄ3
ﾋﾞｯﾄ4

ﾋﾞｯﾄ2
ﾋﾞｯﾄ5

ﾋﾞｯﾄ1
ﾋﾞｯﾄ6

LSB
MSB

SCK (CPOL=0)
動作種別 1
SCK (CPOL=1)
動作種別 3
MOSI/MISO入力採取
MOSI (主装置送出)
MISO (従装置送出)
SS (従装置選択)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]119

17.3. SPI用ﾚｼﾞｽﾀ
17.3.1. SPCR - SPI制御ﾚｼﾞｽﾀ (SPI Control Register)ﾋﾞｯﾄ$2C ($4C)
Read/Write
初期値

7

6

5

4

3

2

1

0

SPIE

SPE

DORD

MSTR

CPOL

CPHA

SPR1

SPR0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

SPCR

● ﾋﾞｯﾄ7 - SPIE : SPI割り込み許可 (SPI Interrupt Enable)

ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されて、SPI状態ﾚｼﾞｽﾀ(SPSR)でSPI割り込み要求ﾌﾗｸﾞ(SPIF)が設定(1)されると、このﾋﾞｯﾄがSPI割り込みを実行させます。
● ﾋﾞｯﾄ6 - SPE : SPI許可 (SPI Enable)

SPEﾋﾞｯﾄが1を書かれるとSPIが許可されます。どのSPI操作を許可するにも、このﾋﾞｯﾄが設定(1)されなければなりません。
● ﾋﾞｯﾄ5 - DORD : ﾃﾞｰﾀ順選択 (Data Order)

DORDﾋﾞｯﾄが1を書かれるとﾃﾞｰﾀ語のLSBが最初に転送されます。DORDﾋﾞｯﾄが0を書かれるとMSBが最初に転送されます。
● ﾋﾞｯﾄ4 - MSTR : 主装置/従装置選択 (Master/Slave Select)

このﾋﾞｯﾄは1を書かれると主装置動作、論理0を書かれると従装置動作を選択します。SSが入力として設定され、MSTRが設定(1)の間にLowへ駆動されると、MSTRが解除(0)され、SPI状態ﾚｼﾞｽﾀ(SPSR)でSPI割り込み要求ﾌﾗｸﾞ(SPIF)が設定(1)になります。その後に使用者はSPI主装置動作を再び許可するためにMSTRを設定(1)しなければなりません。
● ﾋﾞｯﾄ3 - CPOL : SCK極性選択 (Clock Polarity)

このﾋﾞｯﾄが1を書かれると、ｱｲﾄﾞﾙ時にSCKはHighです。CPOLが0を書かれると、ｱｲﾄﾞﾙ
時にSCKはLowです。例については図17-3.と図17-4.を参照してください。CPOL機能は右で要約されます。

表17-3. CPOL機能動作
CPOL SCK先行端
0
上昇端
1
下降端

SCK後行端下降端上昇端表17-4. CPHA機能動作
CPHA SCK先行端
0
入力採取
1
出力設定

SCK後行端出力設定
入力採取● ﾋﾞｯﾄ2 - CPHA : SCK位相選択 (Clock Phase)

このSCK位相選択(CPHA)ﾋﾞｯﾄの設定はﾃﾞｰﾀがSCKの先行(先)端または後行(後)端で採取/(設定)されるかを決めます。例については図17-3.と図17-4.を参照してください。
CPHA機能は右で要約されます。

● ﾋﾞｯﾄ1,0 - SPR1,0 : SPIｸﾛｯｸ選択 (SPI Clock Rate Select 1 and 0)

これら2ﾋﾞｯﾄは主装置として設定されたﾃﾞﾊﾞｲｽのSCK速度を制御します。従装置でのSPR1とSPR0は無効です。SCKと(ｼｽﾃﾑ)発振器ｸ
ﾛｯｸ周波数fOSC間の関連は下で示されます。
表17-5. SCK速度選択 (fOSC=CPUｸﾛｯｸ周波数)
SPR1
0
SPR0
0
1
1
SPI2X
0
fOSC/2fOSC/4fOSC/8SCK周波数

1
1

1
0

0
1
0

1

fOSC/16

fOSC/32

01

fOSC/640fOSC/12817.3.2. SPSR - SPI状態ﾚｼﾞｽﾀ (SPI Status Register)ﾋﾞｯﾄ$2D ($4D)
Read/Write
初期値

7

6

5

4

3

2

1

0

SPIF

WCOL

-

-

-

-

-

SPI2X

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R/W
0

SPSR

● ﾋﾞｯﾄ7 - SPIF : SPI割り込み要求ﾌﾗｸﾞ (SPI Interrupt Flag)

直列転送が完了すると、このSPIFﾌﾗｸﾞが設定(1)されます。全割り込みが許可(ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄ=1)されて、SPI制御ﾚｼﾞｽﾀ(SPCR)でSPI割り込み許可(SPIE)ﾋﾞｯﾄが設定(1)されるなら、割り込みが生成されます。SPIが主装置動作の時にSS
ﾋﾟﾝが入力でLowに駆動されるなら、これもこのSPIFﾌﾗｸﾞを同様に設定(1)します。対応する割り込み処理ﾍﾞｸﾀを実行する時にSPIFはﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにSPIFが設定(1)されたSPI状態ﾚｼﾞｽﾀ(SPSR)を始めに読み、その後にSPIﾃﾞｰﾀ ﾚｼﾞｽﾀ(SPDR)をｱｸｾｽすることによってもSPIFﾌﾗｸﾞは解除(0)されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]120

● ﾋﾞｯﾄ6 - WCOL : 上書き発生ﾌﾗｸﾞ (Write Collision Flag)

ﾃﾞｰﾀ転送中にSPIﾃﾞｰﾀ ﾚｼﾞｽﾀ(SPDR)が書かれると、このWCOLﾋﾞｯﾄが設定(1)されます。WCOLﾋﾞｯﾄ(とSPIFﾋﾞｯﾄ)はWCOLが設定(1)されたSPI状態ﾚｼﾞｽﾀ(SPSR)を始めに読み、その後にSPIﾃﾞｰﾀ ﾚｼﾞｽﾀ(SPDR)をｱｸｾｽすることによって解除(0)されます。
● ﾋﾞｯﾄ5～1 - Res : 予約 (Reserved Bit)

これらのﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ0 - SPI2X : SPI倍速許可 (Double SPI Speed Bit)

このﾋﾞｯﾄが論理1を書かれると、SPIが主装置動作の時にSCK速度(SCK周波数)が倍にされます(表17-5.参照)。これは最小SCK周期が2CPUｸﾛｯｸ周期であることを意味します。SPIが従装置として設定される時に、SPIはfOSC(CPUｸﾛｯｸ周波数)/4またはそれ以下での動作のみ保証されます。
本ﾃﾞﾊﾞｲｽのSPIｲﾝﾀｰﾌｪｰｽはﾌﾗｯｼｭ ﾒﾓﾘやEEPROMの書き換え(読み書き)にも使われます。直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞと照合については238
頁をご覧ください。

17.3.3. SPDR - SPIﾃﾞｰﾀ ﾚｼﾞｽﾀ (SPI Data Register)ﾋﾞｯﾄ$2E ($4E)
Read/Write
初期値

7

6

5

4

3

2

1

(MSB)
R/W
不定

0

(LSB)
R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

R/W
不定

SPDR

R/W
不定

SPIﾃﾞｰﾀ ﾚｼﾞｽﾀはSPI移動ﾚｼﾞｽﾀとﾚｼﾞｽﾀ ﾌｧｲﾙ(汎用ﾚｼﾞｽﾀ)間のﾃﾞｰﾀ転送に使われる読み書き可能なﾚｼﾞｽﾀです。このﾚｼﾞｽﾀへの書き込みがﾃﾞｰﾀ送信を開始します。このﾚｼﾞｽﾀの読み込みは移動ﾚｼﾞｽﾀの受信緩衝部読み出しを引き起こします。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]121

18. USARTUSART(Universal Synchronous and Asynchronous Receiver and Transmitter)は高い柔軟性をもつ直列通信機能です。主な特徴を次に示します。
・ 全二重動作 (独立した送受信ﾚｼﾞｽﾀ)・ 同期または非同期動作
・ CTS/RTS信号ﾊｰﾄﾞｳｪｱ管理流れ制御
・ 同期ｸﾛｯｸ駆動された主装置/従装置動作
・ 高分解能ﾎﾞｰﾚｰﾄ発振器
・ 5, 6, 7, 8または9ﾋﾞｯﾄ ﾃﾞｰﾀと1または2停止ﾋﾞｯﾄの直列ﾌﾚｰﾑの支援
・ ﾊｰﾄﾞｳｪｱによって支援された奇数または偶数ﾊﾟﾘﾃｨの生成と検査
・ ﾃﾞｰﾀ ｵｰﾊﾞｰﾗﾝ検出・ ﾌﾚｰﾐﾝｸﾞ異常検出
・ 不正開始ﾋﾞｯﾄ検出とﾃﾞｼﾞﾀﾙ低域通過濾波器を含む雑音濾波器
・ 受信完了、送信完了、送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空きの3つの分離した割り込み
・ 複数ﾌﾟﾛｾｯｻ通信機能
・ 倍速非同期通信動作

18.1. 概要
USARTの簡単化した構成図は図18-1.で示されます。CPUがｱｸｾｽ可能なﾚｼﾞｽﾀとI/Oﾋﾟﾝは赤文字(訳注:原文太字)で示されます。
USARTは主装置SPI動作での使用もできます。140頁の「USARTでのSPI動作」をご覧ください。29頁の「PRR1 - 電力削減ﾚｼﾞｽﾀ」の
USART電力削減(PRUSART)ﾋﾞｯﾄはUSART部を許可するために0を書かれなければなりません。(訳注:共通性から前2行追加)
図18-1. USART構成図
USARTﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ(UBRRH,UBRRL)
ﾎﾞｰﾚｰﾄ発振器

ｸﾛｯｸ生成部
OSC
同期化回路

送信部

送信移動ﾚｼﾞｽﾀ(UDR)

ﾋﾟﾝ制御回路

XCK

ﾋﾟﾝ制御回路TXD
CTS

USART送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ

ﾊﾟﾘﾃｨ発生回路

送信制御回路USART受信ﾃﾞｰﾀ ﾚｼﾞｽﾀ

ﾊﾟﾘﾃｨ検査回路

受信部

ﾃﾞｰﾀ再生回路

ﾋﾟﾝ制御回路

RXD

ｸﾛｯｸ再生回路

受信制御回路

RTS

受信ﾃﾞｰﾀ緩衝部
受信移動ﾚｼﾞｽﾀ

USART制御/状態ﾚｼﾞｽﾀA (UCSRA)

USART制御/状態ﾚｼﾞｽﾀB (UCSRB)USART制御/状態ﾚｼﾞｽﾀC (UCSRC)

USART制御/状態ﾚｼﾞｽﾀD (UCSRD)

8-bit Data Bus
注: USARTﾋﾟﾝ配置については2頁の「ﾋﾟﾝ配置」、48頁の表11-8.をご覧ください。
構成図内の破線はUSARTの3つの主要部分、(上から)ｸﾛｯｸ生成部、送信部、受信部を分けます。制御ﾚｼﾞｽﾀは全部によって共用されます。ｸﾛｯｸ生成論理部はﾎﾞｰﾚｰﾄ発振器と同期従装置動作によって使われる外部ｸﾛｯｸ入力に対する同期化論理回路から成ります。転送ｸﾛｯｸ(XCKn)ﾋﾟﾝは同期転送動作だけで使われます。送信部は単一書き込み緩衝部(UDRn)、直列移動ﾚｼﾞｽﾀ、ﾊﾟﾘﾃｨ発生器、異なる直列ﾌﾚｰﾑ形式を扱うための制御論理回路から成ります。書き込み緩衝部はどんなﾌﾚｰﾑ間の遅れもなしにﾃﾞｰﾀの継続転送を許します。受信部はｸﾛｯｸとﾃﾞｰﾀの再生部のため、USART部の最も複雑な部分です。再生部は非同期ﾃﾞｰﾀ受信で使われます。
再生部に加えて、受信部は2重の受信緩衝部(UDRn)、移動ﾚｼﾞｽﾀ、ﾊﾟﾘﾃｨ検査器、制御論理回路を含みます。受信部は送信部と同じﾌﾚｰﾑ形式を支援し、ﾌﾚｰﾐﾝｸﾞ異常、ﾃﾞｰﾀ ｵｰﾊﾞｰﾗﾝ発生、ﾊﾟﾘﾃｨ誤りを検知できます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]122

18.2. ｸﾛｯｸ生成
ｸﾛｯｸ生成論理回路は送受信部用基準ｸﾛｯｸを生成します。USARTは標準非同期、倍速非同期、同期主装置、同期従装置の4つのｸ
ﾛｯｸ動作種別を支援します。USART制御/状態ﾚｼﾞｽﾀC(UCSRnC)のUSART動作種別選択(UMSELn0)ﾋﾞｯﾄは同期動作と非同期動作のどちらかを選びます。倍速動作(非同期動作のみ)はUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)にある倍速許可(U2Xn)ﾋﾞｯﾄによって制御されます。同期動作(UMSELn0=1)を使う時にXCKnﾋﾟﾝに対する方向制御ﾋﾞｯﾄ(DDR_XCKn)はｸﾛｯｸ元が内部(主装置動作)または外部(従装置動作)のどちらかを制御します。このXCKnﾋﾟﾝは同期動作を使う時だけ活性(有効)です。
図18-2.はｸﾛｯｸ生成論理回路の構成図を示します。
図18-2. ｸﾛｯｸ生成部構成図
USARTﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ(UBRRnH,UBRRnL)
前置分周器(下降計数器)fOSC
UBRRn+1

U2Xn
1/2

1/4

CK

XCKn

XCKI
XCKO

同期ﾚｼﾞｽﾀ (F/F)

DDR_XCKn

信号説明

ｴｯｼﾞ検出UCPOLn

1/2

0
1
0
1

0
1

Tx CLK
UMSELn010

Rx CLK

DDR_XCKn

Tx CLK: 送信ｸﾛｯｸ (内部信号)
Rx CLK: 受信ｸﾛｯｸ (内部信号)
XCKI: XCKﾋﾟﾝからの内部入力信号 (同期従装置時)
XCKO: XCKﾋﾟﾝへの内部出力信号 (同期主装置時)
DDR_XCKn : 対応するﾎﾟｰﾄ方向ﾚｼﾞｽﾀの方向ﾋﾞｯﾄ
fOSC: ｼｽﾃﾑ ｸﾛｯｸ周波数

18.2.1. ﾎﾞｰﾚｰﾄ発振器での内部ｸﾛｯｸ発生
内部ｸﾛｯｸ生成は非同期と同期主装置動作種別に対して使われます。本項の記述は図18-2.を参照してください。
USARTﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ(UBRRn(UBRRnH:UBRRnL))と下降計数器は設定可能な前置分周器またはﾎﾞｰﾚｰﾄ発振器として機能するように接続されます。ｼｽﾃﾑ ｸﾛｯｸ( f OSC)で走行する下降計数器は0への下降計数時毎またはUBRRnLﾚｼﾞｽﾀが書かれる時にUBRRn値で設定されます。1ｸﾛｯｸは計数器が0に達する毎に生成されます。このｸﾛｯｸがﾎﾞｰﾚｰﾄ発振器出力(= f OSC/(UBRRn+1))です。送信部
は動作種別に依存してﾎﾞｰﾚｰﾄ発振器出力を2,8,16分周します。ﾎﾞｰﾚｰﾄ発振器出力は受信部ｸﾛｯｸとﾃﾞｰﾀの再生部によって直接使われます。しかし、再生部はUSART動作種別選択(UMSELn0)、倍速許可(U2Xn)、DDR_XCKnﾋﾞｯﾄの状態によって設定される動作種
別に依存して2,8,16段を使う順次処理回路を使います。
下表は内部的に生成したｸﾛｯｸ元を使う各動作種別に於けるﾎﾞｰﾚｰﾄ(bps)とUBRRn値の計算式を含みます。
表18-1. ﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ(UBRRn)値計算式
動作種別
ﾎﾞｰﾚｰﾄ計算式
UBRRn値計算式
fOSC
fOSC
標準速非同期動作 (U2Xn=0) BAUD＝UBRRn＝-1
16×(UBRRn+1)
16×BAUD
fOSC
fOSC
倍速非同期動作 (U2Xn=1)
UBRRn＝
BAUD＝-1
8×(UBRRn+1)
8×BAUD
fOSC
fOSC
同期主装置動作UBRRn＝
BAUD＝-1
2×(UBRRn+1)
2×BAUD
注: ﾎﾞｰﾚｰﾄは転送速度(ﾋﾞｯﾄ/1秒)で定義されます。
BAUD : ﾎﾞｰﾚｰﾄ (bps)
UBRRn : UBRRnHとUBRRnLﾚｼﾞｽﾀ値 (0～4095)
fOSC : ｼｽﾃﾑ発振器ｸﾛｯｸ周波数
いくつかのｼｽﾃﾑ ｸﾛｯｸ周波数に対するいくつかのUBRRn値の例は134～135頁の表18-4.で得られます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]123

18.2.2. 倍速動作 (U2Xn)
転送速度はUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)で倍速許可(U2Xn)ﾋﾞｯﾄを設定(1)することによって倍にできます。このﾋﾞｯﾄの設定は非同期動作に対してだけ有効です。同期動作を使う時にこのﾋﾞｯﾄは0に設定してください。
このﾋﾞｯﾄの設定(1)は事実上非同期通信に対する転送速度を倍にするﾎﾞｰﾚｰﾄ分周器の分周数を16から8に減じます。けれども受信部がﾃﾞｰﾀ採取とｸﾛｯｸの再生に対して半分の(16から8に減じた)採取数をこの場合だけ使い、従ってこの動作種別が使われるとき、ｼ
ｽﾃﾑ ｸﾛｯｸとﾎﾞｰﾚｰﾄ設定の精度がより必要とされることに注意してください。送信部についての低下要因はありません。

18.2.3. 外部ｸﾛｯｸ
外部ｸﾛｯｸは同期従装置動作種別によって使われます。本項の記述での詳細については図18-2.を参照してください。
XCKnﾋﾟﾝからの外部ｸﾛｯｸ入力は不確定ﾚﾍﾞﾙ状態(ﾒﾀｽﾃｰﾌﾞﾙ)の機会を最少とするために同期化ﾚｼﾞｽﾀによって採取されます。同期化ﾚｼﾞｽﾀからの出力は送受信部で使い得るのに先立ってｴｯｼﾞ検出器を通過しなければなりません。この処理手順が2CPUｸﾛｯｸ周期の遅延を持ち込み、このため最大外部XCKnｸﾛｯｸ周波数は次式によって制限されます。
f
f XCKn < OSC
4
fOSCがｼｽﾃﾑ ｸﾛｯｸ元の安定度に依存することに注意してください。従って周波数変動によるﾃﾞｰﾀ消失の可能性を避けるため、いくらかの余裕分を追加することが推奨されます。

18.2.4. 同期ｸﾛｯｸ動作
同期動作が使われる(UMSELn=1)とき、XCKnﾋﾟﾝはｸﾛｯｸ入力(従装置)またはｸﾛｯｸ出力(主装置)のどちらかとして使われます。ﾃﾞｰﾀ採取またはﾃﾞｰﾀ変更とｸﾛｯｸ端間の依存性は同じです。基本原則はﾃﾞｰﾀ出力(TXDn)が変更されるｴｯｼﾞと反対のXCKnｸﾛｯｸ端でﾃﾞｰﾀ入力(RXDn)が採取されることです。
USART制御/状態ﾚｼﾞｽﾀC(UCSRnC)のXCKn極性(UC 図18-3. 同期動作XCKnﾀｲﾐﾝｸﾞ
POLn)ﾋﾞｯﾄはﾃﾞｰﾀ採取とﾃﾞｰﾀ変更に対してどちらのｸ変更
採取ﾛｯｸ端が使われるのかを選びます。図18-3.で示される
XCKn
ようにUCPOLnが0のとき、ﾃﾞｰﾀはXCKnの上昇端で変更され、下降端で採取されます。UCPOLnが設定(1)のUCPOLn=1 RXDn/TXDn
場合、ﾃﾞｰﾀはXCKnの下降端で変更され、上昇端で採UCPOLn=0 RXDn/TXDn
取されます。

18.3. ﾌﾚｰﾑ形式
1つの直列ﾌﾚｰﾑは複数のﾃﾞｰﾀ ﾋﾞｯﾄと同期ﾋﾞｯﾄ(開始ﾋﾞｯﾄ、停止ﾋﾞｯﾄ)、任意の異常検査用ﾊﾟﾘﾃｨ ﾋﾞｯﾄで定義されます。USARTは有効なﾌﾚｰﾑ形式として以下の組み合わせ30種全てを受け入れます。
● 1 開始ﾋﾞｯﾄ● 5, 6, 7, 8, 9 ﾋﾞｯﾄ ﾃﾞｰﾀ
● 奇数または偶数ﾊﾟﾘﾃｨ ﾋﾞｯﾄ、またはなし● 1 または 2 停止ﾋﾞｯﾄ
ﾌﾚｰﾑは最下位ﾃﾞｰﾀ ﾋﾞｯﾄ(LSB)が次に続く開始ﾋﾞｯﾄで始まります。その後に次ﾃﾞｰﾀ ﾋﾞｯﾄが最後の最上位ﾃﾞｰﾀ ﾋﾞｯﾄ(MSB)まで(最大)
合計9ﾋﾞｯﾄ続きます。許可したなら、ﾊﾟﾘﾃｨ ﾋﾞｯﾄがﾃﾞｰﾀ ﾋﾞｯﾄの後、停止ﾋﾞｯﾄの前に挿入されます。完全なﾌﾚｰﾑが送信されると、新規ﾌﾚｰﾑによって直ちに後続されるか、または通信線をｱｲﾄﾞﾙ状態(high)に設定できます。図18-4.は組み合わせ可能なﾌﾚｰﾑ形式を図解します。[ ]付きﾋﾞｯﾄは任意選択です。
図18-4. 1ﾌﾚｰﾑの構成(IDLE)

St

D0

D1

D2

D3

St : 開始ﾋﾞｯﾄ (常にLow)
Dn : ﾃﾞｰﾀ ﾋﾞｯﾄ (0～8)
P : ﾊﾟﾘﾃｨ ﾋﾞｯﾄ (偶数または奇数)

D4

[D5]

[D6]

[D7]

[D8]

[P]

Sp1 [Sp2](St/IDLE)

1 ﾌﾚｰﾑ
Spn : 停止ﾋﾞｯﾄ (常にhigh)
IDLE : 転送なし (RXD,TXD=High)USARTによって使われるﾌﾚｰﾑ形式はUSART制御/状態ﾚｼﾞｽﾀBとC(UCSRnB, UCSRnC)でﾃﾞｰﾀ長選択(UCSZn2～0)ﾋﾞｯﾄ、ﾊﾟﾘﾃｨ選
択(UPMn1,0)ﾋﾞｯﾄ、停止ﾋﾞｯﾄ選択(USBSn)ﾋﾞｯﾄによって設定されます。受信部と送信部は同じ設定を使います。これらのどのﾋﾞｯﾄの設定変更も、送受信部両方に対して進行中の通信を不正とすることに注意してください。
ﾃﾞｰﾀ長選択(UCSZn2～0)ﾋﾞｯﾄはﾌﾚｰﾑ内のﾃﾞｰﾀ ﾋﾞｯﾄ数を選びます。ﾊﾟﾘﾃｨ選択(UPMn1,0)ﾋﾞｯﾄはﾊﾟﾘﾃｨ ﾋﾞｯﾄの許可と種別(奇/偶)を設定します。1または2停止ﾋﾞｯﾄのどちらかの選択は停止ﾋﾞｯﾄ選択(USBSn)ﾋﾞｯﾄによって行います。受信部は第2停止ﾋﾞｯﾄを無視します。従ってﾌﾚｰﾐﾝｸﾞ異常(FEn)は最初の停止ﾋﾞｯﾄが0(Low)の場合にだけ検出されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]124

18.3.1. ﾊﾟﾘﾃｨ ﾋﾞｯﾄの計算
ﾊﾟﾘﾃｨ ﾋﾞｯﾄは全ﾃﾞｰﾀ ﾋﾞｯﾄの排他的論理和(Ex-OR)を行うことによって計算されます。奇数ﾊﾟﾘﾃｨが使われる場合は排他的論理和の結果が反転されます。ﾊﾟﾘﾃｨ ﾋﾞｯﾄとﾃﾞｰﾀ ﾋﾞｯﾄの関係は次のとおりです。
偶数ﾊﾟﾘﾃｨ ﾋﾞｯﾄ = D0 Ex-OR D1 Ex-OR D2 Ex-OR ～ Ex-OR Dn-1
奇数ﾊﾟﾘﾃｨ ﾋﾞｯﾄ = D0 Ex-OR D1 Ex-OR D2 Ex-OR ～ Ex-OR Dn-1 Ex-OR 1
n : ﾃﾞｰﾀ ﾋﾞｯﾄ長使った場合、ﾊﾟﾘﾃｨ ﾋﾞｯﾄは直列ﾌﾚｰﾑの最後のﾃﾞｰﾀ ﾋﾞｯﾄと最初の停止ﾋﾞｯﾄ間に配置されます。

18.4. USARTの初期化
何れかの通信が行えるのに先立ってUSARTは初期化されなければなりません。標準的な初期化手順は使用方法に依存するﾎﾞｰﾚｰ
ﾄ設定、ﾌﾚｰﾑ形式設定、送受信部許可から成ります。割り込み駆動USART操作に関して初期化を行うとき、ｽﾃｰﾀｽ ﾚｼﾞｽﾀの全割り込み許可(I)ﾋﾞｯﾄは解除(0)される(そして全割り込みが禁止される)べきです。
ﾎﾞｰﾚｰﾄまたはﾌﾚｰﾑ形式の変更を伴う再初期化を行う前には、ﾚｼﾞｽﾀが変更される期間中に進行中の送信がないことを確実にしてください。USART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の送信完了(TXCn)ﾌﾗｸﾞは送信部の全転送完了検査に使え、受信完了(RXCn)ﾌﾗｸﾞは受信緩衝部内の未読ﾃﾞｰﾀ有無検査に使えます。この目的(次送信ﾀｲﾐﾝｸﾞ)にTXCﾌﾗｸﾞが使われる場合、各々の送信(USARTﾃﾞｰﾀ ﾚ
ｼﾞｽﾀ(UDRn)が書かれる)前にTXCnﾌﾗｸﾞが解除(0)されなければならないことに注意してください。
次の簡単なUSART初期化ｺｰﾄﾞ例が示すｱｾﾝﾌﾞﾘ言語とC言語の関数は機能的に同じです。この例は固定ﾌﾚｰﾑ形式でﾎﾟｰﾘﾝｸﾞを使う(割り込み不許可)非同期動作と仮定します。ﾎﾞｰﾚｰﾄ(UBRRn)値は関数の引数として与えられます。ｱｾﾝﾌﾞﾘ言語でのﾎﾞｰﾚｰﾄ引数は
R17:R16ﾚｼﾞｽﾀに格納されると仮定されます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
USART_Init: OUTUBRRnH,R17
OUT
UBRRnL,R16
LDI
R16,(1<<USBSn)|(3<<UCSZn0)OUT
UCSRnC,R16
LDI
R16,(1<<RXENn)|(1<<TXENn)OUT
UCSRnB,R16
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例#define FOSC 1843200#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
void main(void){～
USART_Init(MYUBRR);～}
void USART_Init(unsigned int baud){
UBRRnH = (unsigned char)(baud>>8);
UBRRnL = (unsigned char)baud;
UCSRnC = (1<<USBSn)|(3<<UCSZn0):
UCSRnB = (1<<RXENn)|(1<<TXENn);};ﾎﾞｰﾚｰﾄ設定(上位ﾊﾞｲﾄ);ﾎﾞｰﾚｰﾄ設定(下位ﾊﾞｲﾄ);ﾌﾚｰﾑ形式値を取得;ﾌﾚｰﾑ形式設定(8ﾋﾞｯﾄ,2停止ﾋﾞｯﾄ);送受信許可値を取得;送受信許可;呼び出し元へ復帰/* MCUｸﾛｯｸ周波数 *//* 目的USARTﾎﾞｰﾚｰﾄ速度 *//* 目的UBRRn値 *//* USART初期化 *//* ﾎﾞｰﾚｰﾄ設定(上位ﾊﾞｲﾄ) *//* ﾎﾞｰﾚｰﾄ設定(下位ﾊﾞｲﾄ) *//* ﾌﾚｰﾑ形式設定(8ﾋﾞｯﾄ,2停止ﾋﾞｯﾄ) *//* 送受信許可 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
割り込みの禁止や引数としてﾌﾚｰﾑ形式を含めるなどで、より進化した初期化ﾙｰﾁﾝが作成できます。けれども多くの応用はﾎﾞｰﾚｰﾄ
や制御ﾚｼﾞｽﾀの固定した設定が使われ、これらの応用形式での初期化ｺｰﾄﾞは主ﾙｰﾁﾝに直接置けるか、または他のI/Oの初期化ｺｰﾄﾞと併せられます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]125

18.5. USARTのﾃﾞｰﾀ送信
USART送信部はUSART制御/状態ﾚｼﾞｽﾀB(UCSRnB)で送信許可(TXENn)ﾋﾞｯﾄを設定(1)することによって許可されます。送信部が許可されると、TXDnﾋﾟﾝの標準ﾋﾟﾝ動作はUSARTによって無視され、送信部の直列出力としての機能を与えられます。何かの送信を行
う前に一度はﾎﾞｰﾚｰﾄ、ﾌﾚｰﾑ形式、動作種別が設定されなければなりません。同期動作が使われる場合、XCKnﾋﾟﾝの(受信)ｸﾛｯｸは無視され、送信ｸﾛｯｸとして使われます。

18.5.1. 5～8ﾋﾞｯﾄ ﾃﾞｰﾀ ﾌﾚｰﾑ送信
ﾃﾞｰﾀ送信は送信されるべきﾃﾞｰﾀを送信緩衝部に設定することによって開始されます。CPUはUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)I/O位置へ書くことによって送信緩衝部に設定できます。送信緩衝部内のﾃﾞｰﾀは移動ﾚｼﾞｽﾀが新規ﾌﾚｰﾑを送る準備が整った時に移動ﾚｼﾞｽﾀへ移されます。移動ﾚｼﾞｽﾀはｱｲﾄﾞﾙ状態(送信進行中以外)、または直前のﾌﾚｰﾑの最後の停止ﾋﾞｯﾄ送信後、直ちに新規ﾃﾞｰﾀが設定されます。移動ﾚｼﾞｽﾀが新規ﾃﾞｰﾀを設定されると、ﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ(UBRRnH:UBRRnL)と倍速許可(U2Xn)ﾋﾞｯﾄ、また動作種別によってはXCKnﾋﾟﾝによって与えられる速度で1つの完全なﾌﾚｰﾑを転送します。8ﾋﾞｯﾄ未満のﾌﾚｰﾑを使うとき、UDRnに書かれた上位ﾋﾞｯﾄは無視されます。
次のｺｰﾄﾞ例はUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き(UDREn)ﾌﾗｸﾞのﾎﾟｰﾘﾝｸﾞを基準とした簡単なUSART送信関数を示します。この関数が使われ得る前にUSARTが初期化されなければなりません。ｱｾﾝﾌﾞﾘ言語での送るべきﾃﾞｰﾀはR16ﾚｼﾞｽﾀに格納されると仮定されます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
USART_Tx:
SBIS
UCSRnA,UDREn
RJMP
USART_Tx;
OUT
UDRn,R16
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void USART_Transmit(unsigned char data){
while ( !(UCSRnA & (1<<UDREn)) );UDRn = data;};送信緩衝部空きでｽｷｯﾌﾟ;送信緩衝部空き待機;ﾃﾞｰﾀ送信(送信開始);呼び出し元へ復帰/* 送信緩衝部空き待機 *//* ﾃﾞｰﾀ送信(送信開始) */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
この関数は送信されるべき新規ﾃﾞｰﾀを設定する前に、UDREnの検査によって送信緩衝部が空になるのを単純に待ちます。送信緩
衝部空き割り込みが使われる場合、その割り込み処理ﾙｰﾁﾝがﾃﾞｰﾀを緩衝部内に書きます。

18.5.2. 9ﾋﾞｯﾄ ﾃﾞｰﾀ ﾌﾚｰﾑ送信
9ﾋﾞｯﾄ ﾃﾞｰﾀが使われる場合(UCSZn2～0=111)、ﾃﾞｰﾀの下位ﾊﾞｲﾄがUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)に書かれるのに先立って第9ﾋﾞｯﾄが
USART制御/状態ﾚｼﾞｽﾀB(UCSRnB)の送信ﾃﾞｰﾀ ﾋﾞｯﾄ8(TXB8n)ﾋﾞｯﾄに書かれなければなりません。次のｺｰﾄﾞ例は9ﾋﾞｯﾄ ﾃﾞｰﾀを扱う
送信関数を示します。ｱｾﾝﾌﾞﾘ言語での送るべきﾃﾞｰﾀはR17:R16ﾚｼﾞｽﾀに格納されると仮定されます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
USART_Tx:
SBIS
UCSRnA,UDREn
RJMP
USART_Tx;
CBI
UCSRnB,TXB8n
SBRC
R17,0
SBI
UCSRnB,TXB8n
OUTUDRn,R16
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void USART_Transmit(unsigned int data){
while ( !(UCSRnA & (1<<UDREn)) );UCSRnB &= ~(1<<TXB8n);
if (data & 0x0100) UCSRnB |= (1<<TXB8n);
UDRn = data;};送信緩衝部空きでｽｷｯﾌﾟ;送信緩衝部空き待機;第9ﾋﾞｯﾄを0に仮設定;送信すべき第9ﾋﾞｯﾄが0でｽｷｯﾌﾟ;第9ﾋﾞｯﾄを1に設定;ﾃﾞｰﾀ送信(送信開始);呼び出し元へ復帰/* 送信緩衝部空き待機 *//* TXB8nを0に仮設定 *//* 第9ﾋﾞｯﾄをR17からTXB8nへ複写 *//* ﾃﾞｰﾀ送信(送信開始) */注: これらの送信関数は一般的な機能で書かれています。UCSRBnの内容が静的(換言すると、UCSRnBのTXB8nﾋﾞｯﾄが初期化後に使われるだけ)ならば最適化できます。
5頁の「ｺｰﾄﾞ例」をご覧ください。
第9ﾋﾞｯﾄは複数ﾌﾟﾛｾｯｻ通信使用時のｱﾄﾞﾚｽ ﾌﾚｰﾑ識別、また例えば同期として扱う他の規約で使うことができます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

126

18.5.3. 送信ﾌﾗｸﾞと割り込み
USART送信部には状態を示す2つのﾌﾗｸﾞ、USARTﾃﾞｰﾀ ﾚｼﾞｽﾀ空き(UDREn)と送信完了(TXCn)があります。両ﾌﾗｸﾞは割り込みを発生するのに使えます。
USARTﾃﾞｰﾀ ﾚｼﾞｽﾀ空き(UDREn)ﾌﾗｸﾞは送信緩衝部が新規ﾃﾞｰﾀを受け取る準備ができているかどうかを示します。このﾋﾞｯﾄは送信緩
衝部が空の時に設定(1)され、送信緩衝部が移動ﾚｼﾞｽﾀに未だ移動されてしまっていない送信されるべきﾃﾞｰﾀを含む時に解除(0)されます。将来のﾃﾞﾊﾞｲｽとの共通性のため、USART制御/状態ﾚｼﾞｽﾀA(UCSRnA)に書くとき、常にこのﾋﾞｯﾄに0を書いてください。
USART制御/状態ﾚｼﾞｽﾀB(UCSRnB)でﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込み許可(UDRIEn)ﾋﾞｯﾄが1を書かれると、(全割り込みが許可されていれ
ば)UDREnﾌﾗｸﾞが設定(1)されている限り、USARTﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込みが実行されます。UDREnはUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)書
き込みによって解除(0)されます。割り込み駆動ﾃﾞｰﾀ送信が使われるとき、ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込みﾙｰﾁﾝはUDREnを解除(0)するた
めに新規ﾃﾞｰﾀをUDRnに書くか、ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込みを禁止するかのどちらかを行わなければならず、さもなければ一旦割り込
みﾙｰﾁﾝを終了しても新しい割り込みが(継続的に)起こります。
送信完了(TXCn)ﾌﾗｸﾞは送信移動ﾚｼﾞｽﾀ内の完全なﾌﾚｰﾑが移動出力されてしまい、送信緩衝部に新規ﾃﾞｰﾀが現在存在しない時に設定(1)されます。TXCnﾌﾗｸﾞは送信完了割り込みが実行されるとき、自動的に解除(0)されるか、またはこのﾋﾞｯﾄ位置に1を書くことによっても解除(0)できます。TXCnﾌﾗｸﾞは送信応用ﾌﾟﾛｸﾞﾗﾑが送信完了後、直ちに通信回線を開放し、受信動作へ移行しなければならない(RS485規格のような)半二重(ﾊｰﾌﾃﾞｭｰﾌﾟﾚｯｸｽ)通信ｲﾝﾀｰﾌｪｰｽで有用です。
UCSRnBで送信完了割り込み許可(TXCIEn)ﾋﾞｯﾄが設定(1)され、(全割り込みが許可されていれば)TXCnﾌﾗｸﾞが設定(1)になる時に
USART送信完了割り込みが実行されます。送信完了割り込みが使われるとき、割り込み処理ﾙｰﾁﾝはTXCnﾌﾗｸﾞを解除(0)しなくてもよく、これは割り込みが実行されるとき、自動的に行われます。

18.5.4. ﾊﾟﾘﾃｨ発生器
ﾊﾟﾘﾃｨ発生器は直列ﾌﾚｰﾑ ﾃﾞｰﾀに対するﾊﾟﾘﾃｨ ﾋﾞｯﾄを計算します。ﾊﾟﾘﾃｨ ﾋﾞｯﾄが許可されると(UPMn1=1)、送信部制御論理回路は送られているﾌﾚｰﾑの最終ﾃﾞｰﾀ ﾋﾞｯﾄと最初の停止ﾋﾞｯﾄ間にﾊﾟﾘﾃｨ ﾋﾞｯﾄを挿入します。

18.5.5. 送信の禁止
送信部の禁止(UCSRnBのUSART送信許可(TXENn)ﾋﾞｯﾄ=0)は進行中と保留中の送信が完了される(換言すると、送信移動ﾚｼﾞｽﾀと送信緩衝ﾚｼﾞｽﾀが送信されるべきﾃﾞｰﾀを含まない時)まで有効になりません。禁止されると、送信部はもはやTXDnﾋﾟﾝ(の標準ﾋﾟﾝ機能)を無効にしません。

18.6. USARTのﾃﾞｰﾀ受信
USART受信部はUSART制御/状態ﾚｼﾞｽﾀB(UCSRnB)で受信許可(RXENn)ﾋﾞｯﾄに1を書くことによって許可されます。受信部が許可されると、RXDnﾋﾟﾝの標準ﾋﾟﾝ動作はUSARTによって無視され、受信部の直列入力としての機能を与えられます。何か直列受信が行われ得る前に一度はﾎﾞｰﾚｰﾄ、ﾌﾚｰﾑ形式、動作種別が設定されなければなりません。同期動作が使われる場合、XCKnﾋﾟﾝのｸﾛｯｸは
転送ｸﾛｯｸとして使われます。

18.6.1. 5～8ﾋﾞｯﾄ ﾃﾞｰﾀ ﾌﾚｰﾑ受信
受信部は有効な開始ﾋﾞｯﾄを検出する時にﾃﾞｰﾀ受信を開始します。開始ﾋﾞｯﾄに続く各ﾋﾞｯﾄはﾎﾞｰﾚｰﾄまたはXCKnｸﾛｯｸで採取され、ﾌﾚｰﾑの最初の停止ﾋﾞｯﾄが受信されるまで受信移動ﾚｼﾞｽﾀ内へ移動されます。第2停止ﾋﾞｯﾄは受信部によって無視されます。最初の停止ﾋﾞｯﾄが受信されると(換言すると、受信移動ﾚｼﾞｽﾀに完全なﾌﾚｰﾑが存在すると)、この移動ﾚｼﾞｽﾀの内容は受信緩衝部内へ移されます。受信緩衝部はUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)I/O位置を読むことによって読めます。8ﾋﾞｯﾄ未満のﾌﾚｰﾑを使うとき、UDRnから読むﾃﾞｰﾀの上位ﾋﾞｯﾄは0で覆われます。
次のｺｰﾄﾞ例はUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の受信完了(RXCn)ﾌﾗｸﾞのﾎﾟｰﾘﾝｸﾞを基準とした簡単なUSART受信関数を示します。この関数が使われ得る前にUSARTが初期化されなければなりません。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
USART_Rx:
SBIS
UCSRnA,RXCn
RJMP
USART_Rx;
IN
R16,UDRn
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
unsigned char USART_Receive(void){
while ( !(UCSRnA & (1<<RXCn)) );return UDRn;};受信完了でｽｷｯﾌﾟ;受信完了待機;受信ﾃﾞｰﾀ取得;呼び出し元へ復帰/* 受信完了待機 *//* 受信ﾃﾞｰﾀ取得 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
この関数は緩衝部を読んで値を戻す前に、RXCnﾌﾗｸﾞの検査によって受信緩衝部にﾃﾞｰﾀが存在するのを単純に待ちます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]127

18.6.2. 9ﾋﾞｯﾄ ﾃﾞｰﾀ ﾌﾚｰﾑ受信
9ﾋﾞｯﾄ ﾃﾞｰﾀが使われる場合(UCSZn2～0=111)、USARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)から下位ﾊﾞｲﾄを読むのに先立って第9ﾋﾞｯﾄがUSART制御/状態ﾚｼﾞｽﾀB(UCSRnB)の受信ﾃﾞｰﾀ ﾋﾞｯﾄ8(RXB8n)ﾋﾞｯﾄから読まれなければなりません。この規則はﾌﾚｰﾐﾝｸﾞ異常(FEn)、ｵｰﾊﾞｰﾗﾝ
発生(DORn)、ﾊﾟﾘﾃｨ誤り(UPEn)状態ﾌﾗｸﾞにも適用されます。USART制御/状態ﾚｼﾞｽﾀA(UCSRnA)から状態情報を読み、その後に
UDRnからﾃﾞｰﾀを読んでください。UDRn I/O位置を読むことが受信FIFO緩衝部の状態を切り替え、その結果、FIFO内に保管される
RXB8n,FEn,DORn,UPEnﾋﾞｯﾄ全てが切り替わります。
次のｺｰﾄﾞ例は9ﾋﾞｯﾄ ﾃﾞｰﾀと状態ﾋﾞｯﾄ両方を扱う簡単なUSART受信関数を示します。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
USART_Rx:
SBIS
UCSRnA,RXCn
RJMP
USART_Rx;
IN
R18,UCSRnA
IN
R17,UCSRnB
IN
R16,UDRn
ANDI
R18,(1<<FEn)|(1<<DORn)|(1<<UPEn)
BREQ
USART_Rx_V;
LDI
R17,-1
LDI
R16,-1
USART_Rx_V: LSR
R17
ANDI
R17,$01
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
unsigned int USART_Receive(void){
unsigned char status, resh, resl;
while ( !(UCSRnA & (1<<RXCn)) );status = UCSRnA;
resh = UCSRnB;
resl = UDRn;
if ( status & ((1<<FEn)|(1<<DORn)|(1<<UPEn)) ) return -1;
resh = (resh>>1) & 0x01;
return ((resh<<8) | resl);};受信完了でｽｷｯﾌﾟ;受信完了待機;状態ﾌﾗｸﾞ取得;受信第9ﾋﾞｯﾄ取得;受信ﾃﾞｰﾀ取得;受信異常検査;異常なしで分岐;異常で-1値設定;;RXB8nﾋﾞｯﾄをﾋﾞｯﾄ0位置へ移動;RXB8nﾋﾞｯﾄのみ有効;呼び出し元へ復帰/* 一時変数定義 *//* 受信完了待機 *//* 状態ﾌﾗｸﾞ取得 *//* 受信第9ﾋﾞｯﾄ取得 *//* 受信ﾃﾞｰﾀ取得 *//* 受信異常で-1値設定/復帰 *//* RXB8nﾋﾞｯﾄのみ有効最下位へ *//* 結果9ﾋﾞｯﾄ ﾃﾞｰﾀ取得/復帰 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。
この受信関数例は何か評価を行う前に、全てのI/Oﾚｼﾞｽﾀをﾚｼﾞｽﾀ ﾌｧｲﾙに読みます。これは読まれた緩衝部位置が可能な限り早く新規ﾃﾞｰﾀを自由に受け入れできるため、最適な受信緩衝部利用になります。

18.6.3. 受信完了ﾌﾗｸﾞと割り込み
USART受信部には受信部の状態を示す1つのﾌﾗｸﾞがあります。
USART受信完了(RXCn)ﾌﾗｸﾞは未読ﾃﾞｰﾀが受信緩衝部に存在するかを示します。このﾌﾗｸﾞは受信緩衝部に未読ﾃﾞｰﾀが存在する時に1で、受信緩衝部が空の(換言すると、何も未読ﾃﾞｰﾀを含まない)時に0です。受信部が禁止される場合(RXENn=0)、受信緩衝部が破棄され、その結果としてRXCnﾌﾗｸﾞは0になります。
USART制御/状態ﾚｼﾞｽﾀB(UCSRnB)でUSART受信完了割り込み許可(RXCIEn)ﾋﾞｯﾄが設定(1)されると、(全割り込みが許可されていれば)RXCnﾌﾗｸﾞが設定(1)されている限り、USART受信完了割り込みが実行されます。割り込み駆動ﾃﾞｰﾀ受信が使われるとき、受信完了割り込みﾙｰﾁﾝはRXCnﾌﾗｸﾞを解除(0)するためにUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)から受信したﾃﾞｰﾀを読まなければならず、さもなけ
れば一旦割り込みﾙｰﾁﾝを終了しても新しい割り込みが(継続的に)起きます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]128

18.6.4. 受信異常ﾌﾗｸﾞ
USART受信にはﾌﾚｰﾐﾝｸﾞ異常(FEn)、ﾃﾞｰﾀ ｵｰﾊﾞｰﾗﾝ発生(DORn)、ﾊﾟﾘﾃｨ誤り(UPEn)の3つの異常ﾌﾗｸﾞがあります。これら全ては
USART制御/状態ﾚｼﾞｽﾀA(UCSRnA)を読むことでｱｸｾｽできます。異常ﾌﾗｸﾞに対する共通点は異常状態を示しているﾌﾚｰﾑと共に受信緩衝部に配置されることです。異常ﾌﾗｸﾞが緩衝されるため、USARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)I/O位置を読むことが緩衝部読み出し位置を切り替えるので、UCSRnAは受信緩衝部(UDRn)の前に読まれなければなりません。異常ﾌﾗｸﾞに対するその他の共通点はｿﾌﾄｳｪｱ
がこのﾌﾗｸﾞ位置へ書き込みを行うことによって変更できないことです。しかし、将来のUSART(機能)実装の上位互換性のため、
UCSRnAが書かれるとき、全てのﾌﾗｸﾞは0に設定されなければなりません。異常ﾌﾗｸﾞはどれも割り込みを生成できません。
ﾌﾚｰﾐﾝｸﾞ異常(FEn)ﾌﾗｸﾞは受信緩衝部に格納された、次に読み込み可能なﾌﾚｰﾑの第1停止ﾋﾞｯﾄの状態を示します。FEnﾌﾗｸﾞは停止
ﾋﾞｯﾄが正しく(Highとして)読まれた時に0で、停止ﾋﾞｯﾄが不正(Low)だった時にFEnﾌﾗｸﾞは1です。このﾋﾞｯﾄは同期外れ状態の検出、中断状態検出、規約での操作に使えます。受信部が最初(第1)以外の全停止ﾋﾞｯﾄを無視するため、FEnﾌﾗｸﾞはUSART制御/状態ﾚｼﾞｽ
ﾀC(UCSRnC)の停止ﾋﾞｯﾄ選択(USBSn)ﾋﾞｯﾄ設定によって影響を及ぼされません。将来のﾃﾞﾊﾞｲｽとの共通性のため、UCSRnAに書くとき、常にこのﾋﾞｯﾄを0に設定してください。
ﾃﾞｰﾀ ｵｰﾊﾞｰﾗﾝ発生(DORn)ﾌﾗｸﾞは受信部緩衝部が一杯状態のためのﾃﾞｰﾀ消失を示します。ﾃﾞｰﾀ ｵｰﾊﾞｰﾗﾝは受信緩衝部(2ﾌﾚｰﾑ)が一杯で、(次の)新規ﾌﾚｰﾑ ﾃﾞｰﾀが受信移動ﾚｼﾞｽﾀで待っており、(更に次の)新規開始ﾋﾞｯﾄが検出される時に起きます。DORnﾌﾗｸﾞが設定(1)なら、最後にUDRnから読んだﾌﾚｰﾑと次にUDRnから読むﾌﾚｰﾑ間で1つ以上の直列ﾌﾚｰﾑが失われています。将来のﾃﾞﾊﾞｲｽとの共通性のため、UCSRnAに書くとき、常にこのﾋﾞｯﾄに0を書いてください。DORnﾌﾗｸﾞは受信されたﾃﾞｰﾀが移動ﾚｼﾞｽﾀから受信緩衝部へ正常に移動された時に解除(0)されます。
ﾊﾟﾘﾃｨ誤り(UPEn)ﾌﾗｸﾞは受信緩衝部内の次のﾌﾚｰﾑで受信時にﾊﾟﾘﾃｨ異常があったことを示します。ﾊﾟﾘﾃｨ検査が許可されていない
場合、UPEnﾌﾗｸﾞは常に0が読めます。将来のﾃﾞﾊﾞｲｽとの共通性のため、UCSRnAに書くとき、常にこのﾋﾞｯﾄを0に設定してください。より多くの詳細については125頁の「ﾊﾟﾘﾃｨ ﾋﾞｯﾄの計算」と次の「ﾊﾟﾘﾃｨ検査器」をご覧ください。

18.6.5. ﾊﾟﾘﾃｨ検査器
ﾊﾟﾘﾃｨ検査器はﾊﾟﾘﾃｨ種別上位ﾋﾞｯﾄ(UPMn1)が設定(1)されると活性(有効)になります。実行されるべきﾊﾟﾘﾃｨ検査の形式(偶数または奇数)はUPMn0ﾋﾞｯﾄによって選択されます。許可されると、ﾊﾟﾘﾃｨ検査器は到着ﾌﾚｰﾑ内のﾃﾞｰﾀ ﾋﾞｯﾄのﾊﾟﾘﾃｨを計算し、その結果と(受信)直列ﾌﾚｰﾑ内のﾊﾟﾘﾃｨ ﾋﾞｯﾄを比較します。検査の結果は受信ﾃﾞｰﾀ、停止ﾋﾞｯﾄと共に受信緩衝部に格納されます。その後ﾊﾟﾘﾃｨ誤り(UPEn)ﾌﾗｸﾞはﾌﾚｰﾑにﾊﾟﾘﾃｨ異常があるかを検査するため、ｿﾌﾄｳｪｱによって読むことができます。
UPEnﾌﾗｸﾞは受信緩衝部から読まれ得る次ﾌﾚｰﾑで受信時にﾊﾟﾘﾃｨ異常があり、その時点でﾊﾟﾘﾃｨ検査が許可されていた(UPMn1=1)
場合に設定(1)されます。このﾋﾞｯﾄはUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)が読まれるまで有効です。

18.6.6. 受信の禁止
送信部と対照的に受信部の禁止は即時です。従って受信進行中のﾃﾞｰﾀは失われます。禁止されると(換言すると、USART制御/状態ﾚｼﾞｽﾀB(UCSRnB)のUSART受信許可(RXENn)ﾋﾞｯﾄが0に設定)、受信部はもはやRXDnﾎﾟｰﾄ ﾋﾟﾝの標準機能を無効にしません。受信FIFO緩衝部は受信部が禁止されると破棄されます。緩衝部内の残ﾃﾞｰﾀは失われます。

18.6.7. 受信緩衝部の破棄
受信FIFO緩衝部は受信が禁止されると破棄(換言すると、緩衝部は内容を空に)されます。未読ﾃﾞｰﾀは失われます。例えば異常状態のため、通常動作中に緩衝部が破棄されなければならない場合、USART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の受信完了(RXCn)ﾌﾗｸﾞが解除(0)されるまでUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)I/O位置を読んでください。次のｺｰﾄﾞ例は受信緩衝部の破棄方法を示します。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
USART_Flush: SBISUCSRnA,RXCn
RET;
IN
R16,UDRn
RJMP
USART_Flush
C言語ﾌﾟﾛｸﾞﾗﾑ例
void USART_Flush(void){
unsigned char dummy;
while ( UCSRnA & (1<<RXCn) ) dummy=UDRn;};未読ﾃﾞｰﾀありでｽｷｯﾌﾟ;未読ﾃﾞｰﾀなしで復帰;ﾃﾞｰﾀ受信;未読ﾃﾞｰﾀなしまで継続/* 一時変数定義 *//* 未読ﾃﾞｰﾀ読み捨て */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]129

18.7. 非同期受信
USARTは非同期ﾃﾞｰﾀ受信を扱うためのｸﾛｯｸ再生とﾃﾞｰﾀ再生部を含みます。ｸﾛｯｸ再生論理回路は内部的に生成したﾎﾞｰﾚｰﾄ ｸﾛｯｸをRXDnﾋﾟﾝに到着する非同期直列ﾌﾚｰﾑに同期化するのに使われます。ﾃﾞｰﾀ再生論理回路は到着ﾋﾞｯﾄ毎に低域通過の濾波と採取をし、それによって受信部の雑音耐性を改善します。非同期受信動作範囲は内部ﾎﾞｰﾚｰﾄ ｸﾛｯｸ精度、到着ﾌﾚｰﾑ速度、ﾌﾚｰﾑ長のﾋﾞｯﾄ数に依存します。

18.7.1. 非同期ｸﾛｯｸ再生
ｸﾛｯｸ再生論理回路は内部ｸﾛｯｸを到着直列ﾌﾚｰﾑに同期化します。図18-5.は到着ﾌﾚｰﾑの開始ﾋﾞｯﾄの採取手順を図解します。採取速度は標準速動作でﾎﾞｰﾚｰﾄの16倍、倍速動作で8倍です。赤帯(訳注:原文は水平矢印)は採取処理のための同期変量を図示します。倍速動作(U2Xn=1)を使う時の広い変量時間に注意してください。採取番号0はRXDn信号がｱｲﾄﾞﾙ(換言すると、通信の動きなし)の時に行われる採取です。
図18-5. 開始ﾋﾞｯﾄの採取
RXDn

ｱｲﾄﾞﾙ

採取位置
(U2Xn=0)0

採取位置(U2Xn=1)

0

0

1

2

1

3

4

2

5

6

3

7

開始ﾋﾞｯﾄ

ﾋﾞｯﾄ0

8

2

9 10 11 12 13 14 15 16 1

4

5

6

7

8

1

3
2

ｸﾛｯｸ再生論理回路がRXDn信号線でHigh(ｱｲﾄﾞﾙ)からLow(開始)の遷移を検出すると、開始ﾋﾞｯﾄ検出手順が開始されます。図で示されるように採取1は最初のLow採取を意味します。その後にｸﾛｯｸ再生回路は有効な開始ﾋﾞｯﾄが受信されるかを決めるために、標準速動作に対して採取8,9,10、倍速動作に対して採取4,5,6(図の赤数字(訳注:原文は箱枠内)で示された採取番号)を使います。これら3回で2回以上の採取が論理Highﾚﾍﾞﾙの場合(多数決)、この開始ﾋﾞｯﾄは尖頭雑音として捨てられ、受信部は次のHighからLowの遷
移を探し始めます。けれども有効な開始ﾋﾞｯﾄが検出されると、ｸﾛｯｸ再生論理回路は同期化され、ﾃﾞｰﾀ再生が開始されます。この同期化手順は各開始ﾋﾞｯﾄ毎に繰り返されます。

18.7.2. 非同期ﾃﾞｰﾀ再生
受信部ｸﾛｯｸが開始ﾋﾞｯﾄに同期化されるとﾃﾞｰﾀ再生が始められます。ﾃﾞｰﾀ再生部は標準速動作で16段、倍速動作で8段の順列回路を使います。図18-6.はﾃﾞｰﾀ ﾋﾞｯﾄとﾊﾟﾘﾃｨ ﾋﾞｯﾄの採取を示します。各採取は再生部の各段に等しい番号を与えられます。
図18-6. ﾃﾞｰﾀ ﾋﾞｯﾄとﾊﾟﾘﾃｨ ﾋﾞｯﾄの採取
RXDn ﾋﾞｯﾄn-1

ﾋﾞｯﾄn

採取位置
(U2Xn=0)15 16 1

採取位置
(U2Xn=1)

8

2

1

3

4

2

5

6

3

7

8

4

ﾋﾞｯﾄn+1

9 10 11 12 13 14 15 16 1
5

6

7

8

2

1

3
2

受信したﾋﾞｯﾄの論理値の決定は受信したﾋﾞｯﾄ中央の3採取で論理値の多数決を取ることによって行われます。この中央の3採取は図上の赤文字(訳注:原文は箱枠内)の採取番号によって強調されます。多数決の手順は次のように行われます。2または全3採取がHighﾚﾍﾞﾙならば受信したﾋﾞｯﾄは論理1が記録されます。2または全3採取がLowﾚﾍﾞﾙならば受信したﾋﾞｯﾄは論理0が記録されます。この多数決手順はRXDnﾋﾟﾝの到着信号に対して低域通過濾波器(ﾛｰﾊﾟｽ ﾌｨﾙﾀ)のように働きます。この再生手順はその後に完全なﾌﾚｰﾑが受信されるまで繰り返されます。これには最初の(第1)停止ﾋﾞｯﾄを含みます。受信部がﾌﾚｰﾑの最初の停止ﾋﾞｯﾄだけを使うことに注意してください。
図18-7.は停止ﾋﾞｯﾄの採取と次ﾌﾚｰﾑの最も早い開始ﾋﾞｯﾄ開始の可能性を示します。

図18-7. 停止ﾋﾞｯﾄの採取と次の開始ﾋﾞｯﾄの採取
RXDn

停止ﾋﾞｯﾄ

採取位置(U2Xn=0)15 16 1

採取位置
(U2Xn=1)

8

1

2

3
2

4

5
3

6

7
4

A
8

B 開始ﾋﾞｯﾄ C

9 10 0/1 0/1 0/1 14 15 16 1
5

6

0/1

8

1

2

3
2

ﾌﾚｰﾑ内の他のﾋﾞｯﾄに対して行われるのと同じ多数決が停止ﾋﾞｯﾄにも行われます。停止ﾋﾞｯﾄが論理0値と記録されると、ﾌﾚｰﾐﾝｸﾞ異常(FEn)ﾌﾗｸﾞが設定(1)されます。
新規ﾌﾚｰﾑの開始ﾋﾞｯﾄを示すHighからLowへの遷移は多数決に使った最後のﾋﾞｯﾄ後に実現できます。標準速動作での最初のLowﾚ
ﾍﾞﾙ採取は図18-7.のA点で有り得ます。倍速動作での最初のLowﾚﾍﾞﾙはB点に遅れます。C点は完全な長さの停止ﾋﾞｯﾄ(の終点)を示します。この早い開始ﾋﾞｯﾄ検出は受信部の動作範囲に影響します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]130

18.7.3. 非同期での動作範囲
受信部の動作範囲は受信したﾋﾞｯﾄ速度と内部的に生成したﾎﾞｰﾚｰﾄ間の不一致に依存します。送信部が速すぎるまたは遅すぎるﾋﾞｯ
ﾄ速度でﾌﾚｰﾑを送出したり、内部的に発生した受信部のﾎﾞｰﾚｰﾄが類似した(表18-2.参照)基準周波数を持たない場合、受信部は開始ﾋﾞｯﾄでﾌﾚｰﾑを同期できません。
次式は到着ﾃﾞｰﾀ速度と内部受信部ﾎﾞｰﾚｰﾄ間の比率計算に使えます。
Rslow =

(D+1)×S
S-1+D×S+SF

Rfast =

(D+2)×S(D+1)×S+SM

D: ﾃﾞｰﾀとﾊﾟﾘﾃｨのﾋﾞｯﾄ数 (5～10)
S: ﾋﾞｯﾄあたりの採取数 (標準速=16、倍速=8)SF: 多数決に使う最初の採取番号 (標準速=8、倍速=4)SM: 多数決に使う中心の採取番号 (標準速=9、倍速=5)
Rslow : は受信側ﾎﾞｰﾚｰﾄに対して許容できる最低受信ﾋﾞｯﾄ速度の比率です。
Rfast : は受信側ﾎﾞｰﾚｰﾄに対して許容できる最高受信ﾋﾞｯﾄ速度の比率です。
下表は許容できる最大受信部ﾎﾞｰﾚｰﾄ誤差一覧です。標準速動作には、より高いﾎﾞｰﾚｰﾄ変動許容力があることに注目してください。
表18-2. 標準速と倍速での受信部ﾎﾞｰﾚｰﾄ推奨最大許容誤差
標準速動作 (U2Xn=0)
倍速動作 (U2Xn=1)
D
Rslow(%) Rfast(%) 総合許容誤差(%) 推奨許容誤差(%) Rslow(%) Rfast(%) 総合許容誤差(%) 推奨許容誤差(%)
5
93.20
106.67-6.80～+6.67
94.12
105.66-5.88～+5.66
±3.0
±2.5
6
94.12
105.79±2.5
94.92
104.92-5.08～+4.92±2.0-5.88～+5.79
105.11
94.81-5.19～+5.11
±2.0
95.52
104.35-4.48～+4.35±1.5
7104.588
95.36-4.54～+4.58
±2.0
96.00
103.90-4.00～+3.90±1.5-4.19～+4.14
±1.5
96.39
103.53-3.61～+3.53
±1.5
9
95.81
104.1410
96.17
103.78-3.83～+3.78
±1.5
96.70
103.23-3.30～+3.23±1.0
注: Dはﾃﾞｰﾀ ﾋﾞｯﾄ数とﾊﾟﾘﾃｨ ﾋﾞｯﾄの合計ﾋﾞｯﾄ数です。
(訳注) 原書は表18-2.に標準速、表18-3.に倍速を記載していますが、比較が容易なように表18-2.として纏めました。
受信部ﾎﾞｰﾚｰﾄの推奨最大許容誤差は最大総合許容誤差を送信部と受信部で等分割するという仮定の元で作られました。
受信部ﾎﾞｰﾚｰﾄ誤差に対して2つの起こり得る原因があります。受信部のｼｽﾃﾑ ｸﾛｯｸ(XTAL)は供給電圧範囲と温度範囲に関して常に若干の不安定性があります。ｼｽﾃﾑ ｸﾛｯｸを生成するのにｸﾘｽﾀﾙ発振子を使う時は殆ど問題ありませんが、(ｾﾗﾐｯｸ)振動子でのｼｽ
ﾃﾑ ｸﾛｯｸは振動子偏差に依存して2%を越えて異なるかもしれません。2つ目の誤り原因はより制御可能です。ﾎﾞｰﾚｰﾄ発振器は欲したﾎﾞｰﾚｰﾄを得るためにｼｽﾃﾑ周波数の正確な分周を常に行うことはできません。この場合、可能ならば受け入れ可能な低い誤差を与えるUBRRn値が使えます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]131

18.8. 複数ﾌﾟﾛｾｯｻ通信動作
USART制御/状態ﾚｼﾞｽﾀA(UCSRnA)での複数ﾌﾟﾛｾｯｻ通信動作(MPCMn)ﾋﾞｯﾄの設定(1)はUSART受信部によって受信された到着ﾌ
ﾚｰﾑの選別機能を許可します。ｱﾄﾞﾚｽ情報を含まないﾌﾚｰﾑは無視され、受信緩衝部に格納されません。これは同一直列ﾊﾞｽ経由で通信する複数MCUのｼｽﾃﾑで、CPUによって扱われなければならない到着ﾌﾚｰﾑ数を効果的に減らします。送信部はMPCMnﾋﾞｯﾄ設
定によって影響されませんが、複数ﾌﾟﾛｾｯｻ通信動作を利用するｼｽﾃﾑの一部の時は違うふうに使われなければなりません。
受信部が5～8ﾃﾞｰﾀ ﾋﾞｯﾄを含むﾌﾚｰﾑを受信するように設定されるなら、最初の停止ﾋﾞｯﾄはﾃﾞｰﾀまたはｱﾄﾞﾚｽ情報を含むﾌﾚｰﾑかどうかを示します。受信部が9ﾃﾞｰﾀ ﾋﾞｯﾄのﾌﾚｰﾑに設定されるなら、USART制御/状態ﾚｼﾞｽﾀB(UCSRnB)の受信第9(RXB8n)ﾋﾞｯﾄがｱﾄﾞﾚｽとﾃﾞｰﾀのﾌﾚｰﾑを識別するのに使われます。ﾌﾚｰﾑ種別(最初の停止または第9)ﾋﾞｯﾄが1の時にﾌﾚｰﾑはｱﾄﾞﾚｽを含みます。ﾌﾚｰﾑ種別
ﾋﾞｯﾄが0の時にそのﾌﾚｰﾑはﾃﾞｰﾀ ﾌﾚｰﾑです。
複数ﾌﾟﾛｾｯｻ通信動作は主MCUからのﾃﾞｰﾀを多くの従MCUで受信することを可能にします。これはどのMCUがｱﾄﾞﾚｽ指定されるかを検出するため、最初にｱﾄﾞﾚｽ ﾌﾚｰﾑを調べることによって行われます。特定の従MCUがｱﾄﾞﾚｽ指定されたなら、そのMCUは後続するﾃﾞｰﾀ ﾌﾚｰﾑを通常のように受信し、一方その他の従MCUは他のｱﾄﾞﾚｽ ﾌﾚｰﾑが受信されるまで受信したﾌﾚｰﾑを無視します。

18.8.1. 複数ﾌﾟﾛｾｯｻ通信の使用法
主MCUとして動作するMCUは9ﾋﾞｯﾄ ﾃﾞｰﾀ ﾌﾚｰﾑ形式(UCSZn=7)を使えます。UCSRnBの送信第9(TXB8n)ﾋﾞｯﾄはｱﾄﾞﾚｽ ﾌﾚｰﾑ時に設定(1)、またはﾃﾞｰﾀ ﾌﾚｰﾑ時に解除(0)されて送信されなければなりません。この場合、従MCUは9ﾋﾞｯﾄ ﾃﾞｰﾀ ﾌﾚｰﾑ形式の使用に設定されなければなりません。
複数ﾌﾟﾛｾｯｻ通信動作でﾃﾞｰﾀを交換するのに次の手順が使われるべきです。
1. 全ての従MCUは複数ﾌﾟﾛｾｯｻ通信動作です(UCSRnAの複数ﾌﾟﾛｾｯｻ通信動作(MPCMn)ﾋﾞｯﾄが設定(1))。
2. 主MCUはｱﾄﾞﾚｽ ﾌﾚｰﾑを送り、全ての従装置がこのﾌﾚｰﾑを受信し、これを読みます。従CPUでは通常のようにUCSRnAで受信完了(RXCn)ﾌﾗｸﾞが設定(1)されます。
3. 各従MCUはUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)を読み、選択されたかを判定します。選択された場合はUCSRnAのMPCMnﾋﾞｯﾄを解除(0)し、そうでなければ(非選択の場合は)MPCMnﾋﾞｯﾄ設定を保ち、次のｱﾄﾞﾚｽ ﾌﾚｰﾑを待ちます。
4. ｱﾄﾞﾚｽ指定されたMCUは新規ｱﾄﾞﾚｽ ﾌﾚｰﾑが受信されるまで全ﾃﾞｰﾀ ﾌﾚｰﾑを受信します。MPCMnﾋﾞｯﾄが未だ設定(1)されている
他の従CPUはこのﾃﾞｰﾀ ﾌﾚｰﾑを無視します。
5. 最後のﾃﾞｰﾀ ﾌﾚｰﾑがｱﾄﾞﾚｽ指定されたMCUによって受信されると、ｱﾄﾞﾚｽ指定されたMCUはMPCMnﾋﾞｯﾄを設定(1)し、主装置からの新規ｱﾄﾞﾚｽ ﾌﾚｰﾑを待ちます。以降、手順は2.からを繰り返します。
5～8ﾋﾞｯﾄ ﾃﾞｰﾀ ﾌﾚｰﾑ形式のどの使用も可能ですが、受信側が使うnとn+1ﾋﾞｯﾄ ﾃﾞｰﾀ ﾌﾚｰﾑ形式間を切り替えなければならないため非実用的です。これは送信部と受信部が同じﾃﾞｰﾀ ﾋﾞｯﾄ長設定を使うため、全二重(ﾌﾙﾃﾞｭｰﾌﾟﾚｯｸｽ)動作を困難にします。5～8ﾋﾞｯﾄ
ﾃﾞｰﾀ ﾌﾚｰﾑが使われる場合、最初の停止ﾋﾞｯﾄがﾌﾚｰﾑ種別を示すのに使われるので、送信部は2停止ﾋﾞｯﾄ使用(USBSn=1)に設定されなければなりません。
MPCMnﾋﾞｯﾄを設定(1)または解除(0)するのに読み-修正-書き(ﾘｰﾄﾞ ﾓﾃﾞﾌｧｲ ﾗｲﾄ)命令(SBIとCBI)を使ってはいけません。MPCMnﾋﾞｯ
ﾄは送信完了(TXCn)ﾌﾗｸﾞと同じI/O位置を共用しており、SBIまたはCBI命令を使うと偶然に解除(0)されるかもしれません。
(訳注) ATmega16U4/32U4ではUCSRnAのI/OｱﾄﾞﾚｽがSBI,CBI命令適用範囲外のため、上記記述は不適切です。
但し、命令の組み合わせによって同様処理を行う場合に対して、上記注意の本意は適切(有効)です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]132

18.9. ﾊｰﾄﾞｳｪｱ流れ(ﾌﾛｰ)制御
ﾊｰﾄﾞｳｪｱ流れ制御はｿﾌﾄｳｪｱによって許可できます。
CTS : Clear to Send (相手側からの送信要求/許可信号入力)
RTS : Request to Send (相手側への送信要求/許可信号出力)

相手側

TXD
RXD
CTS
RTS

TXD
RXD
ATmega16U4/32U4
CTS
RTS

18.9.1. 受信部流れ制御
受信の流れはRTSﾋﾟﾝを使うﾊｰﾄﾞｳｪｱによって制御されます。この流れ制御の狙いは内部受信FIFOが満杯の時に外部の送信部へ通知することです。従ってその送信部は文字送信を停止できます。RTS使用と関連する流れ制御はUSART制御/状態ﾚｼﾞｽﾀD(UCSRD)のRTS許可(RTSEN)ﾋﾞｯﾄを使うことで許可されます。
図18-8.は受信例を示します。

図18-8. 受信流れ制御波形例
CPU読み出し0

FIFO指示子

1

第1文字

RXD

2

1

0

1

第3文字

第2文字

RTS
図18-9. RTSの動き
RXD

第1ﾊﾞｲﾄ

第2ﾊﾞｲﾄ

第3ﾊﾞｲﾄRTS
CPU読み出し: 開始ﾋﾞｯﾄ: 停止ﾋﾞｯﾄ

送信側でRTSの↑が間に合わなかった場合、追加の1ﾊﾞｲﾄが送信されるかもしれません。

RTSは受信FIFOが満杯の場合、最終受信停止ﾋﾞｯﾄの2/3で上昇します。
確かな送信を保証するため、RTS上昇後も追加ﾃﾞｰﾀを未だ受信でき、受信移動ﾚｼﾞｽﾀ内に格納されます。

18.9.2. 送信部流れ制御
送信の流れは外部の受信部によって制御されるCTSﾋﾟﾝを使うﾊｰﾄﾞｳｪｱによって制御されます。この流れ制御の狙いは(外部の)受信
部がﾃﾞｰﾀ満杯(CTS=1)の時に(こちらからの)送信を停止することです。CTS使用と関連する流れ制御はUSART制御/状態ﾚｼﾞｽﾀD(UCSRD)のCTS許可(CTSEN)ﾋﾞｯﾄを使うことで許可されます。
CTSﾋﾟﾝは各CPU書き込みと現状送信中の最終停止ﾋﾞｯﾄの中央で採取されます。

図18-10. CTSの動き
CPU書き込み
TXD

第2ﾊﾞｲﾄ

第1ﾊﾞｲﾄ

第3ﾊﾞｲﾄCTS: 開始ﾋﾞｯﾄ: 停止ﾋﾞｯﾄ: 採取

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]133

18.10. ﾎﾞｰﾚｰﾄ設定例
標準的なｸﾘｽﾀﾙ発振子やｾﾗﾐｯｸ振動子の周波数に対して最も一般的に使われる非同期動作のﾎﾞｰﾚｰﾄは表18-4.のUBRRn設定を使うことによって生成できます。目的のﾎﾞｰﾚｰﾄに対して設定誤差1.5%(標準速:U2X=0)、1.0%(倍速:U2X=1)以上を赤字で示します(訳
注:原書の本文は0.5%未満を太字)。より高い誤差率でも受け入れ可能ですが、特に長い直列ﾌﾚｰﾑ(131頁の「非同期での動作範
囲」参照)で誤差率が高いと、受信部は雑音耐性が低下します。誤差率は次式を使って計算されます。
誤差率(%) =- 1 ) ×100(%)( UBRRn設定ﾎﾞｰﾚｰﾄ(最近似値)
目的のﾎﾞｰﾚｰﾄ

表18-4. Xtal、ﾎﾞｰﾚｰﾄ対UBRRnH,UBRRnL設定 (UBRR=UBRRnH:UBRRnL)
ﾎﾞｰﾚｰﾄ
(bps)
1200
2400
4800
9600
14400
19200
28800
38400
57600
76800
115.2k
230.4k250k
最高速
ﾎﾞｰﾚｰﾄ
(bps)
1200
2400
4800
9600
14400
19200
28800
38400
57600
76800
115.2k
230.4k
250k
500k
1M
最高速

1MHz
1.8432MHz
2MHz
2.4576MHz
U2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%)
51
0.2
103
0.2
95
0.0
191
0.0
103
0.2
207
0.2
127
0.0
255
0.0
25
0.2
51
0.2
47
0.0
95
0.0
51
0.2
103
0.2
63
0.0
127
0.0
12
0.2
25
0.2
23
0.0
47
0.0
25
0.2
51
0.2
31
0.0
63
0.0
6
-7.0
12
0.2
11
0.0
23
0.0
12
0.2
25
0.2
15
0.0
31
0.0
3
8.5
8
-3.5
7
0.0
15
0.0
8
-3.5
16
2.1
10
-3.0
20
1.6
2
8.5
6
-7.0
5
0.0
11
0.0
6
-7.0
12
0.2
7
0.0
15
0.0
1
8.5
3
8.5
3
0.0
7
0.0
3
8.5
8
-3.5
4
6.7
10
-3.0
1
-18.6
2
8.5
2
0.0
5
0.0
2
8.5
6
-7.0
3
0.0
7
0.0
0
8.5
1
8.5
1
0.0
3
0.0
1
8.5
3
8.5
2
-11.1
4
6.7
0
-18.6
1
-18.6
1
-25.0
2
0.0
1
-18.6
2
8.5
1
0.0
3
0.0
0
8.5
0
0.0
1
0.0
0
8.5
1
8.5
0
33.3
2
-11.1
0
-45.7
0
-50.0
0
0.0
0
-45.7
0
8.5
0
-33.3
0
33.3
0
-7.8
0
0.0
0
22.9
62500
125k
115.2k
230.4k125k
250k
153.6k
307.2k
3.2768MHz
3.6864MHz
4MHz
4.608MHzU2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%)
170
-0.2
340
0.1
191
0.0
384
0.0
207
0.2
416
-0.1
239
0.0
479
0.0
84
0.4
170
-0.2
95
0.0
191
0.0
103
0.2
207
0.2
119
0.0
239
0.0
42
-0.8
84
0.4
47
0.0
95
0.0
51
0.2
103
0.2
59
0.0
119
0.0
20
1.6
42
-0.8
23
0.0
47
0.0
25
0.2
51
0.2
29
0.0
59
0.0
13
1.6
27
1.6
15
0.0
31
0.0
16
2.1
34
-0.8
19
0.0
39
0.0
10
-3.0
20
1.6
11
0.0
23
0.0
12
0.2
25
0.2
14
0.0
29
0.0
6
1.6
13
1.6
7
0.0
15
0.0
8
-3.5
16
2.1
9
0.0
19
0.0
4
6.7
10
-3.0
5
0.0
11
0.0
6
-7.0
12
0.2
7
-6.3
14
0.0
3
-11.1
6
1.6
3
0.0
7
0.0
3
8.5
8
-3.5
4
0.0
9
0.0
2
-11.1
4
6.7
2
0.0
5
0.0
2
8.5
6
-7.0
3
-6.3
7
-6.3
1
-11.1
3
-11.1
1
0.0
3
0.0
1
8.5
3
8.5
2
-16.7
4
0.0
0
-11.1
1
-11.1
0
0.0
1
0.0
0
8.5
1
8.5
0
25.0
2
-16.7
1
-18.1
0
-7.8
1
-7.8
0
0.0
1
0.0
0
15.2
1
15.2
0
-18.1
0
-7.8
0
0.0
0
-42.4
0
15.2
0
-42.4
204.8k
409.6k
230.4k
460.8k
250k
500k
288k
576k

注: 最高速はUBRR=0、誤差=0.0%です。

以降の周波数は次頁へ続く。

(訳注) 原書では頁割された表毎に表番号4.～6.となっていますが、共通性から纏めて表18-4.としました。
原書に対して数種の発振周波数を追加しました。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]134表18-4 (続き). Xtal、ﾎﾞｰﾚｰﾄ対UBRRnH,UBRRnL設定 (UBRR=UBRRnH:UBRRnL)
ﾎﾞｰﾚｰﾄ
(bps)
1200
2400
4800
9600
14400
19200
28800
38400
57600
76800
115.2k
230.4k
250k
500k
1M
最高速
ﾎﾞｰﾚｰﾄ
(bps)
1200
2400
4800
9600
14400
19200
28800
38400
57600
76800
115.2k
230.4k
250k
500k
1M
最高速

4.9152MHz
6.144MHz
7.3728MHz
8MHz
U2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%)
255
0.0
511
0.0
319
0.0
639
0.0
383
0.0
767
0.0
416
-0.1
832
0.0
127
0.0
255
0.0
159
0.0
319
0.0
191
0.0
383
0.0
207
0.2
416
-0.1
63
0.0
127
0.0
79
0.0
159
0.0
95
0.0
191
0.0
103
0.2
207
0.2
31
0.0
63
0.0
39
0.0
79
0.0
47
0.0
95
0.0
51
0.2
103
0.2
20
1.6
42
-0.8
26
-1.2
52
0.6
31
0.0
63
0.0
34
-0.8
68
0.6
15
0.0
31
0.0
19
0.0
39
0.0
23
0.0
47
0.0
25
0.2
51
0.2
10
-3.0
20
1.6
12
2.6
26
-1.2
15
0.0
31
0.0
16
2.1
34
-0.8
7
0.0
15
0.0
9
0.0
19
0.0
11
0.0
23
0.0
12
0.2
25
0.2
4
6.7
10
-3.0
6
-4.8
12
2.6
7
0.0
15
0.0
8
-3.5
16
2.1
3
0.0
7
0.0
4
0.0
9
0.0
5
0.0
11
0.0
6
-7.0
12
0.2
2
-11.1
4
6.7
2
11.1
6
-4.8
3
0.0
7
0.0
3
8.5
8
-3.5
1
33.3
2
-11.1
1
-16.7
2
11.1
1
0.0
3
0.0
1
8.5
3
8.5
1
22.9
2
-18.1
1
-23.2
2
2.4
1
-7.8
3
0.0
1
0.0
3
0.0
0
-38.6
0
22.9
0
-23.2
1
-23.2
0
-7.8
1
-7.8
0
0.0
1
0.0
0
-38.6
0
-23.2
0
-7.8
0
0.0
307.2k
614.4k384k
768k
460.8k
921.6k
500k
1M
9.216MHz
9.8304MHz
10MHz
11.0592MHz
U2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%)
479
0.0
959
0.0
511
0.0
1023
0.0
520
-0.0
1041
-0.0
575
0.0
1151
0.0
239
0.0
479
0.0
255
0.0
511
0.0
259
0.2
520
-0.0
287
0.0
575
0.0
119
0.0
239
0.0
127
0.0
255
0.0
129
0.2
259
0.2
143
0.0
287
0.0
59
0.0
119
0.0
63
0.0
127
0.0
64
0.2
129
0.2
71
0.0
143
0.0
39
0.0
79
0.0
42
-0.8
84
0.4
42
0.9
86
-0.2
47
0.0
95
0.0
29
0.0
59
0.0
31
0.0
63
0.0
32
-1.4
64
0.2
35
0.0
71
0.0
19
0.0
39
0.0
20
1.6
42
-0.8
21
-1.4
42
0.9
23
0.0
47
0.0
14
0.0
29
0.0
15
0.0
31
0.0
15
1.8
32
-1.4
17
0.0
35
0.0
9
0.0
19
0.0
10
-3.0
20
1.6
10
-1.4
21
-1.4
11
0.0
23
0.0
7
6.7
14
0.0
7
0.0
15
0.0
7
1.8
15
1.8
8
0.0
17
0.0
4
0.0
9
0.0
4
6.7
10
-3.0
4
8.5
10
-1.4
5
0.0
11
0.0
2
-16.7
4
0.0
2
-11.1
4
6.7
2
-9.6
4
8.5
2
0.0
5
0.0
1
15.2
4
-7.8
1
-23.2
4
-1.7
2
-16.7
4
0.0
2
-7.8
5
-7.8
0
15.2
1
15.2
0
22.9
1
22.9
0
25.0
2
-16.7
0
38.2
2
-7.8
0
-42.4
0
15.2
0
-38.6
0
22.9
0
-37.5
0
25.0
0
-30.9
0
38.2
576k
1.152M
614.4k
1.2288M
625k
1.25M
691.2k
1.3824M

14.7456MHz
16MHz
18.4320MHz
20MHz
U2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1U2Xn=0U2Xn=1UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%) UBRR 誤差(%)
1200
767
0.0
1533
0.0
832
0.0
1666
0.0
959
0.0
1919
0.0
1041
0.0
2082
0.0
2400
383
0.0
767
0.0
416
-0.1
832
0.0
479
0.0
959
0.0
520
0.0
1041
0.0
4800
191
0.0
383
0.0
207
0.2
416
-0.1
239
0.0
479
0.0
259
0.2
520
0.0
9600
95
0.0
191
0.0
103
0.2
207
0.2
119
0.0
239
0.0
129
0.2
259
0.2
14400
63
0.0
127
0.0
68
0.6
138
-0.1
79
0.0
159
0.0
86
-0.2
173
-0.2
19200
47
0.0
95
0.0
51
0.2
103
0.2
59
0.0
119
0.0
64
0.2
129
0.2
28800
31
0.0
63
0.0
34
-0.8
68
0.6
39
0.0
79
0.0
42
0.9
86
-0.2
38400
23
0.0
47
0.0
25
0.2
51
0.2
29
0.0
59
0.0
32
-1.4
64
0.2
57600
15
0.0
31
0.0
16
2.1
34
-0.8
19
0.0
39
0.0
21
-1.4
42
0.9
76800
11
0.0
23
0.0
12
0.2
25
0.2
14
0.0
29
0.0
15
1.7
32
-1.4
115.2k
7
0.0
15
0.0
8
-3.5
16
2.1
9
0.0
19
0.0
10
-1.4
21
-1.4
230.4k
3
0.0
7
0.0
3
8.5
8
-3.5
4
0.0
9
0.0
4
8.5
10
-1.4
250k
3
-7.8
6
5.3
3
0.0
7
0.0
4
-7.8
8
2.4
4
0.0
9
0.0
500k
1
-7.8
3
-7.8
1
0.0
3
0.0
1
15.2
4
-7.8
1
25.0
4
0.0
1M
0
-7.8
1
-7.8
0
0.0
1
0.0
0
15.2
1
15.2
0
25.0
1
25.0
921.6k
1.8432M
1M
2M
1.152M
2.304M
1.25M
2.5M
最高速

ﾎﾞｰﾚｰﾄ(bps)

注: 最高速はUBRR=0、誤差=0.0%です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]135

18.11. USART用ﾚｼﾞｽﾀ18.11.1. UDRn - USARTﾃﾞｰﾀ ﾚｼﾞｽﾀ (USART I/O Data Register)
ﾋﾞｯﾄ
($CE)
Read/Write
初期値

7

6

5

4

3

2

1

0

R/TXB7

R/TXB6

R/TXB5

R/TXB4

R/TXB3

R/TXB2

R/TXB1

R/TXB0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

UDRn

同じI/Oｱﾄﾞﾚｽを共用するUSART受信ﾃﾞｰﾀ緩衝ﾚｼﾞｽﾀとUSART送信ﾃﾞｰﾀ緩衝ﾚｼﾞｽﾀはUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀまたはUDRnとして引用しました。送信ﾃﾞｰﾀ緩衝ﾚｼﾞｽﾀ(TXB)はUDRnﾚｼﾞｽﾀ位置に書かれるﾃﾞｰﾀの転送先です。UDRnﾚｼﾞｽﾀ位置読み込みは受信ﾃﾞｰﾀ緩衝
ﾚｼﾞｽﾀ(RXB)の内容を返します。
5～7ﾋﾞｯﾄ ﾃﾞｰﾀでの上位未使用ﾋﾞｯﾄは送信部によって無視され、受信部によって0に設定されます。
送信緩衝部はUCSRnAで送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き(UDREn)ﾌﾗｸﾞが設定(1)される時にだけ書けます。UDREnﾌﾗｸﾞが設定(1)されない時にUDRnへ書かれたﾃﾞｰﾀはUSART送信部によって無視されます。送信部が許可されて送信緩衝部にﾃﾞｰﾀが書かれると、送信部は送信移動ﾚｼﾞｽﾀが空きの時にそのﾃﾞｰﾀを送信移動ﾚｼﾞｽﾀへ設定(移動)します。その後にﾃﾞｰﾀはTXDnﾋﾟﾝで直列送信されます。
受信緩衝部は2段のFIFOから成ります。このFIFOは受信緩衝部がｱｸｾｽされる毎にその状態を切り替えます。この受信緩衝部の動きのため、この位置に読み-修正-書き(ﾘｰﾄﾞ ﾓﾃﾞﾌｧｲ ﾗｲﾄ)命令(SBIとCBI)を使えません。ﾋﾞｯﾄ検査(SBICとSBIS)命令もFIFOの状態を換えるので、これらの命令を使う時は注意してください。 (訳注:適用範囲外命令のため、この注意は不適切です。)

18.11.2. UCSRnA - USART制御/状態ﾚｼﾞｽﾀA (USART Control and Status Register A)
ﾋﾞｯﾄ
($C8)
Read/Write
初期値

7

6

5

4

3

2

1

0

RXCn

TXCn

UDREn

FEn

DORn

UPEn

U2Xn

MPCMn

R
0

R/W
0

R
1

R
0

R
0

R
0

R/W
0

R/W
0

UCSRnA● ﾋﾞｯﾄ7 - RXCn : USART受信完了ﾌﾗｸﾞ (USART Receive Complete)

このﾌﾗｸﾞは受信緩衝部に未読ﾃﾞｰﾀがある時に設定(1)され、受信緩衝部が空の(換言すると、どんな未読ﾃﾞｰﾀも含まない)時に解除(0)されます。受信部が禁止されると、受信緩衝部が破棄され、その結果RXCnﾌﾗｸﾞは0になります。RXCnﾌﾗｸﾞは受信完了割り込みを発生するのに使えます(USART制御/状態ﾚｼﾞｽﾀB(UCSRnB)の受信完了割り込み許可(RXCIEn)ﾋﾞｯﾄをご覧ください)。
● ﾋﾞｯﾄ6 - TXCn : USART送信完了ﾌﾗｸﾞ (USART Transmit Complete)

このﾌﾗｸﾞは送信移動ﾚｼﾞｽﾀ内の完全なﾌﾚｰﾑが移動出力されてしまい、送信緩衝部(UDRn)に新規ﾃﾞｰﾀが現存しない時に設定(1)されます。TXCnﾌﾗｸﾞは送信完了割り込みが実行されるとき、自動的に解除(0)されるか、またはこのﾋﾞｯﾄ位置に1を書くことによって解除(0)できます。TXCnﾌﾗｸﾞは送信完了割り込みを発生できます(UCSRnBの送信完了割り込み許可(TXCIEn)ﾋﾞｯﾄをご覧ください)。
● ﾋﾞｯﾄ5 - UDREn : USART送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空きﾌﾗｸﾞ (USART Data Register Empty)

UDREnﾌﾗｸﾞは送信緩衝部(UDRn)が新規ﾃﾞｰﾀを受け取る準備ができているかどうかを示します。UDREnが1ならば緩衝部は空で、従って書かれる準備ができています。UDREnﾌﾗｸﾞは送信緩衝部空き割り込みを発生できます(UCSRnBの送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込み許可(UDRIEn)ﾋﾞｯﾄをご覧ください)。 送信部が準備できているのを示すため、ﾘｾｯﾄ後のUDREnは設定(1)です。
● ﾋﾞｯﾄ4 - FEn : ﾌﾚｰﾐﾝｸﾞ異常ﾌﾗｸﾞ (Framing Error)

受信緩衝部の次ﾃﾞｰﾀが受信した時にﾌﾚｰﾐﾝｸﾞ異常(換言すると、受信緩衝部で次ﾃﾞｰﾀの最初の(第1)停止ﾋﾞｯﾄがLow)だった場合、
このﾋﾞｯﾄが設定(1)されます。このﾌﾗｸﾞは受信緩衝部(UDRn)が読まれるまで有効です。受信したﾃﾞｰﾀの停止ﾋﾞｯﾄがHighの時にFEnﾌ
ﾗｸﾞは0です。UCSRnAに書くとき、常にこのﾋﾞｯﾄを0に設定してください。
● ﾋﾞｯﾄ3 - DORn : ﾃﾞｰﾀ ｵｰﾊﾞｰﾗﾝ発生ﾌﾗｸﾞ (Data OverRun)

このﾋﾞｯﾄはｵｰﾊﾞｰﾗﾝ状態が検出されると設定(1)されます。受信緩衝部(2ﾌﾚｰﾑ分)が一杯で、新規ﾌﾚｰﾑが受信移動ﾚｼﾞｽﾀ内で待機中に新規開始ﾋﾞｯﾄが検出されるとﾃﾞｰﾀ ｵｰﾊﾞｰﾗﾝが起こります。UCSRnAに書くとき、常にこのﾋﾞｯﾄを0に設定してください。
● ﾋﾞｯﾄ2 - UPEn : ﾊﾟﾘﾃｨ誤りﾌﾗｸﾞ (USART Parity Error)

受信緩衝部の次ﾃﾞｰﾀが受信した時にﾊﾟﾘﾃｨ異常があり、その時点でﾊﾟﾘﾃｨ検査が許可されていれば(UPMn1=1)、このﾋﾞｯﾄが設定(1)
されます。このﾌﾗｸﾞは受信緩衝部(UDRn)が読まれるまで有効です。UCSRnAに書くとき、常にこのﾋﾞｯﾄを0に設定してください。
● ﾋﾞｯﾄ1 - U2Xn : 倍速許可 (Double the USART Transmission Speed)

このﾋﾞｯﾄは非同期動作でだけ有効です。同期動作を使うとき、このﾋﾞｯﾄに0を書いてください。
このﾋﾞｯﾄに1を書くことはﾎﾞｰﾚｰﾄ分周器の分周値を16から8に減らして事実上、非同期通信の転送速度を倍にします。
● ﾋﾞｯﾄ0 - MPCMn : 複数ﾌﾟﾛｾｯｻ通信動作 (Multi-Processor Communication Mode)

このﾋﾞｯﾄは複数ﾌﾟﾛｾｯｻ通信動作を許可します。MPCMnﾋﾞｯﾄが1を書かれると、USART受信部によって受信したｱﾄﾞﾚｽ情報を含まな
い全到着ﾌﾚｰﾑは無視されます。送信部はMPCMn設定に影響されません。より多くの詳細情報については132頁の「複数ﾌﾟﾛｾｯｻ通信動作」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]136

18.11.3. UCSRnB - USART制御/状態ﾚｼﾞｽﾀB (USART Control and Status Register B)
ﾋﾞｯﾄ
($C9)
Read/Write
初期値

7

6

5

4

3

2

1

0

RXCIEnTXCIEnUDRIEn

RXENn

TXENn

UCSZn2

RXB8n

TXB8n

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R
0

R/W
0

UCSRnB● ﾋﾞｯﾄ7 - RXCIEn : 受信完了割り込み許可 (Receive Complete Interrupt Enable)

このﾋﾞｯﾄへの1書き込みはUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の受信完了(RXCn)ﾌﾗｸﾞでの割り込みを許可します。USART受信完了割り込みはRXCIEnﾋﾞｯﾄが1を書かれ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)で全割り込み許可(I)ﾋﾞｯﾄが1を書かれ、UCSRnAでRXCnﾌﾗｸﾞが設定(1)される場合にだけ生成されます。
● ﾋﾞｯﾄ6 - TXCIEn : 送信完了割り込み許可 (Transmit Complete Interrupt Enable)

このﾋﾞｯﾄへの1書き込みはUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の送信完了(TXCn)ﾌﾗｸﾞでの割り込みを許可します。USART送信完了割り込みはTXCIEnﾋﾞｯﾄが1を書かれ、SREGで全割り込み許可(I)ﾋﾞｯﾄが1を書かれ、UCSRnAでTXCnﾌﾗｸﾞが設定(1)される場合にだけ生成されます。
● ﾋﾞｯﾄ5 - UDRIEn : 送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込み許可 (Transmit Data Register Empty Interrupt Enable)

このﾋﾞｯﾄへの1書き込みはUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き(UDREn)ﾌﾗｸﾞでの割り込みを許可します。
USART送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込みはUDRIEnﾋﾞｯﾄが1を書かれ、SREGで全割り込み許可(I)ﾋﾞｯﾄが1を書かれ、UCSRnAでUDREnﾌ
ﾗｸﾞが設定(1)される場合にだけ生成されます。
● ﾋﾞｯﾄ4 - RXENn : 受信許可 (Receiver Enable)

このﾋﾞｯﾄへの1書き込みはUSART受信(部)を許可します。受信部は許可されるとRXDnﾋﾟﾝの標準ﾎﾟｰﾄ動作を無効にします。受信の禁
止は受信緩衝部を破棄し、ﾌﾚｰﾐﾝｸﾞ異常(FEn)、ｵｰﾊﾞｰﾗﾝ(DORn)、ﾊﾟﾘﾃｨ誤り(UPEn)のﾌﾗｸﾞを無効にします。
● ﾋﾞｯﾄ3 - TXENn : 送信許可 (Transmitter Enable)

このﾋﾞｯﾄへの1書き込みはUSART送信(部)を許可します。送信部は許可されるとTXDnﾋﾟﾝの標準ﾎﾟｰﾄ動作を無効にします。送信の禁止(TXENn=0書き込み)は進行中と保留中の送信が完了される(換言すると、送信移動ﾚｼﾞｽﾀと送信緩衝ﾚｼﾞｽﾀが送信されるべきﾃﾞｰﾀを含まない)まで有効になりません。禁止したとき、送信部はもはやTXDnﾎﾟｰﾄ(の標準I/O機能)を無効にしません。
● ﾋﾞｯﾄ2 - UCSZn2 : ﾃﾞｰﾀ ﾋﾞｯﾄ長選択2 (Character Size)

USART制御/状態ﾚｼﾞｽﾀC(UCSRnC)のUCSZn1,0ﾋﾞｯﾄと組み合わせたUCSZn2ﾋﾞｯﾄは送受信部で使うﾌﾚｰﾑのﾃﾞｰﾀ ﾋﾞｯﾄ数(Charactersize)を設定します。
● ﾋﾞｯﾄ1 - RXB8n : 受信ﾃﾞｰﾀ ﾋﾞｯﾄ8 (Receive Data Bit 8)

RXB8nは9ﾋﾞｯﾄ ﾃﾞｰﾀでの直列ﾌﾚｰﾑ操作時に受信したﾌﾚｰﾑの第9ﾃﾞｰﾀ ﾋﾞｯﾄ(ﾋﾞｯﾄ8)です。UDRnから下位ﾋﾞｯﾄを読む前に読んでください。
● ﾋﾞｯﾄ0 - TXB8n : 送信ﾃﾞｰﾀ ﾋﾞｯﾄ8 (Transmit Data Bit 8)

TXB8nは9ﾋﾞｯﾄ ﾃﾞｰﾀでの直列ﾌﾚｰﾑ操作時に送信されるべきﾃﾞｰﾀの第9ﾃﾞｰﾀ ﾋﾞｯﾄ(ﾋﾞｯﾄ8)です。UDRnへ下位ﾋﾞｯﾄを書く前に書いてください。

18.11.4. UCSRnC - USART制御/状態ﾚｼﾞｽﾀC (USART Control and Status Register C)
ﾋﾞｯﾄ
($CA)
Read/Write
初期値

7

6

5

UMSELn1 UMSELn0 UPMn1
R/W
0

R/W
0

R/W
0

4

3

2

UPMn0

USBSn

UCSZn1

R/W
0

R/W
0

R/W
1

1

0

UCSZn0 UCPOLn UCSRnC
R/W
1

R/W
0

● ﾋﾞｯﾄ7,6 - UMSELn1,0 : USART動作選択 (USART Mode Select)

このﾋﾞｯﾄは右で示されるようにUSART動作種別を選びます。

表18-7. USART動作選択
UMSELn1 UMSELn0
動作種別
0
非同期動作
0
1
同期動作
0
(予約)
1
1
主装置SPI (MSPIM) (注)
注: 主装置SPI動作(MSPIM)操作の完全な記述について
は140頁の「USARTでのSPI動作」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]137

● ﾋﾞｯﾄ5,4 - UPMn1,0 : ﾊﾟﾘﾃｨ選択 (Parity Mode)

これらのﾋﾞｯﾄはﾊﾟﾘﾃｨの発生と検査の許可と種別を設定します。許可した場合、送信部は各ﾌﾚｰﾑ内での送信したﾃﾞｰﾀ ﾋﾞｯﾄのﾊﾟﾘﾃｨを自動的に生成して送出します。受信部は到着ﾃﾞｰﾀからﾊﾟﾘﾃｨ値を生成し、UPMn0設定と比較します。不一致が検出されると、USART
制御/状態ﾚｼﾞｽﾀA(UCSRnA)でﾊﾟﾘﾃｨ誤り(UPEn)ﾌﾗｸﾞが設定(1)されます。

表18-8. ﾊﾟﾘﾃｨ選択
ﾊﾟﾘﾃｨ動作UPMn1 UPMn0
禁止
0
0
0
1
(予約)
1
0
偶数ﾊﾟﾘﾃｨ許可
1
1
奇数ﾊﾟﾘﾃｨ許可● ﾋﾞｯﾄ3 - USBSn : 停止ﾋﾞｯﾄ選択 (Stop Bit Select)

このﾋﾞｯﾄは送信部によって挿入される停止ﾋﾞｯﾄ数を選びます。受信部はこの設定を無視します(訳補:常に第1停止ﾋﾞｯﾄだけが有効)。

表18-9. 停止ﾋﾞｯﾄ選択
停止ﾋﾞｯﾄ数
USBSn
1ﾋﾞｯﾄ
0
2ﾋﾞｯﾄ
1

● ﾋﾞｯﾄ2,1 - UCSZn1,0 : ﾃﾞｰﾀ ﾋﾞｯﾄ長選択 (Character Size)

USART制御/状態ﾚｼﾞｽﾀB(UCSRnB)のUCSZn2ﾋﾞｯﾄと組み合わせたUCSZn1,0ﾋﾞｯﾄは送受信部で使うﾌﾚｰﾑのﾃﾞｰﾀ ﾋﾞｯﾄ数(Charactersize)を設定します。
表18-10. ﾃﾞｰﾀ ﾋﾞｯﾄ長選択
UCSZn2～0
000
001
010
011
100
101
110
111
5ﾋﾞｯﾄ
6ﾋﾞｯﾄ
7ﾋﾞｯﾄ
8ﾋﾞｯﾄ
(予約)
(予約)
(予約)
9ﾋﾞｯﾄ
ﾃﾞｰﾀ ﾋﾞｯﾄ数● ﾋﾞｯﾄ0 - UCPOLn : ｸﾛｯｸ極性選択 (Clock Polarity)

このﾋﾞｯﾄは同期動作に対してだけ使われます。非
同期動作が使われるとき、このﾋﾞｯﾄに0を書いてください。UCPOLnﾋﾞｯﾄは同期ｸﾛｯｸ(XCKn)、ﾃﾞｰﾀ
出力変更、ﾃﾞｰﾀ入力採取間の関係を設定します。

表18-11. XCKｸﾛｯｸ極性選択
UCPOLn 送信ﾃﾞｰﾀ変更 (TXDnﾋﾟﾝ出力) 受信ﾃﾞｰﾀ採取 (RXDnﾋﾟﾝ入力)
XCKnの上昇端0
XCKnの下降端
XCKnの下降端
1
XCKnの上昇端18.11.5. UCSRnD - USART制御/状態ﾚｼﾞｽﾀD (USART Control and Status Register D)
ﾋﾞｯﾄ
($CB)
Read/Write
初期値

7

6

5

4

3

2

-

-

-

-

-

-

R
0

R
0

R
0

R
0

R
0

R
0

1

0

CTSENn RTSENn
R/W
0

UCSRnD

R/W
0● ﾋﾞｯﾄ7～2 - Res : 予約 (Reserved Bits)

これらのﾋﾞｯﾄは予約されており、0として読めます。これらのﾋﾞｯﾄを設定(1)してはなりません。
● ﾋﾞｯﾄ1 - CTSENn : CTS許可 (USART CTS Enable)

送信流れ(ﾌﾛｰ)制御(CTS)信号を許可するにはﾌｧｰﾑｳｪｱによってこのﾋﾞｯﾄを設定(1)してください。送信はCTS入力が0の場合にだけ許可されます。送信流れ制御信号を禁止するにはこのﾋﾞｯﾄを解除(0)してください。送信はﾊｰﾄﾞｳｪｱ(制御)条件なしに起きます。この(CTS)ﾋﾟﾝを入力として許可するには、ﾃﾞｰﾀ方向ﾚｼﾞｽﾀの(対応)ﾋﾞｯﾄが正しく解除(0)されなければなりません。
● ﾋﾞｯﾄ0 - RTSENn : RTS許可 (USART RTS Enable)

受信流れ(ﾌﾛｰ)制御(RTS)信号を許可するにはﾌｧｰﾑｳｪｱによってこのﾋﾞｯﾄを設定(1)してください。この場合、RTS線はFIFOが一杯の時に自動的に上がり(Highになり)ます。受信流れ制御信号を禁止するにはこのﾋﾞｯﾄを解除(0)してください。この(RTS)ﾋﾟﾝを出力として許可するには、ﾃﾞｰﾀ方向ﾚｼﾞｽﾀの(対応)ﾋﾞｯﾄが正しく設定(1)されなければなりません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]138

18.11.6. UBRRnH, UBRRnL (UBRRn) - USARTﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ (USART Baud Rate Register)
ﾋﾞｯﾄ
($CD)
Read/Write
初期値
ﾋﾞｯﾄ
($CC)
Read/Write
初期値

15

14

13

12

11

10

9

8

-

-

-

-

UBRR11UBRR10

UBRR9

UBRR8

R
0

R
0

R
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

7

6

5

4

3

2

1

0

UBRR7

UBRR6

UBRR5

UBRR4

UBRR3

UBRR2

UBRR1

UBRR0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

UBRRnHUBRRnL● ﾋﾞｯﾄ15～12 - Res : 予約 (Reserved Bits)

これらのﾋﾞｯﾄは将来使用するために予約されています。将来のﾃﾞﾊﾞｲｽとの共通性のため、UBRRnHが書かれるとき、これらのﾋﾞｯﾄは0が書かれなければなりません。
● ﾋﾞｯﾄ11～0 - UBRR11～0 : ﾎﾞｰﾚｰﾄ分周値 (USART Baud Rate Register)

USARTのﾎﾞｰﾚｰﾄを含む12ﾋﾞｯﾄ ﾚｼﾞｽﾀです。UBRRnHがUSARTﾎﾞｰﾚｰﾄの上位4ﾋﾞｯﾄを含み、UBRRnLが下位8ﾋﾞｯﾄを含みます。ﾎﾞｰ
ﾚｰﾄが変更されると、送受信部で進行中の転送は不正にされます。UBRRnL書き込みはﾎﾞｰﾚｰﾄ前置分周器の更新を直ちに始めます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

139

19. USARTでのSPI動作
USART(Universal Synchronous and Asynchronous Receiver and Transmitter)は主装置SPI互換動作に設定できます。主装置SPI(MSPIM)は次の特徴を持ちます。
・ 全二重動作、3線同期ﾃﾞｰﾀ転送
・ 主装置動作・ 4つ全てのSPI転送形式(動作種別0,1,2,3)支援・ LSBまたはMSB先行ﾃﾞｰﾀ転送(ﾃﾞｰﾀ順設定)
・ 順列動作(2重緩衝)・ 高分解能ﾎﾞｰﾚｰﾄ発振器
・ 高速動作( f XCKmax= f CK/2)
・ 柔軟な割り込み生成

19.1. 概要
USART動作選択(UMSELn1,0)ﾋﾞｯﾄの11設定は主装置SPI(MSPIM)論理回路でのUSARTを許可します。この動作種別でのSPI主装置
制御論理回路はUSART資源を直接制御します。これらの資源には送受信の移動ﾚｼﾞｽﾀと緩衝部、ﾎﾞｰﾚｰﾄ発生器を含みます。ﾊﾟﾘ
ﾃｨ発生/検査論理回路、ﾃﾞｰﾀ/ｸﾛｯｸ再生論理回路、送受信制御論理回路は禁止されます。USART送受信論理回路は普通のSPI転送制御論理回路に置き換えられます。けれどもﾋﾟﾝ制御論理回路と割り込み生成論理回路は両動作種別で全く同じです。
I/Oﾚｼﾞｽﾀ位置は両動作種別で同じです。けれどもMSPIM使用時、制御ﾚｼﾞｽﾀの一部の機能が変わります。

19.2. ｸﾛｯｸ生成
ｸﾛｯｸ生成論理回路は送受信部に対する基準ｸﾛｯｸを生成します。USARTのMSPIM動作種別については内部ｸﾛｯ
ｸ生成(換言すると主装置動作)だけが支援されます。従って、USARTでMSPIMを正しく動作するにはXCKnﾋﾟﾝに対するﾃﾞｰﾀ方向ﾚｼﾞｽﾀ(DDR_XCKn)が1(換言すると出力)に設定されなければなりません。なるべくならDDR_XCKnはUSARTでのMSPIMが許可(換言するとTXENnとRXENnが1に設定)される前に設定されるべきです。
MSPIM動作で使われる内部ｸﾛｯｸ生成はUSART同期主装置動作と同一です。従ってﾎﾞｰﾚｰﾄやUBRRn設定は右表での同じ式を使って計算できます。

表19-1. ﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ(UBRRn)値計算式
動作種別
ﾎﾞｰﾚｰﾄ計算式
UBRRn値計算式
fOSC
fOSC
同期主装置動作 BAUD＝UBRRn＝-1
2×(UBRRn+1)
2×BAUD
注: ﾎﾞｰﾚｰﾄは転送速度(ﾋﾞｯﾄ/1秒)で定義されます。
BAUD : ﾎﾞｰﾚｰﾄ (bps)
UBRRn : UBRRnHとUBRRnLﾚｼﾞｽﾀ値 (0～4095)
fOSC : ｼｽﾃﾑ発振器ｸﾛｯｸ周波数

19.3. ﾃﾞｰﾀ転送形式
直列ﾃﾞｰﾀに関してはｸﾛｯｸ位相(UCPHAn)とｸﾛｯｸ極性(UCPOLn)制御ﾋﾞｯﾄによって決定されるXCKn(SCK)位相と極性で4つの組み合わせがあります。このﾃﾞｰﾀ転送ﾀｲﾐﾝｸﾞ図は図19-1.で示されます。ﾃﾞｰﾀ ﾋﾞｯﾄは安定のためにﾃﾞｰﾀ信号に対して充分な時間を保証するXCKn信号の反対端で移動出力と(入力)ﾗｯﾁが行われます。UCPOLnとUCPHAnの機能は下表で要約されます。これらﾋﾞｯﾄのどの変更も送受信両方に対して実行中の通信を不正とすることに注意してください。
表19-2. UCPOLn,UCPHAn機能動作
SPI動作種別番号 UCPOLn UCPHAn
0
0
0
1
1
0
0
2
1
1
3
1

XCKn(SCK)先行端
入力採取/上昇端
出力設定/上昇端
入力採取/下降端
出力設定/下降端

XCKn(SCK)後行端
出力設定/下降端
入力採取/下降端
出力設定/上昇端
入力採取/上昇端

図19-1. UCPHAnとUCPOLnによるﾃﾞｰﾀ転送ﾀｲﾐﾝｸﾞ
UCPOLn=0

UCPHAn=0

UCPHAn=1

UCPOLn=1

XCKn

XCKn

出力設定(TXDn)

出力設定(TXDn)

入力採取(RXDn)

入力採取(RXDn)

XCKn

XCKn

出力設定(TXDn)

出力設定(TXDn)

入力採取(RXDn)

入力採取(RXDn)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]140

19.4. ﾌﾚｰﾑ形式
MSPIMの直列ﾌﾚｰﾑは8ﾃﾞｰﾀ ﾋﾞｯﾄ/1ﾌﾚｰﾑに固定されます。USARTでのMSPIM動作は2つの有効なﾌﾚｰﾑ形式を持ちます。
● MSB先行 8ﾋﾞｯﾄ ﾃﾞｰﾀ
● LSB先行 8ﾋﾞｯﾄ ﾃﾞｰﾀ
ﾌﾚｰﾑは最下位(LSB)または最上位(MSB)のﾃﾞｰﾀ ﾋﾞｯﾄで始まります。その後次のﾃﾞｰﾀ ﾋﾞｯﾄが最後の最上位(MSB)または最下位(LSB)ﾃﾞｰﾀ ﾋﾞｯﾄまで合計8ﾋﾞｯﾄ続きます。完全なﾌﾚｰﾑが送信されると、新規ﾌﾚｰﾑが直ちに後続するか、または通信線がｱｲﾄﾞﾙ状態(high)に設定されるでしょう。
USART制御/状態ﾚｼﾞｽﾀC(UCSRnC)のﾃﾞｰﾀ順選択(UDORDn)ﾋﾞｯﾄはUSARTでのMSPIMによって使われるﾌﾚｰﾑ形式を設定します。
送受信部は同じ設定を使います。これらﾋﾞｯﾄのどれかの設定変更が送受信部両方に対して実行中の通信を不正にすることに注意してください。
16ﾋﾞｯﾄ ﾃﾞｰﾀ通信はUDRnに2ﾊﾞｲﾄ ﾃﾞｰﾀを書くことによって達せられます。その後のUSART送信完了割り込み(TXCn)はこの16ﾋﾞｯﾄ値が移動出力されてしまったことを示します。

19.4.1. USART MSPIM初期化
USARTでのMSPIM動作はどれかの通信が行われ得るのに先立って初期化されなければなりません。標準的な初期化手順は使用方法に依存するﾎﾞｰﾚｰﾄ設定、主装置動作操作(DDR_XCKnの1)設定、ﾌﾚｰﾑ形式設定、送受信部許可から成ります。送信部だけが独立して操作できます。割り込み駆動USART操作に関して初期化を行う時にｽﾃｰﾀｽ ﾚｼﾞｽﾀの全割り込み許可(I)ﾋﾞｯﾄが解除(0)され(、そして全割り込みが禁止され)るべきです。
注: XCKn出力の初期化を直ちに保証するため、ﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ(UBRRn)は送信部が許可される時に0でなければなりません。標準
動作のUSART操作と逆に、UBRRnは送信部が許可されて最初の送信が開始される前に、希望する値を書かれなければなりません。この初期化がﾘｾｯﾄ後直ちに行なわれるなら、UBRRnが0にﾘｾｯﾄされているので、送信部許可前にUBRRnを0に設定することは必要ありません。
ﾎﾞｰﾚｰﾄ、ﾃﾞｰﾀ転送形式またはﾌﾚｰﾑ形式の変更を伴う再初期化を行う前に、ﾚｼﾞｽﾀが変更される期間中に進行中の送信がないことを確実にしてください。USART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の送信完了(TXCn)ﾌﾗｸﾞは送信部の全転送完了検査に使え、受信完了(RXCn)ﾌﾗｸﾞは受信緩衝部内の未読ﾃﾞｰﾀ有無検査に使えます。この目的(次送信ﾀｲﾐﾝｸﾞ)にTXCnﾌﾗｸﾞが使われる場合、各々の送信(USARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)が書かれる)前にTXCnﾌﾗｸﾞが解除(0)されなければならないことに注意してください。
次の簡単なUSART初期化ｺｰﾄﾞ例が示すｱｾﾝﾌﾞﾘ言語とC言語の関数は機能的に同じです。この例はﾎﾟｰﾘﾝｸﾞを使う(割り込み不許可)と仮定します。ﾎﾞｰﾚｰﾄ(UBRRn)値は関数の引数として与えられます。ｱｾﾝﾌﾞﾘ言語でのﾎﾞｰﾚｰﾄ引数はR17:R16ﾚｼﾞｽﾀに格納されると仮定されます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
USART_Init: CLR
OUT
OUT
SBI
LDI

R18
;0値取得
UBRRnH,R18;ﾎﾞｰﾚｰﾄ設定(上位ﾊﾞｲﾄ)=0
UBRRnL,R18;ﾎﾞｰﾚｰﾄ設定(下位ﾊﾞｲﾄ)=0 (ｸﾛｯｸ停止)
XCKn_DDR,XCKn;XCKnﾎﾞｰﾄ ﾋﾟﾝ出力設定
R18,(1<<UMSELn1)|(1<<UMSELn0)|(0<<UCPHAn)|(0<<UCPOLn);動作種別値を取得
UCSRnC,R18;MSPI,ﾃﾞｰﾀ種別0設定
R18,(1<<RXENn)|(1<<TXENn);送受信許可値を取得
UCSRnB,R18;送受信許可UBRRnH,R17;ﾎﾞｰﾚｰﾄ設定(上位ﾊﾞｲﾄ)UBRRnL,R16;ﾎﾞｰﾚｰﾄ設定(下位ﾊﾞｲﾄ);呼び出し元へ復帰

OUT
LDI
OUT
OUT
OUT
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void USART_Init(unsigned int baud){
UBRRn = 0;/* ﾎﾞｰﾚｰﾄ設定(ｸﾛｯｸ停止) */XCKn_DDR |= (1<<XCKn;/* XCKnﾎﾞｰﾄ ﾋﾟﾝ出力設定 */UCSRnC = (1<<UMSELn1)|(1<<UMSELn0)|(0<<UCPHAn)|(0<<UCPOLn):/* MSPI,ﾃﾞｰﾀ種別0設定 */UCSRnB = (1<<RXENn)|(1<<TXENn);/* 送受信許可 */UBRRn = baud;/* ﾎﾞｰﾚｰﾄ設定 */}注: 5頁の「ｺｰﾄﾞ例」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]14119.5. ﾃﾞｰﾀ転送
USARTでのMSPI動作の使用は送信部が許可されること、換言するとUSART制御/状態ﾚｼﾞｽﾀB(UCSRnB)で送信許可(TXENn)ﾋﾞｯﾄが1に設定される必要があります。送信部が許可されると、TXDnﾋﾟﾝの標準ﾋﾟﾝ動作は無視され、送信部の直列出力としての機能を与えられます。受信部の許可は任意選択で、UCSRnBの受信許可(RXENn)ﾋﾞｯﾄの設定(=1)によって行なわれます。受信部が許可されると、RXDnﾋﾟﾝの標準ﾋﾟﾝ動作は無視され、受信部の直列入力としての機能を与えられます。XCKnは両方の場合で転送ｸﾛｯｸとして使われます。
初期化後、USARTはﾃﾞｰﾀ転送を行なう準備が整います。ﾃﾞｰﾀ転送はUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)I/O位置に書くことによって開始されます。送信部が転送ｸﾛｯｸを制御するため、これは送受信ﾃﾞｰﾀ両方の状態についてです。UDRnに書かれたﾃﾞｰﾀは移動ﾚｼﾞｽﾀが新規ﾌﾚｰﾑを送る準備が整った時に送信緩衝部から移動ﾚｼﾞｽﾀへ移されます。
注: 入力緩衝部に於いて送信されたﾃﾞｰﾀ ﾊﾞｲﾄ数との同期を保つために、送信された各ﾊﾞｲﾄに対して一度、UDRnが読まれなければなりません。入力緩衝操作は通常のUSART動作と同じで、換言すると、ｵｰﾊﾞｰﾗﾝが起きると、緩衝部内の先頭ではなく最後に受信したﾃﾞｰﾀが失われます。これは第1ﾊﾞｲﾄ、第2、第3、第4ﾊﾞｲﾄの順で4ﾊﾞｲﾄのﾃﾞｰﾀが送信され、全ての転送が完了される前にDDRnが読まれない場合、第1ﾊﾞｲﾄではなく、受信されるべき第3ﾊﾞｲﾄが失われます。
次のｺｰﾄﾞ例はUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き(UDREn)ﾌﾗｸﾞのﾎﾟｰﾘﾝｸﾞに基いた、簡単なUSARTでのMSPIM転送関数を示します。この関数が使われ得る前にUSARTが初期化されなければなりません。ｱｾﾝﾌﾞﾘ言語での送るべきﾃﾞｰﾀ
はR16ﾚｼﾞｽﾀに格納されると仮定され、受信したﾃﾞｰﾀは関数復帰後、同じR16ﾚｼﾞｽﾀで利用できます。
この関数は送信されるべき新規ﾃﾞｰﾀを設定する前に、UDREnの検査によって送信緩衝部が空になるのを単純に待ちます。その後、緩衝部を読んで値を戻す前に、RXCnﾌﾗｸﾞの検査によって受信緩衝部にﾃﾞｰﾀが存在するのを待ちます。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
USART_MSPI: SBISUCSRnA,UDREn
RJMP
USART_MSPI;
OUT
UDRn,R16
USART_SPIR: SBISUCSRnA,RXCn
RJMP
USART_SPIR;IN
R16,UDRn
RET
C言語ﾌﾟﾛｸﾞﾗﾑ例
void USART_MSPIM_Transfer(unsigned int data){
while ( !(UCSRnA & (1<<UDREn)) );UDRn = data;
while ( !(UCSRnA & (1<<RXCn)) );return UDRn;};送信緩衝部空きでｽｷｯﾌﾟ;送信緩衝部空き待機;ﾃﾞｰﾀ送信(送信開始);受信完了でｽｷｯﾌﾟ;受信完了待機;受信ﾃﾞｰﾀ取得;呼び出し元へ復帰/* 送信緩衝部空き待機 *//* ﾃﾞｰﾀ送信(送信開始) *//* 受信完了待機 *//* 受信ﾃﾞｰﾀ取得 */注: 5頁の「ｺｰﾄﾞ例」をご覧ください。

19.5.1. 送受信ﾌﾗｸﾞと割り込み
USARTのMSPI動作での受信完了(RXCn)、送信完了(TXCn)、送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き(UDREn)ﾌﾗｸﾞと対応する割り込みは通常のUSA
RT操作と機能的に同一です。けれども受信異常状態ﾌﾗｸﾞ(FEn,DORn,UPEn)は使えず、常に0として読まれます。

19.5.2. 送受信の禁止
USARTのMSPI動作での送受信部の禁止は通常のUSART操作と機能的に同一です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]142

19.6. USARTでのMSPIMとSPIの比較
USARTでのMSPI動作は次に関してSPIと完全な互換性があります。
● 主装置動作ﾀｲﾐﾝｸﾞ図● ｸﾛｯｸ極性選択(UCPOLn)ﾋﾞｯﾄはSPIのSCK極性選択(CPOL)ﾋﾞｯﾄと機能的に同じです。
● ｸﾛｯｸ位相選択(UCPHAn)ﾋﾞｯﾄはSPIのSCK位相選択(CPHA)ﾋﾞｯﾄと機能的に同じです。
● ﾃﾞｰﾀ順選択(UDORDn)ﾋﾞｯﾄはSPIのﾃﾞｰﾀ順選択(DORD)ﾋﾞｯﾄと機能的に同じです。
けれどもUSARTでのMSPI動作がUSART資源を再使用するため、USARTでのMSPI動作はSPIと比較して多少異なります。加えて制御ﾚｼﾞｽﾀ ﾋﾞｯﾄの差異、主装置動作だけがUSARTでのMSPI動作によって支援されること、2つの部間で異なる次の特質があります。
● USARTでのMSPI動作は送信部の(2重)緩衝部を含みます。SPIは緩衝部を持ちません。
● USARTのMSPI動作での受信部は追加の緩衝段を含みます。
● SPIの上書き(WCOL)ﾋﾞｯﾄはUSARTでのMSPI動作に含まれません。
● SPIの倍速許可(SPI2X)ﾋﾞｯﾄは含まれません。しかし、対応するﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ(UBRRn)設定によって同じ効果が達せられます。
● 割り込みﾀｲﾐﾝｸﾞに互換性はありません。
● USARTでのMSPI動作が主装置動作だけのため、ﾋﾟﾝ制御が異なります。
USARTのMSPI動作とSPIでのﾋﾟﾝは右表で示されます。
表19-3. USARTでのMSPIMとSPIのﾋﾟﾝ比較
USART MSPIM
TXDn
RXDn
XCKn
該当なし

SPI
MOSI
MISO
SCK
SS

備考
主装置出力のみ
主装置入力のみ(機能的に同一)
USARTでのMSPIMで未支援

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]143

19.7. MSPIMでのUSART用ﾚｼﾞｽﾀ
以下の節はUSARTを使うSPI操作で使われるﾚｼﾞｽﾀを記述します。

19.7.1. UDRn - USART MSPIMﾃﾞｰﾀ ﾚｼﾞｽﾀ (USART I/O Data Register)
MSPIMでのUSARTﾃﾞｰﾀ ﾚｼﾞｽﾀ(UDRn)の機能と説明は通常のUSART操作と同一です。136頁の「UDRn - USARTﾃﾞｰﾀ ﾚｼﾞｽﾀ」をご覧ください。

19.7.2. UCSRnA - USART MSPIM制御/状態ﾚｼﾞｽﾀA (USART Control and Status Register A)
ﾋﾞｯﾄ
($C8)
Read/Write
初期値

7

6

5

4

3

2

1

0

RXCn

TXCn

UDREn

-

-

-

-

-

R
0

R/W
0

R
1

R
0

R
0

R
0

R
1

R
0

UCSRnA● ﾋﾞｯﾄ7 - RXCn : USART受信完了ﾌﾗｸﾞ (USART Receive Complete)

このﾌﾗｸﾞは受信緩衝部に未読ﾃﾞｰﾀがある時に設定(1)され、受信緩衝部が空の(換言すると、どんな未読ﾃﾞｰﾀも含まない)時に解除(0)されます。受信部が禁止されると、受信緩衝部が破棄され、その結果RXCnﾌﾗｸﾞは0になります。RXCnﾌﾗｸﾞは受信完了割り込みを発生するのに使えます(USART制御/状態ﾚｼﾞｽﾀB(UCSRnB)の受信完了割り込み許可(RXCIEn)ﾋﾞｯﾄをご覧ください)。
● ﾋﾞｯﾄ6 - TXCn : USART送信完了ﾌﾗｸﾞ (USART Transmit Complete)

このﾌﾗｸﾞは送信移動ﾚｼﾞｽﾀ内の完全なﾌﾚｰﾑが移動出力されてしまい、送信緩衝部(UDRn)に新規ﾃﾞｰﾀが現存しない時に設定(1)されます。TXCnﾌﾗｸﾞは送信完了割り込みが実行されるとき、自動的に解除(0)されるか、またはこのﾋﾞｯﾄ位置に1を書くことによって解除(0)できます。TXCnﾌﾗｸﾞは送信完了割り込みを発生できます(UCSRnBの送信完了割り込み許可(TXCIEn)ﾋﾞｯﾄをご覧ください)。
● ﾋﾞｯﾄ5 - UDREn : USART送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空きﾌﾗｸﾞ (USART Data Register Empty)

UDREnﾌﾗｸﾞは送信緩衝部(UDRn)が新規ﾃﾞｰﾀを受け取る準備ができているかどうかを示します。UDREnが1ならば緩衝部は空で、従って書かれる準備ができています。UDREnﾌﾗｸﾞは送信緩衝部空き割り込みを発生できます(UCSRnBの送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込み許可(UDRIEn)ﾋﾞｯﾄをご覧ください)。 送信部が準備できているのを示すため、ﾘｾｯﾄ後のUDREnは設定(1)です。
● ﾋﾞｯﾄ4～0 - Res : 予約 (Reserved Bits in MSPI mode)

MSPI動作時、これらのﾋﾞｯﾄは将来の使用に予約されています。将来のﾃﾞﾊﾞｲｽとの共通性のため、これらのﾋﾞｯﾄはUCSRnAが書かれるとき、0が書かれなければなりません。

19.7.3. UCSRnB - USART MSPIM制御/状態ﾚｼﾞｽﾀB (USART Control nad Status Register B)
ﾋﾞｯﾄ
($C9)
Read/Write
初期値

7

6

5

4

3

2

1

0

RXCIEnTXCIEnUDRIEn

RXENn

TXENn

-

-

-

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R
1

R
1

R
0

UCSRnB● ﾋﾞｯﾄ7 - RXCIEn : 受信完了割り込み許可 (Receive Complete Interrupt Enable)

このﾋﾞｯﾄへの1書き込みはUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の受信完了(RXCn)ﾌﾗｸﾞでの割り込みを許可します。USART受信完了割り込みはRXCIEnﾋﾞｯﾄが1を書かれ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)で全割り込み許可(I)ﾋﾞｯﾄが1を書かれ、UCSRnAでRXCnﾌﾗｸﾞが設定(1)される場合にだけ生成されます。
● ﾋﾞｯﾄ6 - TXCIEn : 送信完了割り込み許可 (Transmit Complete Interrupt Enable)

このﾋﾞｯﾄへの1書き込みはUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の送信完了(TXCn)ﾌﾗｸﾞでの割り込みを許可します。USART送信完了割り込みはTXCIEnﾋﾞｯﾄが1を書かれ、SREGで全割り込み許可(I)ﾋﾞｯﾄが1を書かれ、UCSRnAでTXCnﾌﾗｸﾞが設定(1)される場合にだけ生成されます。
● ﾋﾞｯﾄ5 - UDRIEn : 送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込み許可 (Transmit Data Register Empty Interrupt Enable)

このﾋﾞｯﾄへの1書き込みはUSART制御/状態ﾚｼﾞｽﾀA(UCSRnA)の送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き(UDREn)ﾌﾗｸﾞでの割り込みを許可します。
USART送信ﾃﾞｰﾀ ﾚｼﾞｽﾀ空き割り込みはUDRIEnﾋﾞｯﾄが1を書かれ、SREGで全割り込み許可(I)ﾋﾞｯﾄが1を書かれ、UCSRnAでUDREnﾌ
ﾗｸﾞが設定(1)される場合にだけ生成されます。
● ﾋﾞｯﾄ4 - RXENn : 受信許可 (Receiver Enable)

このﾋﾞｯﾄへの1書き込みはMSPIMでのUSART受信(部)を許可します。受信部は許可されるとRXDnﾋﾟﾝの標準ﾎﾟｰﾄ動作を無効にします。受信の禁止は受信緩衝部を破棄します。MSPIＭで受信(部)だけの許可(換言するとRXENn=1とTXENn=0)は、主装置動作だけが支援されて送信(部)が転送ｸﾛｯｸを制御するので、意味を持ちません。
● ﾋﾞｯﾄ3 - TXENn : 送信許可 (Transmitter Enable)

このﾋﾞｯﾄへの1書き込みがUSART送信(部)を許可します。送信部は許可された時にTXDnﾋﾟﾝの標準ﾎﾟｰﾄ動作を無効にします。送信の禁止(TXENn=0書き込み)は進行中と保留中の送信が完了される(換言すると、送信移動ﾚｼﾞｽﾀと送信緩衝ﾚｼﾞｽﾀが送信されるべきﾃﾞｰﾀを含まない)まで有効になりません。禁止したとき、送信部はもはやTXDnﾎﾟｰﾄ(の標準I/O機能)を無効にしません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]144

● ﾋﾞｯﾄ2～0 - Res : 予約 (Reserved Bits in MSPI mode)

MSPI動作時、これらのﾋﾞｯﾄは将来の使用に予約されています。将来のﾃﾞﾊﾞｲｽとの共通性のため、これらのﾋﾞｯﾄはUCSRnBが書かれるとき、0が書かれなければなりません。

19.7.4. UCSRnC - USART MSPIM制御/状態ﾚｼﾞｽﾀC (USART Control nad Status Register C)
ﾋﾞｯﾄ
($CA)
Read/Write
初期値

7

6

UMSELn1 UMSELn0
R/W
0

R/W
0

5

4

3

-

-

-

R
0

R
0

R
0

2

1

0

UDORDn UCPHAn UCPOLn UCSRnC
R/W
1

R/W
1

R/W
0

● ﾋﾞｯﾄ7,6 - UMSELn1,0 : USART動作選択 (USART Mode Select)

このﾋﾞｯﾄは表で示されるようにUSART動作種別を選びます。通常USART操作の完全な記述については、137頁の「UCSRnC - USART制御/状態ﾚｼﾞｽﾀC」をご覧ください。主装置SPI動作(MSPIM)は両UMSELnﾋﾞｯﾄが1に設定される時に許可されます。ﾃﾞｰﾀ順選択(UDORDn)、ｸﾛｯｸ位相選択(UCPHAn)、ｸﾛｯｸ極性選択(UC
POLn)はMSPIMが許可されるのと同じ書き込み操作で設定できます。

表19-4. USART動作選択
UMSELn1 UMSELn0
動作種別
0
非同期動作
0
1
同期動作
0
(予約)
1
1
主装置SPI (MSPIM)● ﾋﾞｯﾄ5～3 - Res : 予約 (Reserved Bits in MSPI mode)

MSPI動作時、これらのﾋﾞｯﾄは将来の使用に予約されています。将来のﾃﾞﾊﾞｲｽとの共通性のため、これらのﾋﾞｯﾄはUCSRnCが書かれるとき、0が書かれなければなりません。
● ﾋﾞｯﾄ2 - UDORDn : ﾃﾞｰﾀ順選択 (Data Order)

UDORDnﾋﾞｯﾄが1を書かれるとﾃﾞｰﾀ語のLSBが最初に転送されます。UDORDnﾋﾞｯﾄが0を書かれるとMSBが最初に転送されます。詳細については141頁の「ﾌﾚｰﾑ形式」節をご覧ください。
● ﾋﾞｯﾄ1 - UCPHAn : ｸﾛｯｸ位相選択 (Clock Phase)

このｸﾛｯｸ位相選択(UCPHAn)ﾋﾞｯﾄの設定はﾃﾞｰﾀがXCKnの先行(先)端または後行(後)端で採取/(設定)されるかを決めます。詳細については140頁の「ﾃﾞｰﾀ転送形式」節をご覧ください。
● ﾋﾞｯﾄ0 - UCPOLn : ｸﾛｯｸ極性選択 (Clock Polarity)

ｸﾛｯｸ極性選択(UCPOLn)ﾋﾞｯﾄはXCKnｸﾛｯｸの極性を設定します。UCPOLnとｸﾛｯｸ位相選択(UCPHAn)ﾋﾞｯﾄの組み合わせがﾃﾞｰﾀ転送のﾀｲﾐﾝｸﾞを決めます。詳細については140頁の「ﾃﾞｰﾀ転送形式」節をご覧ください。

19.7.5. UBRRnH, UBRRnL (UBRRn) - USART MSPIMﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ (USART Baud Rate Register)
MSPIMでのﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ(UBRRn)の機能と説明は通常のUSART操作と同一です。139頁の「UBRRnH,UBRRnL - USARTﾎﾞｰﾚｰﾄ ﾚ
ｼﾞｽﾀ」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]145

20. 2線直列ｲﾝﾀｰﾌｪｰｽ (TWI:Two-wire Serial Interface, I2C)
20.1. 特徴
・ 2本のﾊﾞｽ信号線のみ必要な、単純ながら強力で柔軟な通信ｲﾝﾀｰﾌｪｰｽ
・ 主装置動作と従装置動作の両方を支援
・ 送信装置または受信装置として動作可能
・ 7ﾋﾞｯﾄのｱﾄﾞﾚｽ空間が128までの異なる従装置ｱﾄﾞﾚｽを許容
・ 複数主装置の調停支援
・ 400kHzまでのﾃﾞｰﾀ転送速度
・ 上昇/下降(ｽﾘｭｰﾚｰﾄ)制限された出力駆動回路
・ ﾊﾞｽ信号線のｽﾊﾟｲｸを排除する雑音消去回路
・ 一斉呼び出しを含む完全に設定変更可能な従装置ｱﾄﾞﾚｽの支援
・ AVRが休止形態の時のｱﾄﾞﾚｽ認証(一致)起動
28頁の「PRR0 - 電力削減ﾚｼﾞｽﾀ」のPRTWIﾋﾞｯﾄは2線直列ｲﾝﾀｰﾌｪｰｽ部を許可するために0を書かれなければなりません。

20.2. 2線直列ｲﾝﾀｰﾌｪｰｽ ﾊﾞｽの定義
2線直列ｲﾝﾀｰﾌｪｰｽ(TWI)は代表的なﾏｲｸﾛ ｺﾝﾄﾛｰﾗ応用に対して理想的に適応されています。TWI通信規約は2本の双方向ﾊﾞｽ信号線、ﾃﾞｰﾀ用1本(SDA)とｸﾛｯｸ用1本(SCL)だけを使って128個までの異なる装置の相互接続をｼｽﾃﾑ設計者に許します。ﾊﾞｽを実現するのに必要とされる外部ﾊｰﾄﾞｳｪｱはTWIﾊﾞｽ信号線各々に1本づつのﾌﾟﾙｱｯﾌﾟ抵抗だけです。ﾊﾞｽに接続した全ての装置は個別のｱﾄﾞﾚｽを持ち、ﾊﾞｽ衝突を解決する機構は本質的にTWI通信規約で行います。
図20-1. 2線直列(TWI)ﾊﾞｽ構成
VCC
装置1

装置2

装置3

～

装置n

R1

R2
SCL
SDA

20.2.1. TWI用語定義
次の定義は本項で度々使われます。

表20-1. TWI用語定義
用語
意味
主装置
送信の開始と終了を行う装置。主装置はSCLｸﾛｯｸも生成します。
主装置によって指定された装置。
従装置
送信装置 ﾊﾞｽ上にﾃﾞｰﾀを送り出す装置。
受信装置 ﾊﾞｽからﾃﾞｰﾀを読み込む装置。

20.2.2. 電気的な相互接続
図20-1.で描かれたように両方のﾊﾞｽ信号線はﾌﾟﾙｱｯﾌﾟ抵抗を通して正供給電圧に接続されます。全てのTWI準拠装置のﾊﾞｽ駆動部
はｵｰﾌﾟﾝ ﾄﾞﾚｲﾝかｵｰﾌﾟﾝ ｺﾚｸﾀです。これはｲﾝﾀｰﾌｪｰｽの動作のために重要なﾜｲｱｰﾄﾞAND機能を実現します。TWIﾊﾞｽ信号線のLowﾚﾍﾞﾙは1つまたはより多くのTWI装置の0出力時に生成されます。Highﾚﾍﾞﾙは全TWI装置がHi-Z出力時の出力で、ﾌﾟﾙｱｯﾌﾟ抵抗に信号線をHighへ引き上げさせます。どんなﾊﾞｽ動作を許すのにも、TWIﾊﾞｽに接続した全てのAVRﾃﾞﾊﾞｲｽが電力供給されなければならないことに注意してください。
このﾊﾞｽに接続できる装置数は7ﾋﾞｯﾄの従装置ｱﾄﾞﾚｽ空間と400pFのﾊﾞｽ容量制限によってのみ制限されます。TWIの電気的特性の詳細仕様は251頁の「2線直列ｲﾝﾀｰﾌｪｰｽ特性」で与えられます。そこで与えられる2組の異なる仕様は、1つがﾊﾞｽ速度100kHz以下に関するもので、もう1つはﾊﾞｽ速度400kHzまでに関して有効です。

20.3. ﾃﾞｰﾀ転送とﾌﾚｰﾑ形式
20.3.1. ﾋﾞｯﾄ転送
TWIﾊﾞｽに転送される各ﾃﾞｰﾀ ﾋﾞｯﾄはｸﾛｯｸ信号線のﾊﾟﾙｽを伴います。ﾃﾞｰﾀ信号線のﾚﾍﾞﾙはｸﾛｯｸ信号線がHighの時に安定していなければなりません。この規則の例外は開始条件と停止条件の生成だけです。

図20-2. ﾃﾞｰﾀの有効性
SDA

ﾃﾞｰﾀを安定に保持する区間

SCL

ﾃﾞｰﾀを変更する区間

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]146

20.3.2. 開始条件と停止条件
主装置がﾃﾞｰﾀ転送の開始と終了を行います。転送は主装置がﾊﾞｽに開始条件を起こすと開始され、主装置が停止条件を起こすと終了されます。開始条件と停止条件間はﾊﾞｽが使用中と考えられ、他の主装置はﾊﾞｽの制御獲得を試みるべきではありません。開始条
件と停止条件間で新規開始条件が起こされると特別な状態が起きます。これは再送開始条件として引用され、主装置がﾊﾞｽの制御を手放さずに新規転送を始めたい時に使われます。再送開始条件後、ﾊﾞｽは次の停止条件まで使用中と考えられます。これは開始動作についてと全く同じで、従って特記事項を除いて本ﾃﾞｰﾀ ｼｰﾄの残りに対して開始条件と再送開始条件の両方の記述に開始条件が使われます。下で描かれるように、開始条件と停止条件はSCL信号線がHighの時のSDA信号線のﾚﾍﾞﾙ変更によって指示されます。
図20-3. 開始条件、再送開始条件、停止条件 ﾊﾞｽ ﾀｲﾐﾝｸﾞ
SDA
SCL
開始条件

停止条件 開始条件

再送開始条件 停止条件

20.3.3. ｱﾄﾞﾚｽ ﾊﾟｹｯﾄ形式
TWIﾊﾞｽに送信した全てのｱﾄﾞﾚｽ ﾊﾟｹｯﾄは7ﾋﾞｯﾄのｱﾄﾞﾚｽ ﾋﾞｯﾄ、1ﾋﾞｯﾄの方向(Read/Write)制御ﾋﾞｯﾄ、1ﾋﾞｯﾄの応答ﾋﾞｯﾄから成る9ﾋﾞｯﾄです。方向(R/W)ﾋﾞｯﾄが設定(1)されると読み出し操作が実行され、さもなければ書き込み操作が実行されるべきです。従装置がｱﾄﾞﾚｽ指定されたことを認証すると、9番目のSCL(ACK)周期でSDAをLowへ引くことによって確認応答すべきです。ｱﾄﾞﾚｽ指定された従装置が忙しいまたはその他の理由で主装置の要求を扱えない場合、確認応答(ACK)ｸﾛｯｸ周期でSDA信号線をHighのままにすべきです。主装置はその後に停止条件または新規転送を始めるために再送開始条件を送出できます。従装置ｱﾄﾞﾚｽと方向(R/W)ﾋﾞｯﾄから成るｱﾄﾞﾚｽ ﾊﾟｹｯﾄは各々、SLA+RまたはSLA+Wと呼ばれます。
ｱﾄﾞﾚｽ ﾋﾞｯﾄの最上位ﾋﾞｯﾄ(MSB)が最初に送信されます。従装置ｱﾄﾞﾚｽは設計者によって自由に割り当てられますが、ｱﾄﾞﾚｽ0000 000
は一斉呼び出し用に予約されています。
一斉呼び出しが起こされると、全従装置は確認応答(ACK)周期でSDA信号線をLowにすることによって応答すべきです。一斉呼び出
しは主装置がｼｽﾃﾑ内のそれぞれの従装置に同じ通信内容を送信したい時に使われます。一斉呼び出しｱﾄﾞﾚｽに続きW(方向が書き込み)ﾋﾞｯﾄがﾊﾞｽに送信されると、一斉呼び出しに応答する設定の全ての従装置は、ACK周期でSDA信号線をLowに引き込みます。そして後続のﾃﾞｰﾀ ﾊﾟｹｯﾄは一斉呼び出しに確認応答した
図20-4. ｱﾄﾞﾚｽ ﾊﾟｹｯﾄ形式
全従装置によって受信されます。一斉呼び出しｱﾄﾞﾚｽに続くR(方向が読み出し)ﾋﾞｯﾄの送信は、従装置それぞれが異なるﾃﾞｰ
MSB A5SDALSB R/W ACK
ﾀの送信を始めた場合の衝突の原因となるので意味がないこと
SCL
1
2
7
8
9
に注意してください。
開始条件
1111 xxx形式の全ｱﾄﾞﾚｽは将来の目的のために予約されるべきです(訳補: I2C規格のｱﾄﾞﾚｽ拡張他)。

20.3.4. ﾃﾞｰﾀ ﾊﾟｹｯﾄ形式
TWIﾊﾞｽに送信した全てのﾃﾞｰﾀ ﾊﾟｹｯﾄは1ﾊﾞｲﾄのﾃﾞｰﾀと1ﾋﾞｯﾄの応答ﾋﾞｯﾄから成る9ﾋﾞｯﾄです。ﾃﾞｰﾀ転送中、主装置はｸﾛｯｸと開始条件、停止条件を生成し、一方受信装置は受信に応答する責任があります。確認応答(ACK)は受信装置が9番目のSCL周期中にSDA信号線をLowに引き込むことによって示されます。受信装置がSDA信号線をHighのままにするとNACKを示します。受信装置が最終ﾊﾞｲﾄを受信したとき、または何らかの理由でこれ以上のﾊﾞｲﾄを受信ができないとき、最終ﾊﾞｲﾄ後にNACKを送ることによって送信装置へ通知すべきです。ﾃﾞｰﾀﾊﾞｲﾄの最上位(MSB)ﾋﾞｯﾄが最初に送信されます。

図20-5. ﾃﾞｰﾀ ﾊﾟｹｯﾄ形式
送信装置SDA

MSB

D6

D1

LSB

合成SDA

MSB

D6

D1

LSB ACK

主装置SCL12

78

受信装置SDA

9

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]147

20.3.5. 転送内でのｱﾄﾞﾚｽ ﾊﾟｹｯﾄとﾃﾞｰﾀ ﾊﾟｹｯﾄの組み合わせ
転送は基本的に開始条件、SLA+R/W、1つ以上のﾃﾞｰﾀ ﾊﾟｹｯﾄ、停止条件から成ります。開始条件に続く停止条件から成る空の通信
内容は規則違反です。SCL信号線のﾜｲｱｰﾄﾞANDが主装置と従装置間のﾊﾝﾄﾞｼｪｰｸに使えることに注目してください。従装置はSCL
信号線をLowに引き込むことによってSCLのLow期間を引き伸ばせます。これは主装置が従装置に対して速すぎるｸﾛｯｸ速度設定、または従装置がﾃﾞｰﾀ送信間の処理に追加時間を必要とする場合に有用です。従装置がSCLのLow期間を延長することは、主装置によって決められるSCLのHigh期間に影響しません。同様に従装置はSCLのﾃﾞｭｰﾃｨ比(Low期間)を延長することによってTWIﾃﾞｰﾀ
転送速度を落とせます。
図20-6.は代表的なﾃﾞｰﾀ転送を示します。応用ｿﾌﾄｳｪｱによって実装されたｿﾌﾄｳｪｱ規約に依存して、様々なﾃﾞｰﾀがSLA+R/Wと停止条件間に送信できることに注意してください。
図20-6. 代表的なﾃﾞｰﾀ転送
SDA
SCL
開始条件

MSB

A5

1

2

LSB R/W ACK
7
SLA+R/W

8

9

MSB

D6

D1

1

2

7
ﾃﾞｰﾀ ﾊﾞｲﾄ

LSB ACK
89
停止条件

20.4. 複数主装置ﾊﾞｽ ｼｽﾃﾑの調停と同期
TWI規約は多数主装置のﾊﾞｽ ｼｽﾃﾑを許します。例え2つ以上の主装置が同時に送信を始めても、送信が通常のように続行することを保証するために特別な手段が講じられます。複数主装置のｼｽﾃﾑでは2つの問題が起こります。
● 送信を完了するために1つの主装置だけを許す方法が実現されなければなりません。他の全ての主装置は(自身が行っている従装置)選択手順を失った(失敗した)ことに気付く時に送信を止めるべきです。この選択手順は調停(ｱﾋﾞﾄﾚｰｼｮﾝ)と呼ばれます。競合する主装置は調停(従装置選択)手順を失ったことに気付くと、勝ち残った主装置によってｱﾄﾞﾚｽ指定されるかどうかを調べるた
め、直ちに従装置動作へ切り替えるべきです。複数の主装置が同時に送信を始めた事実は従装置で検知できるべきではありません。換言すると、ﾊﾞｽに転送されているﾃﾞｰﾀが不正にされてはなりません。
違う主装置が異なるSCL周波数を使うかもしれません。同期確定手順で送信が続行するために、全主装置からの直列ｸﾛｯｸを同期化する方法が考案されなければなりません。これは調停手順を容易にします。
ﾊﾞｽ信号線のﾜｲｱｰﾄﾞANDはこれらの問題の両方の解決に使われ 図20-7. 複数主装置間でのSCL同期化ます。全ての主装置からの直列ｸﾛｯｸはﾜｲｱｰﾄﾞANDされ、最短Hig
TAlow
主装置A SCL
h期間の主装置の1つからに等しいHigh期間の合成ｸﾛｯｸを生成しTAhighます。合成ｸﾛｯｸのLow期間は最長Low期間の主装置のLow期間に主装置B SCL
等しくなります。全ての主装置がSCL信号線を監視する、実際には
TBlow
合成SCL信号線がHighまたはLowになる時に各々SCLのHighとSCLﾊﾞｽ信号線
Low経過時間の計時を始めることに注意してください。
TBhighLow期間
High期間
調停は全ての主装置がﾃﾞｰﾀ出力後にSDA信号線を継続的に監視
計時開始
計時開始
することによって実行されます。SDA信号線から読んだ値がその主装置の出力した値と一致しない場合、調停に敗れます。主装置がSDAにHigh値を出力し、同時に他の主装置がLow値を出力する時 図20-8. 2つの主装置間での調停
のみ調停に敗れるかもしれないことに注意してください。敗れた主主装置A SDA不一致
装置は直ちに従装置動作へ移行し、勝ち残った主装置によってｱ
主装置A SDA
主装置A調停敗退
ﾄﾞﾚｽ指定されるかを検査すべきです。SDA信号線はHighのままにすべきですが、敗れた主装置は現在のﾃﾞｰﾀ若しくはｱﾄﾞﾚｽ ﾊﾟｹｯﾄ
主装置B SDAの最後までｸﾛｯｸ信号を生成することを許されます。調停は唯一のSDA信号線主装置が残るまで継続され、多くのﾋﾞｯﾄを必要とするかもしれませ
同期化されたん。多くの主装置が同じ従装置をｱﾄﾞﾚｽ指定しようとすると、調停はSCL信号線ﾃﾞｰﾀ ﾊﾟｹｯﾄに続くでしょう。
開始条件●

調停が次の状態間で許されないことに注意してください。
● 再送開始条件とﾃﾞｰﾀ ﾋﾞｯﾄ間● 停止条件とﾃﾞｰﾀ ﾋﾞｯﾄ間● 再送開始条件と停止条件間
これらの違法な調停状態を決して起こさないように保証するのは使用者ｿﾌﾄｳｪｱの責任です。これは複数主装置ｼｽﾃﾑでの全てのﾃﾞｰﾀ転送は同じ構成、SLA+R/Wとﾃﾞｰﾀ ﾊﾟｹｯﾄを使わなければならないことを意味します。言葉を変えると、全ての送信は同じﾃﾞｰﾀ
ﾊﾟｹｯﾄ数を含まなければならず、さもなければ調停の結果は不定にされます。
(訳補) 同じﾃﾞｰﾀ ﾊﾟｹｯﾄ数とは、或る主装置が最後まで調停を継続し、他の主装置がﾊﾟｹｯﾄを残している場合を想定しています。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]148

20.5. TWI部の概要
図20-9.で示されるようにTWI部は様々な部分から成ります。赤文字で示された(訳注:原文は太線で描かれた)全てのﾚｼﾞｽﾀはAVR
ﾃﾞｰﾀ ﾊﾞｽを通してｱｸｾｽ可能です。
図20-9. 2線直列ｲﾝﾀｰﾌｪｰｽ構成
SCL
ｽﾘｭｰﾚｰﾄ
制御

SDA

ｽﾊﾟｲｸ
除去器

ｽﾘｭｰﾚｰﾄ
制御

ｽﾊﾟｲｸ
除去器
TWI部

ﾊﾞｽ ｲﾝﾀｰﾌｪｰｽ部
開始/停止条件制御

ﾋﾞｯﾄ速度発生器

ｽﾊﾟｲｸ消去

前置分周器

ｱﾄﾞﾚｽ/ﾃﾞｰﾀ移動 ACK
ﾚｼﾞｽﾀ (TWDR)

調停検出

ﾋﾞｯﾄ速度ﾚｼﾞｽﾀ(TWBR)

ｱﾄﾞﾚｽ一致部
ｱﾄﾞﾚｽ遮蔽ﾚｼﾞｽﾀ(TWAMR)

制御部

ｱﾄﾞﾚｽ ﾚｼﾞｽﾀ(TWAR)

ｱﾄﾞﾚｽ比較器

状態ﾚｼﾞｽﾀ(TWSR)

制御ﾚｼﾞｽﾀ(TWCR)

状態制御器

20.5.1. SCLとSDAﾋﾟﾝ
これらのﾋﾟﾝはAVR TWIをMCUｼｽﾃﾑのその他とｲﾝﾀｰﾌｪｰｽします。出力駆動部はTWI仕様に適合させるためのｽﾘｭｰﾚｰﾄ(上昇/下降)制限器を含みます。入力段は50nsよりも短いｽﾊﾟｲｸを除去するｽﾊﾟｲｸ消去部を含みます。「入出力ﾎﾟｰﾄ」章で説明したようにAVR
ﾊﾟｯﾄﾞの内部ﾌﾟﾙｱｯﾌﾟはSCLとSDAﾋﾟﾝに対応するﾎﾟｰﾄのﾋﾞｯﾄを設定(1)することによって許可できることに注目してください。内部ﾌﾟﾙ
ｱｯﾌﾟはいくつかのｼｽﾃﾑで外部抵抗の必要をなくせます。

20.5.2. ﾋﾞｯﾄ速度発生器
この部分は主装置動作で動く時のSCL周期を制御します。SCL周期はTWIﾋﾞｯﾄ速度ﾚｼﾞｽﾀ(TWBR)とTWI状態ﾚｼﾞｽﾀ(TWSR)の前置
分周器ﾋﾞｯﾄの設定によって制御されます。従装置動作はﾋﾞｯﾄ速度や前置分周器設定と関係ありませんが、従装置でのCPUｸﾛｯｸ周
波数はSCL周波数よりも最低16倍高くなければなりません。従装置がSCLのLow期間を延長するかもしれず、これによって平均TWI
ﾊﾞｽ ｸﾛｯｸ周波数が減少することに注意してください。SCL周波数は次式に従って生成されます。
SCL周波数 =CPUｸﾛｯｸ周波数
16＋2×(TWBR)×前置分周値

TWBR: TWI ﾋﾞｯﾄ速度ﾚｼﾞｽﾀ値
前置分周値 : TWI状態ﾚｼﾞｽﾀ内TWPSで指定(164頁の表20-7.参照)

注: ﾌﾟﾙｱｯﾌﾟ抵抗値はSCL周波数とﾊﾞｽ信号線の容量性負荷に応じて選択されるべきです。ﾌﾟﾙｱｯﾌﾟ抵抗の値については251頁の表
29-4.をご覧ください。

20.5.3. ﾊﾞｽ ｲﾝﾀｰﾌｪｰｽ部
この部分はﾃﾞｰﾀとｱﾄﾞﾚｽの移動ﾚｼﾞｽﾀ(TWDR)、開始条件/停止条件制御器、調停検出回路を含みます。TWDRは送信されるべきｱ
ﾄﾞﾚｽまたはﾃﾞｰﾀ ﾊﾞｲﾄ、若しくは受信したｱﾄﾞﾚｽまたはﾃﾞｰﾀ ﾊﾞｲﾄを含みます。8ﾋﾞｯﾄのTWDRに加えてﾊﾞｽ ｲﾝﾀｰﾌｪｰｽ部は送信されるべきまたは受信した(N)ACKﾋﾞｯﾄを含むﾚｼﾞｽﾀも含みます。この(N)ACKﾚｼﾞｽﾀは応用ｿﾌﾄｳｪｱによって直接的にｱｸｾｽできません。
けれどもTWI制御ﾚｼﾞｽﾀ(TWCR)を操作することにより、受信時に設定(1)または解除(0)できます。送信装置動作時、受信した(N)ACK
ﾋﾞｯﾄの値はTWSRの値によって判定できます。
開始条件/停止条件制御器は開始条件、再送開始条件、停止条件の生成と検出に対して責任があります。開始条件/停止条件制
御器はAVR MCUが主装置によってｱﾄﾞﾚｽ指定された場合にMCUを起動できる休止形態の1つの時でも、開始条件または停止条件を検出できます。
TWIが主装置として送信を始めると、調停検出ﾊｰﾄﾞｳｪｱは調停が進行中かを決めるために送信の試行を継続的に監視します。TWIが調停に敗れた場合、制御部に通知されます。その後に正しい処置が行われ、適切な状態符号が生成されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]149

20.5.4. ｱﾄﾞﾚｽ一致部
ｱﾄﾞﾚｽ一致部は受信したｱﾄﾞﾚｽ ﾊﾞｲﾄがTWI ｱﾄﾞﾚｽ ﾚｼﾞｽﾀ(TWAR)の7ﾋﾞｯﾄ ｱﾄﾞﾚｽと一致するかを検査します。TWARで一斉呼び出し
検出許可(TWGCE)ﾋﾞｯﾄが1を書かれると、全ての到着ｱﾄﾞﾚｽ ﾋﾞｯﾄは一斉呼び出しｱﾄﾞﾚｽに対しても比較されます。ｱﾄﾞﾚｽ一致で制御部は通知され、正しい処置を行うことを許します。TWIはTWI制御ﾚｼﾞｽﾀ(TWCR)の設定によって、そのｱﾄﾞﾚｽへの応答をするかもしれないし、しないかもしれません。ｱﾄﾞﾚｽ一致部はAVR MCUが主装置によってｱﾄﾞﾚｽ指定された場合にMCUを起動できる休止形態の1つの時でも、ｱﾄﾞﾚｽを比較できます。TWIがﾊﾟﾜｰﾀﾞｳﾝ動作でのｱﾄﾞﾚｽ一致でCPUを起動中に他の割り込み(例えばINT0)が起こると、
TWIは動作を停止し、ｱｲﾄﾞﾙ状態で復帰します。これが何らかの問題の原因なら、ﾊﾟﾜｰﾀﾞｳﾝ動作へ移行する時にTWIｱﾄﾞﾚｽ一致だ
けが割り込みを許可されることを保証してください。

20.5.5. 制御部
制御部はTWIﾊﾞｽを監視し、TWI制御ﾚｼﾞｽﾀ(TWCR)の設定に従った応答を生成します。応用に注意を要求する事象がTWIﾊﾞｽで起
こると、TWI割り込み要求ﾌﾗｸﾞ(TWINT)が有効にされます。次のｸﾛｯｸ周期で、TWI状態ﾚｼﾞｽﾀ(TWSR)は事象を示す状態符号で更新されます。TWI割り込み要求ﾌﾗｸﾞが有効にされる時にだけ、TWSRは適切な状態情報を含みます。他の全てのとき、TWSRは適切な状態情報が利用できないことを示す特別な状態符号を含みます。TWINTﾌﾗｸﾞが設定(1)されている限り、SCL信号線はLowに保たれます。これは続くTWI送信を許す前の(現状)処理完了を応用ｿﾌﾄｳｪｱに許します。
TWI割り込み要求ﾌﾗｸﾞ(TWINT)は次の場合に設定(1)されます。
● 開始条件または再送開始条件送信後● SLA+R/W送信後● ｱﾄﾞﾚｽ ﾊﾞｲﾄ送信後● 調停に敗れた後● 自身の従装置ｱﾄﾞﾚｽまたは一斉呼び出しによってｱﾄﾞﾚｽ指定された後ﾃﾞｰﾀ ﾊﾞｲﾄ受信後従装置として未だｱﾄﾞﾚｽ指定されている間の停止条件または再送開始条件受信後● 不正な開始条件または停止条件のためﾊﾞｽ異常が起きた時●●

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]150

20.6. TWIの使用法
AVR TWIはﾊﾞｲﾄ志向で割り込みが基本です。割り込みはﾊﾞｲﾄの受信や開始条件の送出のような全てのﾊﾞｽの事象後に起こります。
TWIは割り込みが基本のため、応用ｿﾌﾄｳｪｱはTWIﾊﾞｲﾄ転送中に他の操作を続行するために開放されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄと共にTWI制御ﾚｼﾞｽﾀ(TWCR)のTWI割り込み許可(TWIE)ﾋﾞｯﾄは、TWCRのTWI割り込み要求ﾌﾗｸﾞ(TWINT)の設定(1)が割り込み要求を発生すべきかどうか決めることを応用(ｿﾌﾄｳｪｱ)に許します。TWIEﾋﾞｯﾄが解除(0)されると、応用(ｿﾌﾄｳｪｱ)は
TWIﾊﾞｽの動きを検知するためにTWINTﾌﾗｸﾞをﾎﾟｰﾘﾝｸﾞしなければなりません。
TWINTﾌﾗｸﾞが設定(1)されると、TWIは動作を終え、応用(ｿﾌﾄｳｪｱ)の応答を待ちます。この場合、TWI状態ﾚｼﾞｽﾀ(TWSR)はTWIﾊﾞｽの現在の状態を示す値を含みます。そして応用ｿﾌﾄｳｪｱはTWCRとTWDRの操作により、TWIが次のTWIﾊﾞｽ周期で何を行うべきかを決定できます。
図20-10.は応用(ｿﾌﾄｳｪｱ)がTWIﾊｰﾄﾞｳｪｱにどうｲﾝﾀｰﾌｪｰｽできるかの簡単な例です。この例では主装置が単一ﾃﾞｰﾀ ﾊﾞｲﾄを従装置に送信しようします。この内容はかなり大雑把ですので、より詳細な説明が本項の後に続きます。希望した動きを実現する簡単なｺｰﾄﾞ例も示されます。
図20-10. 代表的な送信での応用ﾌﾟﾛｸﾞﾗﾑとTWIのｲﾝﾀｰﾌｪｰｽ
1. 応用ﾌﾟﾛｸﾞﾗﾑは開始条件送出のためTWCRに書き込み
3. 開始条件送出完了かTWSR検査
応用ﾌﾟﾛｸﾞﾗﾑはSLA+WをTWDRに設定
適切な制御値をTWCRに設定
TWINT=1,TWSTA=0書き込みを確認

5. SLA+W送出完了、ACK受信かTWSR検査
応用ﾌﾟﾛｸﾞﾗﾑはﾃﾞｰﾀをTWDRに設定
適切な制御値をTWCRに設定
TWINT=1書き込みを確認

7. ﾃﾞｰﾀ送出完了、ACK受信かTWSR検査
応用ﾌﾟﾛｸﾞﾗﾑは停止条件送出のための
適切な制御値をTWCRに設定
TWINT=1書き込みを確認

応用ﾌﾟﾛｸﾞﾗﾑの動き
TWIﾊﾞｽ

S

SLA

W

A

Data

A

P

TWIﾊｰﾄﾞｳｪｱの動き
2. TWINTが設定(1)状態符号が開始条件
送出完了を提示

4. TWINTが設定(1)状態符号がSLA+W
送出完了、ACK受信を提示

6. TWINTが設定(1)状態符号がﾃﾞｰﾀ
送出完了、ACK受信を提示

TWINT=1区間
S : 開始条件
P : 停止条件

1. TWI送信の最初の段階は開始条件を送出することです。これはTWIﾊｰﾄﾞｳｪｱに開始条件送出を命じる特別な値をTWCR内に書くことで行います。どんな値を書くかは後で記述されます。けれども書かれる値でTWINTﾋﾞｯﾄが設定(1)されることが重要です。
TWINTへの1書き込みは、このﾌﾗｸﾞを解除(0)します。TWCRでTWINTﾋﾞｯﾄが設定(1)されている限り、TWIはどんな動作も始めません。応用(ｿﾌﾄｳｪｱ)がTWINTを解除(0)した後、TWIは直ちに開始条件の送出を始めます。
2. 開始条件が送出されてしまうと、TWCRでTWINTﾌﾗｸﾞが設定(1)され、TWSRは開始条件が正常に送出されてしまったことを示す
状態符号に更新されます。
3. 応用ｿﾌﾄｳｪｱは開始条件が正常に送信されたのを確認するためにTWSRの値を直ぐに検査すべきです。TWSRがその他を示している場合、応用ｿﾌﾄｳｪｱは異常ﾙｰﾁﾝを呼び出すような或る特別な動きを講じるかもしれません。期待した状態符号だと仮定すると、応用(ｿﾌﾄｳｪｱ)はTWDRにSLA+Wを設定しなければなりません。TWDRがｱﾄﾞﾚｽとﾃﾞｰﾀの両方に使われることを思い出してくだ
さい。TWDRが希望したSLA+Wに設定されてしまった後、TWDRにあるSLA+Wの送信をTWIﾊｰﾄﾞｳｪｱへ命じる特別な値がTWCRに書かれなければなりません。どんな値を書くかは後で記述されます。けれども書かれる値でTWINTﾋﾞｯﾄが設定(1)されることが重要です。TWINTへの1書き込みがこのﾌﾗｸﾞを解除(0)します。TWCRでTWINTﾋﾞｯﾄが設定(1)されている限り、TWIはどんな動作も始めません。応用(ｿﾌﾄｳｪｱ)がTWINTを解除(0)した後、TWIは直ちにｱﾄﾞﾚｽ ﾊﾟｹｯﾄの送信を始めます。
4. ｱﾄﾞﾚｽ ﾊﾟｹｯﾄが送信されてしまうと、TWCRでTWINTﾌﾗｸﾞが設定(1)され、TWSRはｱﾄﾞﾚｽ ﾊﾟｹｯﾄが正常に送信されたことを示す状
態符号に更新されます。この状態符号は従装置がﾊﾟｹｯﾄに応答したかどうかも反映します。
5. 応用ｿﾌﾄｳｪｱはｱﾄﾞﾚｽ ﾊﾟｹｯﾄが正常に送信され、期待されたACKﾋﾞｯﾄ値であるのを確認するためにTWSRの値を直ぐに検査すべきです。TWSRが他を示している場合、応用ｿﾌﾄｳｪｱは異常ﾙｰﾁﾝを呼び出すような或る特別な動きを講じるかもしれません。期待
した状態符号だと仮定すると、応用(ｿﾌﾄｳｪｱ)はTWDRにﾃﾞｰﾀを設定しなければなりません。その後、TWDRにあるﾃﾞｰﾀ ﾊﾟｹｯﾄの送信をTWIﾊｰﾄﾞｳｪｱへ命じる特別な値がTWCRに書かれなければなりません。どんな値を書くかは後で記述されます。けれども書かれる値でTWINTﾋﾞｯﾄが設定(1)されることが重要です。TWINTへの1書き込みがこのﾌﾗｸﾞを解除(0)します。TWCRでTWINT
ﾋﾞｯﾄが設定(1)されている限り、TWIはどんな動作も始めません。応用(ｿﾌﾄｳｪｱ)がTWINTを解除(0)した後、TWIは直ちにﾃﾞｰﾀ ﾊﾟ
ｹｯﾄの送信を始めます。
6. ﾃﾞｰﾀ ﾊﾟｹｯﾄが送信されてしまうと、TWCR内のTWINTﾌﾗｸﾞが設定(1)され、TWSRはﾃﾞｰﾀ ﾊﾟｹｯﾄが正常に送信されたことを示す状
態符号に更新されます。この状態符号は従装置がﾊﾟｹｯﾄに応答したかどうかも反映します。
7. 応用ｿﾌﾄｳｪｱはﾃﾞｰﾀ ﾊﾟｹｯﾄが正常に送信され、期待されたACKﾋﾞｯﾄの値であるのを確認するためにTWSRの値を直ぐに検査すべきです。TWSRが他を示している場合、応用ｿﾌﾄｳｪｱは異常ﾙｰﾁﾝを呼び出すような或る特別な動きを講じるかもしれません。期
待した状態符号だと仮定すると、応用(ｿﾌﾄｳｪｱ)は停止条件の送出をTWIﾊｰﾄﾞｳｪｱへ命じる特別な値をTWCRに書かなければなりません。どんな値を書くかは後で記述されます。けれども書かれる値でTWINTﾋﾞｯﾄが設定(1)されることが重要です。TWINTへの1書き込みがこのﾌﾗｸﾞを解除(0)します。TWCRでTWINTﾋﾞｯﾄが設定(1)されている限り、TWIはどんな動作も始めません。応用(ｿﾌﾄｳｪｱ)がTWINTを解除(0)した後、TWIは直ちに停止条件の送出を始めます。停止条件が送出されてしまった後にTWINTが設定(1)されないことに注意してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]151この例は簡単とはいえ、全てのTWI送信に関係した原理を示しています。これらは次のように要約できます。
TWIが動作を終了して応用(ｿﾌﾄｳｪｱ)の反応を予想する時にTWINTﾌﾗｸﾞが設定(1)されます。SCL信号線はTWINTが解除(0)されるまでLowに引き込まれます。
● TWINTﾌﾗｸﾞが設定(1)されると、使用者は次のTWIﾊﾞｽ周期に関連した値で(必要な)全てのTWIﾚｼﾞｽﾀを更新しなければなりません。例で示されるようにTWDRは次のTWIﾊﾞｽ周期で送信されるべき値を設定されなければなりません。
● (必要な)全てのTWIﾚｼﾞｽﾀを更新し、その他保留中の応用ｿﾌﾄｳｪｱの処理が完了されてしまった後にTWCRが書かれます。TWCR
書き込み時、TWINTﾋﾞｯﾄが設定(1)されるべきです。TWINTへの1書き込みはこのﾌﾗｸﾞを解除(0)します。TWCR設定によってどの動作が指定されても、TWIはその(TWINT=0)後に実行を始めます。
●

次にｱｾﾝﾌﾞﾘ言語とC言語の実装例が与えられます。以下のｺｰﾄﾞは例えばｲﾝｸﾙｰﾄﾞ ﾌｧｲﾙの使用により、様々な定義が作成されてしまっている前提であることに注意してください。
ｱｾﾝﾌﾞﾘ言語ﾌﾟﾛｸﾞﾗﾑ例
LDI
1.
OUT
2.

3.

4.

5.

6.

7.

R16,(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
TWCR,R16

WAIT1: IN
R16,TWCRSBRS R16,TWINT
RJMP WAIT1

C言語ﾌﾟﾛｸﾞﾗﾑ例

注釈

TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);;開始条件送出

while (!(TWCR & (1<<TWINT)));;TWINT=1まで待機;(開始条件送出完了待機)

IN
ANDI
CPI
BRNE

R16,TWSR
R16,$F8
R16,STARTERROR

if ((TWSR & 0xF8) != START)ERROR();;TWI状態ﾚｼﾞｽﾀ値検査;前置分周選択ﾋﾞｯﾄの遮蔽;STARTと異なる状態符号で;異常処理へ

LDI
OUT
LDI
OUT

R16,SLA_W
TWDR,R16
R16,(1<<TWINT)|(1<<TWEN)
TWCR,R16

TWDR = SLA_W;;TWDRにSLA+W設定;ｱﾄﾞﾚｽ送信開始のため;TWCRのTWINTを解除(0)

WAIT2: IN
R16,TWCRSBRS R16,TWINT
RJMP WAIT2TWCR = (1<<TWINT)|(1<<TWEN);
while (!(TWCR & (1<<TWINT)));;TWINT=1まで待機;(SLA+W送出完了と;ACK/NACK受信完了待機)

IN
ANDI
CPI
BRNE

R16,TWSR
R16,$F8
R16,MT_SLA_ACK
ERROR

if ((TWSR & 0xF8) != MT_SLA_ACK)ERROR();;TWI状態ﾚｼﾞｽﾀ値検査;前置分周選択ﾋﾞｯﾄの遮蔽;MT_SLA_ACKと違う状態符号で;異常処理へ

LDI
OUT
LDI
OUT

R16,DATATWDR,R16
R16,(1<<TWINT)|(1<<TWEN)
TWCR,R16

TWDR = DATA;;TWDRにﾃﾞｰﾀ設定;ﾃﾞｰﾀ送信開始のため;TWCRのTWINTを解除(0)

WAIT3: IN
R16,TWCRSBRS R16,TWINT
RJMP WAIT3TWCR = (1<<TWINT)|(1<<TWEN);
while (!(TWCR & (1<<TWINT)));;TWINT=1まで待機;(ﾃﾞｰﾀ送出完了と;ACK/NACK受信完了待機)

IN
ANDI
CPI
BRNE

R16,TWSR
R16,$F8
R16,MT_DATA_ACK
ERROR

if ((TWSR & 0xF8) != MT_DATA_ACK)ERROR();;TWI状態ﾚｼﾞｽﾀ値検査;前置分周選択ﾋﾞｯﾄの遮蔽;MT_DATA_ACKと違う状態符号で;異常処理へ

LDI

R16,(1<<TWINT)|(1<<TWSTO)|(1<<TWEN)
TWCR,R16

TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN);;停止条件送出

OUT

注: 5頁の「ｺｰﾄﾞ例」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]152

20.7. 転送種別
TWIは4つの主な動作種別の1つで動けます。これらは送信主装置(MT)、受信主装置(MR)、送信従装置(ST)、受信従装置(SR)と名付けられます。これら種別の多くは同じ応用に使えます。例えば、TWI方式のEEPROM内にﾃﾞｰﾀを書くのにTWIはMT動作を、EEPR
OMからﾃﾞｰﾀを読み戻すのにMR動作を使えます。ｼｽﾃﾑ内に他の主装置が存在する場合、それらのいくつかがTWIにﾃﾞｰﾀを送信するかもしれず、するとSR動作が使われるでしょう。どの動作種別が適正かを決めるのは応用ｿﾌﾄｳｪｱです。
次項はこれら動作種別の各々を記述します。起こり得る状態符号は各動作種別のﾃﾞｰﾀ伝送詳細図に沿って示されます。これらの図は次の略号を含みます。
S
開始(START)条件
Rs
再送開始(REPEATED START)条件
R
読み出し指定ﾋﾞｯﾄ (SDA=High)W
書き込み指定ﾋﾞｯﾄ (SDA=Low)
A
確認応答(ACK)ﾋﾞｯﾄ (SDA=Low)
A
非確認応答(NACK)ﾋﾞｯﾄ (SDA=High)
Data 8ﾋﾞｯﾄ ﾃﾞｰﾀ ﾊﾞｲﾄP
停止(STOP)条件
SLA
従装置ｱﾄﾞﾚｽ
図20-12.～18.内の楕円(訳注:原文は円)はTWI制御ﾚｼﾞｽﾀ(TWCR)のTWI割り込み要求ﾌﾗｸﾞ(TWINT)が設定(1)されたことを示すために使われます。この楕円内の番号は前置分周選択ﾋﾞｯﾄが0で遮蔽された、TWI状態ﾚｼﾞｽﾀ(TWSR)に保持した状態符号を表します。これら位置での動きはTWI転送の継続または完了が応用(ｿﾌﾄｳｪｱ)によって行われなければなりません。TWI転送はｿﾌﾄｳｪｱによってTWINTﾌﾗｸﾞが解除(0)されるまで一時停止されます。
TWI割り込み要求ﾌﾗｸﾞ(TWINT)が設定(1)される時のTWI状態ﾚｼﾞｽﾀ(TWSR)の状態符号は適切なｿﾌﾄｳｪｱ動作を決めるのに使われます。各状態符号に対する必要なｿﾌﾄｳｪｱ動作や後続の直列転送の詳細は表20-2.～5.で与えられます。これらの表に於いて前置
分周選択ﾋﾞｯﾄが0で遮蔽されていることに注意してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]153

20.7.1. 送信主装置動作
送信主装置動作では何ﾊﾞｲﾄかのﾃﾞｰﾀが受信従装置へ送信されます(図20-11.参照)。主装置動作へ移行するには開始条件が送出されなければなりません。それに続くｱﾄﾞﾚｽ ﾊﾟｹｯﾄの形式が送信主装置または受信主装置のどちらへ移行すべきかを決めます。
SLA+Wが送信されると送信主装置(MT)へ移行し、SLA+Rが送信されると受信主装置(MR)へ移行します。本項で言及する全ての状
態符号は前置分周選択ﾋﾞｯﾄが0か、または0で遮蔽されることが前提です。
図20-11. 送信主装置動作でのﾃﾞｰﾀ転送
VCC
装置1(送信主装置)装置2(受信従装置)

装置3

～

装置n

R1

SCL
SDA

R2
SCL
SDA

開始条件はTWCRに次の値を書くことによって送出されます。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

1

X

1

0

X

1

0

X

TWENは2線直列ｲﾝﾀｰﾌｪｰｽ(TWI)を許可するために設定(1)されなければなりません。TWSTAは開始条件を送出するために1を書かれねばならず、TWINTはTWINTﾌﾗｸﾞを解除(0)するために1を書かれなければなりません。そしてTWIは2線直列ﾊﾞｽを検査し、ﾊﾞｽが開放になると直ぐに開始条件を生成します。開始条件が送出されてしまった後、TWINTﾌﾗｸﾞがﾊｰﾄﾞｳｪｱによって設定(1)され、TWSRの状態符号が$08(表20-2.参照)になります。送信主装置へ移行するにはSLA+Wが送信されなければなりません。これはTWDRにSLA+Wを書くことによって行います。その後、転送を継続するためにTWINTﾋﾞｯﾄは(1の書き込みによって)解除(0)されるべきです。これはTWCRに次の値を書くことによって成し遂げられます。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

1

X

0

0

X

1

0

X

SLA+Wが送信されて応答ﾋﾞｯﾄが受信されてしまうと、TWINTが再び設定(1)され、TWSRの状態符号の数値が利用可能になります。
主装置動作で可能性のある状態符号は$18,$20,$38です。これら状態符号の各々に対する適切な動作は表20-2.で詳述されます。
SLA+Wが正常に送信されてしまうと、ﾃﾞｰﾀ ﾊﾟｹｯﾄが送信されるべきです。これはTWDRにﾃﾞｰﾀ ﾊﾞｲﾄを書くことによって行われます。
TWDRはTWINTが1の時にだけ書かれなければなりません。さもなければ、そのｱｸｾｽは破棄され、TWCRで上書き発生(TWWC)ﾌﾗｸﾞが設定(1)されます。TWDR更新後、転送を継続するためにTWINTﾋﾞｯﾄは(1の書き込みによって)解除(0)されるべきです。これはTWCRに次の値を書くことによって成し遂げられます。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

1

X

0

0

X

1

0

X

最後のﾊﾞｲﾄが送られてしまうまでこの手順が繰り返され、この転送は停止条件または再送開始条件を生成することによって終了されます。停止条件はTWCRに次の値を書くことによって生成されます。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

1

X

0

1

X

1

0

X

再送開始条件はTWCRに次の値を書くことによって生成されます。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

1

X

1

0

X

1

0

X

再送開始条件(状態符号$10)後、2線直列ｲﾝﾀｰﾌｪｰｽは停止条件を送出せずに再び同じ従装置または新しい従装置にｱｸｾｽできます。再送開始条件は主装置がﾊﾞｽの制御を失わずに送信主装置、受信主装置間の切り替えを可能にします(訳注:原文では従装置も含まれていますが、基本動作に対して不適切なため削除しました)。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]154表20-2. 送信主装置動作の状態符号 (注: TWSRの前置分周選択ﾋﾞｯﾄは0の前提)
ｿﾌﾄｳｪｱの対応
直前の動作と
状態符号
TWCR設定ﾊﾞｽの状態(TWSR)TWDR操作TWSTA TWSTO TWINT TWEA
01
X
SLA+W設定
0$08
開始条件送信
SLA+W設定
01
X
0$10
再送開始条件送信
SLA+R設定
0
1
0
X
ﾃﾞｰﾀ設定
0
1
X
0
0
1
1
X
SLA+W送信
$18
ACK受信
なし
0
1
1
X
1
1
1
X
X
ﾃﾞｰﾀ設定
0
0
1
1
0
1
X
SLA+W送信$20
NACK受信
なし
0
1
1
X
1
1
1
X
X
ﾃﾞｰﾀ設定
0
0
1
1
0
1
X
ﾃﾞｰﾀ ﾊﾞｲﾄ送信
$28
ACK受信
なし
0
1
1
X
1
1
1
X
X
ﾃﾞｰﾀ設定
0
0
1
1
0
1
X
ﾃﾞｰﾀ ﾊﾞｲﾄ送信$30
NACK受信
なし
0
1
1
X
1
1
1
X
0
0
1
X
SLA+W, ﾃﾞｰﾀ ﾊﾞｲﾄで$38なし
ﾊﾞｽ競合調停敗退
1
0
1
X

TWCR設定によるﾊｰﾄﾞｳｪｱ動作
SLA+W送信、ACKかNACK受信
SLA+W送信、ACKかNACK受信
SLA+R送信、受信主装置動作へ移行
ﾃﾞｰﾀ送信、ACKかNACK受信再送開始条件送信
停止条件送信、TWSTO=0
停止条件→開始条件送信、TWSTO=0
ﾃﾞｰﾀ送信、ACKかNACK受信再送開始条件送信
停止条件送信、TWSTO=0
停止条件→開始条件送信、TWSTO=0
ﾃﾞｰﾀ送信、ACKかNACK受信再送開始条件送信
停止条件送信、TWSTO=0
停止条件→開始条件送信、TWSTO=0
ﾃﾞｰﾀ送信、ACKかNACK受信再送開始条件送信
停止条件送信、TWSTO=0
停止条件→開始条件送信、TWSTO=0
ﾊﾞｽ開放、未指定従装置動作へ移行
ﾊﾞｽ開放時に開始条件送信

図20-12. 送信主装置動作の形式と状態
主装置送信
受信従装置への転送成功

S

SLA

W

A

08

Data

A

18

P

28
Rs

再送開始条件による次転送

SLA

W

10
従装置ｱﾄﾞﾚｽ後の非確認応答受信

A

P

R

20

主装置受信
A

ﾃﾞｰﾀ ﾊﾞｲﾄ後の非確認応答受信P30
ｱﾄﾞﾚｽ ﾊﾞｲﾄかﾃﾞｰﾀ ﾊﾞｲﾄでのﾊﾞｽ競合調停敗退

A/A 他の主装置転送 A/A 他の主装置転送
38
A

調停敗退で自身の従装置呼び出し検出38
他の主装置転送

68 78 B0
主装置⇒従装置

従装置⇒主装置

Data

状態に従った従装置動作
A

何組かのﾃﾞｰﾀと確認応答

nn 16進状態符号(TWSR)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]15520.7.2. 受信主装置動作
受信主装置動作では何ﾊﾞｲﾄかのﾃﾞｰﾀが送信従装置から受信されます(図20-13.参照)。主装置動作へ移行するには開始条件が送出されなければなりません。それに続くｱﾄﾞﾚｽ ﾊﾟｹｯﾄの形式が送信主装置または受信主装置のどちらへ移行すべきかを決めます。
SLA+Wが送信されると送信主装置(MT)へ移行し、SLA+Rが送信されると受信主装置(MR)へ移行します。本項で言及する全ての状
態符号は前置分周選択ﾋﾞｯﾄが0か、または0で遮蔽されることが前提です。
図20-13. 受信主装置動作でのﾃﾞｰﾀ転送
VCC
装置1(受信主装置)装置2(送信従装置)

装置3

～

装置n

R1

SCL
SDA

R2
SCL
SDA

開始条件はTWCRに次の値を書くことによって送出されます。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

1

X

1

0

X

1

0

X

TWENは2線直列ｲﾝﾀｰﾌｪｰｽ(TWI)を許可するために設定(1)されなければなりません。TWSTAは開始条件を送出するために1を書かれねばならず、TWINTはTWINTﾌﾗｸﾞを解除(0)するために1を書かれなければなりません。そしてTWIは2線直列ﾊﾞｽを検査し、ﾊﾞｽが開放になると直ぐに開始条件を生成します。開始条件が送出されてしまった後、TWINTﾌﾗｸﾞがﾊｰﾄﾞｳｪｱによって設定(1)され、TWSRの状態符号が$08(表20-3.参照)になります。受信主装置へ移行するにはSLA+Rが送信されなければなりません。これはTWDRにSLA +Rを書くことによって行います。その後、転送を継続するためにTWINTﾋﾞｯﾄは(1の書き込みによって)解除(0)されるべきです。
これはTWCRに次の値を書くことによって成し遂げられます。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

1

X

0

0

X

1

0

X

SLA+Rが送信されて応答ﾋﾞｯﾄが受信されてしまうと、TWINTが再び設定(1)され、TWSRの状態符号の数値が利用可能になります。主装置動作で可能性のある状態符号は$38,$40,$48です。これら状態符号の各々に対する適切な動作は表20-3.で詳述されます。
ﾊｰﾄﾞｳｪｱによってTWINTﾌﾗｸﾞが設定(1)されると、受信したﾃﾞｰﾀがTWDRから読めます。この手順は最後のﾊﾞｲﾄが受信されてしまうま
で繰り返されます。最後のﾊﾞｲﾄが受信されてしまった後、受信主装置は最後に受信したﾃﾞｰﾀ ﾊﾞｲﾄ後のNACK送信によって送信従装置へ通知すべきです。この転送は停止条件または再送開始条件を生成することによって終了されます。停止条件はTWCRに次の値を書くことによって生成されます。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

1

X

0

1

X

1

0

X

再送開始条件はTWCRに次の値を書くことによって生成されます。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

1

X

1

0

X

1

0

X

再送開始条件(状態符号$10)後、2線直列ｲﾝﾀｰﾌｪｰｽは停止条件を送出せずに再び同じ従装置または新しい従装置にｱｸｾｽできます。再送開始条件は主装置がﾊﾞｽの制御を失わずに送信主装置、受信主装置間の切り替えを可能にします(訳注:原文では従装置も含まれていますが、基本動作に対して不適切なため削除しました)。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]156

表20-3. 受信主装置動作の状態符号 (注: TWSRの前置分周選択ﾋﾞｯﾄは0の前提)
ｿﾌﾄｳｪｱの対応
状態符号
直前の動作とTWCR設定(TWSR)
ﾊﾞｽの状態TWDR操作TWSTA TWSTO TWINT TWEA
001X
SLA+R設定$08
開始条件送信00
1
X
SLA+R設定$10
再送開始条件送信
01
SLA+W設定
0X
0
0
1
X
SLA+Rで調停敗退
なし$38
またはNACK受信
1
0
1
X
0
0
0
1
SLA+R送信
$40
なし
ACK受信
0
0
1
1
1
X
0
1
SLA+R送信
なし
0
1
1
X
$48
NACK受信
1
1
1
X
0
0
0
1
ﾃﾞｰﾀ ﾊﾞｲﾄ受信$50
ﾃﾞｰﾀ取得
ACK応答
0
0
1
1
1
0
1
X
ﾃﾞｰﾀ ﾊﾞｲﾄ受信$58
ﾃﾞｰﾀ取得01
1X
NACK応答11
1X

TWCR設定によるﾊｰﾄﾞｳｪｱ動作
SLA+R送信、ACKかNACK受信
SLA+R送信、ACKかNACK受信
SLA+W送信、送信主装置動作へ移行
ﾊﾞｽ開放、未指定従装置動作へ移行
ﾊﾞｽ開放時に開始条件送信
ﾃﾞｰﾀ受信、NACK応答
ﾃﾞｰﾀ受信、ACK応答
再送開始条件送信
停止条件送信、TWSTO=0
停止条件→開始条件送信、TWSTO=0
ﾃﾞｰﾀ受信、NACK応答
ﾃﾞｰﾀ受信、ACK応答
再送開始条件送信
停止条件送信、TWSTO=0
停止条件→開始条件送信、TWSTO=0

図20-14. 受信主装置動作の形式と状態
主装置受信
従装置からの受信成功

SLA

S

R

A

08

Data

A

40

50

Data

P

A
58

再送開始条件による次転送

Rs

SLA

R

10
従装置ｱﾄﾞﾚｽ後の非確認応答受信

A

P

W

48
ｱﾄﾞﾚｽ ﾊﾞｲﾄかﾃﾞｰﾀ ﾊﾞｲﾄでのﾊﾞｽ競合調停敗退

主装置送信

A/A 他の主装置転送

A

38

38

A

調停敗退で自身の従装置呼び出し検出

他の主装置転送

68 78 B0
主装置⇒従装置

従装置⇒主装置

他の主装置転送

Data

状態に従った従装置動作
A

何組かのﾃﾞｰﾀと確認応答

nn 16進状態符号(TWSR)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]157

20.7.3. 受信従装置動作
受信従装置動作では何ﾊﾞｲﾄかのﾃﾞｰﾀが送信主装置から受信されます(図20-15.参照)。本項で言及する全ての状態符号は前置分
周選択ﾋﾞｯﾄが0か、または0で遮蔽されることが前提です。
図20-15. 受信従装置動作でのﾃﾞｰﾀ転送
VCC
装置1(受信従装置)装置2(送信主装置)

装置3

～

装置n

R1

SCL
SDA

R2
SCL
SDA

受信従装置動作を始めるにはTWARとTWCRが次のように初期化されなければなりません。
ﾋﾞｯﾄ
TWAR
設定値

7

6

5

4

3

2

1

0

TWA6

TWA5

TWA4

TWA3

TWA2

TWA1

TWA0

TWGCE

装置自身の従装置ｱﾄﾞﾚｽ

1/0

上位7ﾋﾞｯﾄは主装置によってｱﾄﾞﾚｽ指定される時に2線直列ｲﾝﾀｰﾌｪｰｽが応答するｱﾄﾞﾚｽです。最下位(TWGCE)ﾋﾞｯﾄが設定(1)されるなら、TWIは一斉呼び出し($00)に応答し、さもなければ一斉呼び出しｱﾄﾞﾚｽを無視します。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

0

1

0

0

0

1

0

X

TWENは2線直列ｲﾝﾀｰﾌｪｰｽ(TWI)を許可するために1を書かれなければなりません。TWEAは装置自身の従装置ｱﾄﾞﾚｽまたは一斉呼び出しｱﾄﾞﾚｽの確認応答(ACK)を許可するために1を書かれなければなりません。TWSTAとTWSTOは0を書かれなければなりません。
TWARとTWCRが初期化されてしまうと、TWIは自身の従装置ｱﾄﾞﾚｽ(または許可なら、一斉呼び出しｱﾄﾞﾚｽ)とそれに続くﾃﾞｰﾀ方向ﾋﾞｯﾄにより、ｱﾄﾞﾚｽ指定されるまで待機します。方向ﾋﾞｯﾄが0(W)ならばTWIは受信従装置で動作し、さもなくば(1(R)ならば)送信従装置へ移行されます。自身の従装置ｱﾄﾞﾚｽとWﾋﾞｯﾄが受信されてしまった後にTWINTﾌﾗｸﾞが設定(1)され、TWSRから有効な状態符号が読めます。この状態符号は適切なｿﾌﾄｳｪｱ動作を決めるのに使われます。各状態符号に対して行うべき適切な動作は表20-4.で詳述されます。受信従装置動作はTWIが主装置動作の間で調停に敗れた場合にも移行されるかもしれません。(状態符号$68,$78参照)
転送中にTWEAﾋﾞｯﾄがﾘｾｯﾄ(0)されると、TWIは次に受信したﾃﾞｰﾀ ﾊﾞｲﾄ後のSDAに非確認応答(NACK)(SDA=High)を返します。これは従装置がこれ以上受信できないことを示すのに使えます。TWEAが0の間中、TWIは自身の従装置ｱﾄﾞﾚｽに応答しませんが、2線
直列ﾊﾞｽは未だ監視され、ｱﾄﾞﾚｽ認証はTWEAの設定(1)によって何時でも再開できます。これはTWEAﾋﾞｯﾄがTWIを2線直列ﾊﾞｽから
一時的に隔離するのに使えることを意味します。
ｱｲﾄﾞﾙ動作を除く休止形態ではTWIへのｸﾛｯｸ系がOFFにされます。TWEAﾋﾞｯﾄが設定(1)されていると、このｲﾝﾀｰﾌｪｰｽはｸﾛｯｸ元として2線直列ﾊﾞｽ ｸﾛｯｸ(SCL)を使うことにより、自身の従装置ｱﾄﾞﾚｽと一斉呼び出しに未だ確認応答できます。その後ﾃﾞﾊﾞｲｽが休止形
態から起動し、TWIは起動中からTWINTﾌﾗｸﾞが(1書き込みによって)解除(0)されるまでSCLｸﾛｯｸをLowに保ちます。その後のﾃﾞｰﾀ受
信はAVRｸﾛｯｸが通常通り走行することで通常通りに行われます。AVRが長い起動時間に設定されていると、SCL信号線が長時間Lowに保持され、他のﾃﾞｰﾀ送信を阻止するかもしれないことに気付いてください。
これらの(ｱｲﾄﾞﾙ動作を除く)休止形態から起動すると、2線直列ｲﾝﾀｰﾌｪｰｽ ﾃﾞｰﾀ ﾚｼﾞｽﾀ(TWDR)がﾊﾞｽで渡す最後のﾊﾞｲﾄを反映しないことに注意してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]158

表20-4. 受信従装置動作の状態符号 (注: TWSRの前置分周選択ﾋﾞｯﾄは0の前提)
ｿﾌﾄｳｪｱの応答
状態符号
直前の動作とTWCR設定TWDR操作(TWSR)
ﾊﾞｽの状態TWSTA TWSTO TWINT TWEA
01
0X
自宛SLA+W受信
$60
なし
ACK応答
X
0
1
1
主装置のSLA+R/Wで
0
1
0
X
$68
調停敗退/自宛SLA+ なし
1
X
01
W受信/ACK応答01
0
X
一斉呼び出し受信
なし
$70
ACK応答
1
0
1
X
主装置のSLA+R/WでX
0
1
0
調停敗退/一斉呼び なし
$78
X
0
1
1
出し受信/ACK応答
X
0
10
自宛ﾃﾞｰﾀ ﾊﾞｲﾄ受信
ﾃﾞｰﾀ取得
$80
ACK応答
X
0
1
1
0
0
1
0
0
0
1
1
自宛ﾃﾞｰﾀ ﾊﾞｲﾄ受信
ﾃﾞｰﾀ取得1010$88
NACK応答$90

一斉呼び出しのﾃﾞｰﾀﾊﾞｲﾄ受信/ACK応答

ﾃﾞｰﾀ取得$98

一斉呼び出しのﾃﾞｰﾀﾊﾞｲﾄ受信NACK応答

ﾃﾞｰﾀ取得$A0

自指定中の停止条件または
再送開始条件検出

なし

1

0

1

1

X
X
0
0

0
0
0
0

1
1
1
1

0
1
0
1

1

0

1

0

1

0

1

1

0
0

0
0

1
1

0
1

1

0

1

0

1

0

1

1

A

Data

A

TWCR設定によるﾊｰﾄﾞｳｪｱ動作
ﾃﾞｰﾀ受信、NACK応答
ﾃﾞｰﾀ受信、ACK応答
ﾃﾞｰﾀ受信、NACK応答
ﾃﾞｰﾀ受信、ACK応答
ﾃﾞｰﾀ受信、NACK応答
ﾃﾞｰﾀ受信、ACK応答
ﾃﾞｰﾀ受信、NACK応答
ﾃﾞｰﾀ受信、ACK応答
ﾃﾞｰﾀ受信、NACK応答
ﾃﾞｰﾀ受信、ACK応答
未指定従装置動作へ移行、応答禁止
未指定従装置動作へ移行、応答対応
未指定従装置動作へ移行、応答禁止
ﾊﾞｽ開放で開始条件送信
未指定従装置動作へ移行、応答対応
ﾊﾞｽ開放で開始条件送信
ﾃﾞｰﾀ受信、NACK応答
ﾃﾞｰﾀ受信、ACK応答
未指定従装置動作へ移行、応答禁止
未指定従装置動作へ移行、応答対応
未指定従装置動作へ移行、応答禁止
ﾊﾞｽ開放で開始条件送信
未指定従装置動作へ移行、応答対応
ﾊﾞｽ開放で開始条件送信
未指定従装置動作へ移行、応答禁止
未指定従装置動作へ移行、応答対応
未指定従装置動作へ移行、応答禁止
ﾊﾞｽ開放で開始条件送信
未指定従装置動作へ移行、応答対応
ﾊﾞｽ開放で開始条件送信

図20-16. 受信従装置動作の形式と状態
自宛ﾃﾞｰﾀ受信確認応答

S

SLA

W

60

Data

80

A

P/S

80

A0

A

P/S

最終ﾊﾞｲﾄ非確認応答88
主装置で調停敗退自ｱﾄﾞﾚｽ検出

A
68

一斉呼び出しでのﾃﾞｰﾀ受信

一斉呼出

A

Data

70

A
90

Data

A

P/S

90

A0

A

P/S

最終ﾊﾞｲﾄ非確認応答98
主装置で調停敗退一斉呼び出し検出A
78

主装置⇒従装置

従装置⇒主装置

Data

A

何組かのﾃﾞｰﾀと確認応答

nn 16進状態符号(TWSR)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]159

20.7.4. 送信従装置動作
送信従装置動作では何ﾊﾞｲﾄかのﾃﾞｰﾀが送信主装置へ送信されます(図20-17.参照)。本項で言及する全ての状態符号は前置分周
選択ﾋﾞｯﾄが0か、または0で遮蔽されることが前提です。
図20-17. 送信従装置動作でのﾃﾞｰﾀ転送
VCC
装置1(送信従装置)装置2(受信主装置)

装置3

～

装置n

R1

SCL
SDA

R2
SCL
SDA

送信従装置動作を始めるにはTWARとTWCRが次のように初期化されなければなりません。
ﾋﾞｯﾄ
TWAR
設定値

7

6

5

4

3

2

1

0

TWA6

TWA5

TWA4

TWA3

TWA2

TWA1

TWA0

TWGCE

装置自身の従装置ｱﾄﾞﾚｽ

1/0

上位7ﾋﾞｯﾄは主装置によってｱﾄﾞﾚｽ指定される時に2線直列ｲﾝﾀｰﾌｪｰｽが応答するｱﾄﾞﾚｽです。最下位(TWGCE)ﾋﾞｯﾄが設定(1)されるなら、TWIは一斉呼び出し($00)に応答し、さもなければ一斉呼び出しｱﾄﾞﾚｽを無視します。
ﾋﾞｯﾄ
TWCR
設定値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

0

1

0

0

0

1

0

X

TWENは2線直列ｲﾝﾀｰﾌｪｰｽ(TWI)を許可するために1を書かれなければなりません。TWEAは装置自身の従装置ｱﾄﾞﾚｽまたは一斉呼び出しｱﾄﾞﾚｽの確認応答(ACK)を許可するために1を書かれなければなりません。TWSTAとTWSTOは0を書かれなければなりません。
TWARとTWCRが初期化されてしまうと、TWIは自身の従装置ｱﾄﾞﾚｽ(または許可ならば一斉呼び出しｱﾄﾞﾚｽ)とそれに続くﾃﾞｰﾀ方向
ﾋﾞｯﾄによってｱﾄﾞﾚｽ指定されるまで待機します。方向ﾋﾞｯﾄが1(R)ならばTWIは送信従装置で動作し、さもなくば(0(W)ならば)受信従装置へ移行されます。自身の従装置ｱﾄﾞﾚｽとRﾋﾞｯﾄが受信されてしまった後、TWINTﾌﾗｸﾞが設定(1)され、TWSRから有効な状態符号が読めます。この状態符号は適切なｿﾌﾄｳｪｱ動作を決めるのに使われます。各状態符号に対して行うべき適切な動作は表20-5.で詳述されます。送信従装置動作はTWIが主装置動作の間で調停に敗れた場合にも移行されるかもしれません。(状態符号$B0参照)
転送中にTWEAﾋﾞｯﾄが0を書かれると、TWIは転送の最後のﾊﾞｲﾄを送信します。受信主装置が最終ﾊﾞｲﾄ後にACKまたはNACKのどちらを送信するかによって状態$C0か$C8へ移行します。TWIはｱﾄﾞﾚｽ指定されていない従装置動作に切り替えられ、主装置が転送を続ける場合、その主装置を無視します。従って受信主装置は直列ﾃﾞｰﾀとして全て1を受信します。従装置が最後のﾊﾞｲﾄを送信(TWEAが0で主装置からのNACKを予測)したとしても、主装置が(ACK送信によって)追加ﾃﾞｰﾀ ﾊﾞｲﾄを要求すると状態$C8へ移行します。
TWEAが0の間中、TWIは自身の従装置ｱﾄﾞﾚｽに応答しませんが、2線直列ﾊﾞｽは未だ監視され、ｱﾄﾞﾚｽ認証はTWEAの設定(1)によって何時でも再開できます。これはTWEAﾋﾞｯﾄがTWIを2線直列ﾊﾞｽから一時的に隔離するのに使えることを意味します。
ｱｲﾄﾞﾙ動作を除く休止形態ではTWIへのｸﾛｯｸ系がOFFにされます。TWEAﾋﾞｯﾄが設定(1)されていると、このｲﾝﾀｰﾌｪｰｽはｸﾛｯｸ元として2線直列ﾊﾞｽ ｸﾛｯｸ(SCL)を使うことにより、自身の従装置ｱﾄﾞﾚｽと一斉呼び出しに未だ確認応答できます。その後ﾃﾞﾊﾞｲｽが休止形
態から起動し、TWIは起動中からTWINTﾌﾗｸﾞが(1書き込みによって)解除(0)されるまでSCLｸﾛｯｸをLowに保ちます。その後のﾃﾞｰﾀ受
信はAVRｸﾛｯｸが通常通り走行することで通常通りに行われます。AVRが長い起動時間に設定されていると、SCL信号線が長時間Lowに保持され、他のﾃﾞｰﾀ送信を阻止するかもしれないことに気付いてください。
これらの(ｱｲﾄﾞﾙ動作を除く)休止形態から起動すると、2線直列ｲﾝﾀｰﾌｪｰｽ ﾃﾞｰﾀ ﾚｼﾞｽﾀ(TWDR)がﾊﾞｽで渡す最後のﾊﾞｲﾄを反映しないことに注意してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]160

表20-5. 送信従装置動作の状態符号 (注: TWSRの前置分周選択ﾋﾞｯﾄは0の前提)
ｿﾌﾄｳｪｱの応答
直前の動作と
状態符号
TWCR設定ﾊﾞｽの状態(TWSR)TWDR操作TWSTA TWSTO TWINT TWEA
X0
10
自宛SLA+R受信
ﾃﾞｰﾀ設定
$A8
ACK応答
X
0
1
1
主装置のSLA+R/Wで
0
1
X
0
$B0
調停敗退/自宛SLA+ ﾃﾞｰﾀ設定
X
0
1
1
R受信/ACK応答
X
0
10
ﾃﾞｰﾀ ﾊﾞｲﾄ送信
ﾃﾞｰﾀ設定
$B8
ACK受信
X
0
1
1
0
0
1
0
0
1
1
0
ﾃﾞｰﾀ ﾊﾞｲﾄ送信
$C0
なし
0
1
0
1
NACK受信

$C8

最終ﾃﾞｰﾀ ﾊﾞｲﾄ送信(TWEA=0)
ACK受信なし

TWCR設定によるﾊｰﾄﾞｳｪｱ動作

1

0

1

1

0
0

0
0

1
1

0
1

1

0

1

0

1

0

1

1

最終ﾃﾞｰﾀ ﾊﾞｲﾄ送信、NACK受信予定
ﾃﾞｰﾀ ﾊﾞｲﾄ送信、ACK受信予定
最終ﾃﾞｰﾀ ﾊﾞｲﾄ送信、NACK受信予定
ﾃﾞｰﾀ ﾊﾞｲﾄ送信、ACK受信予定
最終ﾃﾞｰﾀ ﾊﾞｲﾄ送信、NACK受信予定
ﾃﾞｰﾀ ﾊﾞｲﾄ送信、ACK受信予定
未指定従装置動作へ移行、応答禁止
未指定従装置動作へ移行、応答対応
未指定従装置動作へ移行、応答禁止
ﾊﾞｽ開放で開始条件送信
未指定従装置動作へ移行、応答対応
ﾊﾞｽ開放で開始条件送信
未指定従装置動作へ移行、応答禁止
未指定従装置動作へ移行、応答対応
未指定従装置動作へ移行、応答禁止
ﾊﾞｽ開放で開始条件送信
未指定従装置動作へ移行、応答対応
ﾊﾞｽ開放で開始条件送信

A

Data

A

Data

図20-18. 送信従装置動作の形式と状態
S

自ｱﾄﾞﾚｽ指定でのﾃﾞｰﾀ送信

SLA

R

A8
主装置で調停敗退自ｱﾄﾞﾚｽ検出

B8

A

P/S

C0

A
B0

最終ﾊﾞｲﾄ送信未指定従装置移行(TWEA=0)

A

全1

P/S

C8
主装置⇒従装置

従装置⇒主装置

Data

A

何組かのﾃﾞｰﾀと確認応答

nn 16進状態符号(TWSR)

20.7.5. その他の状態定義したTWI状態に従わない2つの状態符号があります。下表をご覧ください。
状態$F8はTWI割り込み要求ﾌﾗｸﾞ(TWINT)が設定(1)されないので適切な情報が利用できないことを示します。これは他の状態間でTWIが直列転送に関係しない時に起きます。
状態$00は2線直列ﾊﾞｽ転送中にﾊﾞｽ異常が起きたことを示します。ﾊﾞｽ異常はﾌﾚｰﾑ形式の不正な位置で開始(START)条件または停止(STOP)条件が起きる時に発生します。このような不正位置の例はｱﾄﾞﾚｽ ﾊﾞｲﾄ、ﾃﾞｰﾀ ﾊﾞｲﾄ、確認応答(ACK)ﾋﾞｯﾄの直列転送中です。ﾊﾞｽ異常が起きるとTWINTが設定(1)されます。ﾊﾞｽ異常から回復するには停止(STOP)条件生成許可(TWSTO)ﾋﾞｯﾄが設定(1)されて、TWINTが論理1書き込みによって解除(0)されなければなりません。これはTWIをｱﾄﾞﾚｽ指定されていない従装置動作にさせ、TWSTOﾋﾞｯﾄを解除(0)させます(TWCRの他のﾋﾞｯﾄは影響されません)。SDAとSCL信号進は開放され、停止条件は送出されません。
表20-6. その他の状態符号 (注: TWSRの前置分周選択ﾋﾞｯﾄは0の前提)
ｿﾌﾄｳｪｱの応答
直前の動作と
状態符号
TWCR設定ﾊﾞｽの状態(TWSR)TWDR操作TWSTA TWSTO TWINT
適切な状態情報なし
なし$F8
TWINT=0
不正な開始条件/停
なし
0
1
1
$00
止条件でのﾊﾞｽ異常TWCR設定によるﾊｰﾄﾞｳｪｱ動作
TWEA-

待機または現在の転送続行

X

停止条件を送出せずにﾊﾞｽを開放
TWSTO=0ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]161

20.7.6. 各種TWI動作種別の組み合わせ
いくつかの場合で望んだ動作を満たすために各々のTWI動作種別は組み合わされなければなりません。例えば直列EEPROMからのﾃﾞｰﾀ読み出しを考えてください。一般的にこのような転送は次の段階を含みます。
1. 転送が開始されなければなりません。
2. EEPROMは読み出すべき場所を指示されなければなりません。
3. 読み出しが実行されなければなりません。
4. 転送が終了されなければなりません。
ﾃﾞｰﾀが主装置から従装置へとその逆の両方向へ転送されることに注意してください。主装置はどの場所を読みたいかを従装置に指示しなければならず、送信主装置動作の使用を必要とします。その後にﾃﾞｰﾀを従装置から読まねばならず、受信主装置動作の使用を意味します。従って転送方向が切り替えられなければなりません。主装置はこれら全ての段階中にﾊﾞｽの制御を保持しなければならず、この手順は排他的(非分断)操作として行われるべきです。複数主装置ｼｽﾃﾑでこの原則に違反すると、他の主装置が②と③段階間でEEPROM内のﾃﾞｰﾀ ﾎﾟｲﾝﾀを変更するかもしれず、(元の)主装置は不正なﾃﾞｰﾀ位置を読むでしょう。このような転送方向の切り替えはｱﾄﾞﾚｽ ﾊﾞｲﾄの送信とﾃﾞｰﾀの受信間で再送開始条件を送出することによって成し遂げられます。再送開始条件後も主装置はﾊﾞｽの占有権を保持します。次の図はこの転送の流れを示します。
図20-19. 直列EEPROMｱｸｾｽでの各種TWI動作種別の組み合わせ
SLA

S

送信主装置
W A EEPROMｱﾄﾞﾚｽ A Rs

受信主装置
R A EEPROMﾃﾞｰﾀ A

SLA

主装置⇒従装置
P
従装置⇒主装置開始条件

再送開始条件停止条件

20.8. 複数主装置ｼｽﾃﾑでのﾊﾞｽ競合と調停
複数の主装置が同じﾊﾞｽに接続されると、それらの1つまたはそれ以上によって同時に送信が開始されるかもしれません。TWIは主装置の1つが転送を続けることを許され、手順内でﾃﾞｰﾀが失われないような方法でこのような状態が扱われることを標準で保証します。
2つの主装置が受信従装置へﾃﾞｰﾀを送信することを試みる場合の調停状況の例は以下で図示されます。
図20-20. ﾊﾞｽの競合調停例
装置1(送信主装置)装置2(送信主装置)装置3(受信従装置)

～

R1
R2

装置n

SCL
SDA

VCC
SCL
SDA

以下で示されるように様々な異なる状況が調停中に起こるかもしれません。
● 複数の主装置が同じ従装置に全く同じ通信を実行する場合。この場合、主/従装置のどれもがﾊﾞｽの衝突について知りません。
● 複数の主装置が異なるﾃﾞｰﾀまたは方向ﾋﾞｯﾄ(R/W)で同じ従装置をｱｸｾｽする場合。この場合、R/Wﾋﾞｯﾄまたはﾃﾞｰﾀ ﾋﾞｯﾄのどちらかで調停が起きます。他の主装置がSDAに0を出力する間に1を出力しようとする主装置が調停に敗れます。敗れた主装置は応用ｿﾌﾄｳｪｱの処置によって未指定従装置動作に切り替えるか、またはﾊﾞｽが開放になるまで待って新規開始条件を送出します。
● 複数の主装置が異なる従装置をｱｸｾｽする場合。この場合、SLAﾋﾞｯﾄ内で調停が起きます。他の主装置がSDAに0を出力する間に1を出力しようとする主装置が調停に敗れます。SLA内で調停に敗れた主装置は勝った主装置によってｱﾄﾞﾚｽ指定されるかを検査するために従装置動作へ切り替えます。ｱﾄﾞﾚｽ指定されると、R/Wﾋﾞｯﾄの値によって受信従装置(SR)動作または送信従装置(ST)動作へ切り替えます。ｱﾄﾞﾚｽ指定されないなら、応用ｿﾌﾄｳｪｱの処置によって未指定従装置動作に切り替えるか、またはﾊﾞｽが開放になるまで待って新規開始条件を送出します。
これは図20-21.で要約されます。利用可能な状態符号は楕円(訳注:原文は円)で与えられます。
図20-21. ﾊﾞｽの競合調停によって発生する利用可能な状態符号
開始条件

SLA

A/A 停止条件
R/W A
ﾃﾞｰﾀ
ﾃﾞｰﾀで調停に敗退
SLAで調停に敗退

自ｱﾄﾞﾚｽ
一斉呼び出し
受信?
Yes
方向?
R

W

No

38

ﾊﾞｽを開放し未指定従装置動作へ移行
ﾊﾞｽが開放された時に開始条件送出

68 ﾃﾞｰﾀ ﾊﾞｲﾄを受信し、NACKで応答
78 ﾃﾞｰﾀ ﾊﾞｲﾄを受信し、ACKで応答
B0

ﾃﾞｰﾀ ﾊﾞｲﾄを送信し、NACK応答を受信
ﾃﾞｰﾀ ﾊﾞｲﾄを送信し、ACK応答を受信

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]162

20.9. TWI用ﾚｼﾞｽﾀ
20.9.1. TWBR - TWI ﾋﾞｯﾄ速度ﾚｼﾞｽﾀ (TWI Bit Rate Register)
ﾋﾞｯﾄ
($B8)
Read/Write
初期値

7

6

5

4

3

2

1

0

TWBR7

TWBR6

TWBR5

TWBR4

TWBR3

TWBR2

TWBR1

TWBR0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

TWBR

● ﾋﾞｯﾄ7～0 - TWBR7～0 : TWI ﾋﾞｯﾄ速度選択 (TWI Bit Rate Register)

TWBRはﾋﾞｯﾄ速度発生器用の分周値を選びます。ﾋﾞｯﾄ速度発生器は主装置動作でのSCLｸﾛｯｸ周波数を生成する周波数分周器です。ﾋﾞｯﾄ速度の計算については149頁の「ﾋﾞｯﾄ速度発生器」をご覧ください。

20.9.2. TWCR - TWI制御ﾚｼﾞｽﾀ (TWI Control Register)
ﾋﾞｯﾄ
($BC)
Read/Write
初期値

7

6

5

4

3

2

1

0

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

-

TWIE

R/W
0

R/W
0

R/W
0

R/W
0

R
0

R/W
0

R
0

R/W
0

TWCR

TWCRはTWI動作の制御に使われます。TWIの許可、ﾊﾞｽ上に開始条件を印加することによる主装置のｱｸｾｽ開始、受信装置の応答生成、停止条件の生成、ﾊﾞｽにﾃﾞｰﾀを送出するためのTWI ﾃﾞｰﾀ ﾚｼﾞｽﾀ(TWDR)への書き込み中のﾊﾞｽの一時停止制御に使われます。TWDRがｱｸｾｽ不能の間にTWDRへ書き込もうとする場合の上書き発生も示します。
● ﾋﾞｯﾄ7 - TWINT : TWI割り込み要求ﾌﾗｸﾞ (TWI Interrupt Flag)

このﾋﾞｯﾄはTWIが現在の作業を終了し、応用ｿﾌﾄｳｪｱの応答が予測されるとき、ﾊｰﾄﾞｳｪｱによって設定(1)されます。TWI制御ﾚｼﾞｽﾀ(TWCR)のTWI割り込み許可(TWIE)ﾋﾞｯﾄとｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されていると、MCUはTWI割り込
みﾍﾞｸﾀへ飛びます。TWINTﾌﾗｸﾞが設定(1)の間、SCLのLow期間は引き伸ばされます。TWINTﾌﾗｸﾞは論理1書き込みによってｿﾌﾄｳｪ
ｱで解除(0)されなければなりません。このﾌﾗｸﾞが割り込みﾙｰﾁﾝを実行するとき、自動的に解除(0)されないことに注意してください。このﾌﾗｸﾞの解除(0)がTWI動作を始めるので、このﾌﾗｸﾞを解除(0)する前にTWIｱﾄﾞﾚｽ ﾚｼﾞｽﾀ(TWAR)、TWIﾃﾞｰﾀ ﾚｼﾞｽﾀ(TWDR)、TWI状
態ﾚｼﾞｽﾀ(TWSR)への全てのｱｸｾｽが完了していなければならないことにも注意してください。
● ﾋﾞｯﾄ6 - TWEA : 確認応答(ACK)許可 (TWI Enable Acknowledge Bit)

TWEAﾋﾞｯﾄは確認応答(ACKﾊﾟﾙｽ)の生成を制御します。TWEAﾋﾞｯﾄが1を書かれ、次の条件に合致すると、TWIﾊﾞｽにACKﾊﾟﾙｽが生成されます。
・ 装置が自分用の従装置ｱﾄﾞﾚｽを受信した場合。
・ TWIｱﾄﾞﾚｽ ﾚｼﾞｽﾀ(TWAR)の一斉呼び出し検出許可(TWGCE)ﾋﾞｯﾄが設定(1)されている時に一斉呼び出しを受信した場合。
・ 主受信装置または従受信装置動作でﾃﾞｰﾀ ﾊﾞｲﾄを受信した場合。
TWEAﾋﾞｯﾄに0を書くことによって一時的かつ仮想的に装置を2線直列ﾊﾞｽから切り離すことができます。ｱﾄﾞﾚｽ認証はその後に再びTWEAﾋﾞｯﾄへ1を書くことによって再開できます。
● ﾋﾞｯﾄ5 - TWSTA : 開始(START)条件生成許可 (TWI START Condition Bit)

2線直列ﾊﾞｽの主装置になることを欲する時に応用はTWSTAﾋﾞｯﾄに1を書きます。TWIﾊｰﾄﾞｳｪｱはﾊﾞｽが利用可能かを検査し、開放な
らばﾊﾞｽに開始条件を生成します。しかし、ﾊﾞｽが未開放の場合、TWIは停止条件が検出されるまで待ち、その後にﾊﾞｽ主権を要求する新規開始条件を生成します。TWSTAは開始条件が送出されてしまった時にｿﾌﾄｳｪｱで解除(0)されなければなりません。
● ﾋﾞｯﾄ4 - TWSTO : 停止(STOP)条件生成許可 (TWI STOP Condition Bit)

主装置動作でTWSTOﾋﾞｯﾄに1を書くことが2線直列ﾊﾞｽに停止条件を生成します。停止条件がﾊﾞｽで実行されると、TWSTOﾋﾞｯﾄは自動的に解除(0)されます。従装置動作でのTWSTOﾋﾞｯﾄの設定(1)は異常状態からの回復に使えます。これは停止条件を生成しませんが、TWIは明確に指定されていない従装置動作に戻り、SCL、SDA信号線をHi-Z状態に開放します。
● ﾋﾞｯﾄ3 - TWWC : TWI上書き発生ﾌﾗｸﾞ (TWI Write Collision Flag)

TWI割り込み要求ﾌﾗｸﾞ(TWINT)が0の時にTWI ﾃﾞｰﾀ ﾚｼﾞｽﾀ(TWDR)への書き込みを試みると、このTWWCﾌﾗｸﾞが設定(1)されます。
このﾌﾗｸﾞはTWINTが1の時のTWDR書き込みによって解除(0)されます。
● ﾋﾞｯﾄ2 - TWEN : TWI動作許可 (TWI Enable Bit)

TWENﾋﾞｯﾄはTWI動作を許可し、TWIｲﾝﾀｰﾌｪｰｽを活性(有効)にします。TWENが1を書かれると、TWIはSCL、SDAﾋﾟﾝに接続した
I/Oﾋﾟﾝを制御できるようになり、ｽﾊﾟｲｸ濾波器とｽﾘｭｰﾚｰﾄ制限器を許可します。このﾋﾞｯﾄが0を書かれると、TWIがOFFにされ、どんな進行中の動作にも関係なく、全てのTWI送信が終了されます。
● ﾋﾞｯﾄ1 - Res : 予約 (Reserved Bit)

このﾋﾞｯﾄは予約されており、常に0として読まれます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]163

● ﾋﾞｯﾄ0 - TWIE : TWI割り込み許可 (TWI Interrupt Enable)

このﾋﾞｯﾄが1を書かれ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されていると、TWI割り込み要求ﾌﾗｸﾞ(TWINT)が1である限り、TWI割り込み要求が活性に(発生)されます。

20.9.3. TWSR - TWI状態ﾚｼﾞｽﾀ (TWI Status Register)
ﾋﾞｯﾄ
($B9)
Read/Write
初期値

7

6

5

4

3

2

1

0

TWS7

TWS6

TWS5

TWS4

TWS3

-

TWPS1

TWPS0

R
1

R
1

R
1

R
1

R
1

R
0

R/W
0

R/W
0

TWSR

● ﾋﾞｯﾄ7～3 - TWS7～3 : TWI状態 (TWI Status)

これら5ﾋﾞｯﾄはTWI論理回路と2線直列ﾊﾞｽの状態を反映します。各種状態符号は本項の後ろで記述されます。TWSRから読む値が5ﾋﾞｯﾄの状態符号と2ﾋﾞｯﾄの前置分周値の両方を含むことに注意してください。応用設計者は状態ﾋﾞｯﾄを検査する時に前置分周器ﾋﾞｯ
ﾄを0で隠すべきです。これは前置分周器設定に関係なく状態検査を行います。この手法は特記事項を除いてこのﾃﾞｰﾀｼｰﾄ内で使われます。
● ﾋﾞｯﾄ2 - Res : 予約 (Reserved Bit)

このﾋﾞｯﾄは予約されており、常に0として読まれます。
● ﾋﾞｯﾄ1,0 - TWPS1,0 : TWI前置分周器選択 (TWI Prescaler Bits)

これらのﾋﾞｯﾄは読み書きでき、ﾋﾞｯﾄ速度の前置分周器を制御します。
ﾋﾞｯﾄ速度を計算するには149頁の「ﾋﾞｯﾄ速度発生器」をご覧ください。TWPS1,0の値はこの式で使われます。

表20-7. TWIﾋﾞｯﾄ速度前置分周器選択
TWPS1
0
0
1
1
TWPS0
0
1
0
1
分周値
1
4
16
64

20.9.4. TWDR - TWIﾃﾞｰﾀ ﾚｼﾞｽﾀ (TWI Data Register)
ﾋﾞｯﾄ
($BB)
Read/Write
初期値

7

6

5

4

3

2

1

0

TWD7

TWD6

TWD5

TWD4

TWD3

TWD2

TWD1

TWD0

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

TWDR

送信動作でのTWDRは送信されるべき次ﾊﾞｲﾄを含みます。受信動作でのTWDRは最後に受信したﾊﾞｲﾄを含みます。TWDRはTWIがﾊﾞｲﾄを移動する手順でない間に書き込み可能です。これはTWI制御ﾚｼﾞｽﾀ(TWCR)のTWI割り込み要求ﾌﾗｸﾞ(TWINT)がﾊｰﾄﾞｳｪｱによって設定(1)されると起きます。最初のTWI割り込みが起こる前にﾃﾞｰﾀ ﾚｼﾞｽﾀ(TWDR)は使用者によって初期化できないことに注意
してください。TWDRのﾃﾞｰﾀはTWINTが安定して設定(1)されている限り存続します。ﾃﾞｰﾀが移動出力される間、ﾊﾞｽのﾃﾞｰﾀが同時に移動入力されます。TWI割り込みによる休止形態からの起動後を除いて、TWDRは常にﾊﾞｽに現れる最後のﾊﾞｲﾄを含みます。この例
外の場合のTWDRの内容は不定です。ﾊﾞｽ調停に敗れた場合の主装置から従装置への移行でもﾃﾞｰﾀは失われません。確認応答(ACK)ﾋﾞｯﾄの扱いはTWI論理回路によって自動的に制御され、CPUはACKﾋﾞｯﾄを直接的にｱｸｾｽできません。
● ﾋﾞｯﾄ7～0 - TWD7～0 : TWIﾃﾞｰﾀ (TWI Data)

これら8ﾋﾞｯﾄは送信されるべき次のﾃﾞｰﾀ ﾊﾞｲﾄ、または2線直列ﾊﾞｽで最後に受信したﾃﾞｰﾀ ﾊﾞｲﾄを構成します。

20.9.5. TWAR - TWI(従装置)ｱﾄﾞﾚｽ ﾚｼﾞｽﾀ (TWI (Slave) Address Register)
ﾋﾞｯﾄ
($BA)
Read/Write
初期値

7

6

5

4

3

2

1

0

TWA6

TWA5

TWA4

TWA3

TWA2

TWA1

TWA0

TWGCE

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

R/W
1

R/W
0

TWAR

TWARは従装置の送受信装置として設定した時にTWIが応答する7ﾋﾞｯﾄ従装置ｱﾄﾞﾚｽを(TWAR上位7ﾋﾞｯﾄに)設定されるべきで、主装置動作では必要とされません。複数主装置のｼｽﾃﾑでは、他の主装置によって従装置としてｱﾄﾞﾚｽ指定され得る主装置に於いて、
TWARは設定されなければなりません。
TWARの最下位ﾋﾞｯﾄ(TWGCE)は一斉呼び出しｱﾄﾞﾚｽ($00)認証の許可に使われます。これらは受信した直列ｱﾄﾞﾚｽで従装置ｱﾄﾞﾚｽ(と許可ならば一斉呼び出しｱﾄﾞﾚｽ)を捜す関連ｱﾄﾞﾚｽ比較器です。一致が見つかると割り込み要求が生成されます。
● ﾋﾞｯﾄ7～1 - TWA6～0 : TWI従装置ｱﾄﾞﾚｽ (TWI (Slave) Address)

これら7ﾋﾞｯﾄはTWI部の従装置ｱﾄﾞﾚｽを構成します。
● ﾋﾞｯﾄ0 - TWGCE : 一斉呼び出し検出許可 (TWI General Call Recognition Enable Bit)

設定(1)なら、このﾋﾞｯﾄは2線直列ﾊﾞｽを伝って与えられる一斉呼び出しの認証(検出)を許可します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]16420.9.6. TWAMR - TWI (従装置)ｱﾄﾞﾚｽ遮蔽ﾚｼﾞｽﾀ (TWI (Slave) Address Mask Register)
ﾋﾞｯﾄ
($BD)
Read/Write
初期値

7

6

5

4

3

2

1

0

TWAM6

TWAM5

TWAM4

TWAM3

TWAM2

TWAM1

TWAM0

-

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R
0

TWAMR

● ﾋﾞｯﾄ7～1 - TWAM6～0 : TWI従装置ｱﾄﾞﾚｽ遮蔽 (TWI (Slave) Address Mask)

TWAMRは7ﾋﾞｯﾄの従装置ｱﾄﾞﾚｽ遮蔽値を格納できます。TWAM
R内の各ﾋﾞｯﾄはTWI(従装置)ｱﾄﾞﾚｽ ﾚｼﾞｽﾀ(TWAR)内の対応するｱﾄﾞﾚｽ ﾋﾞｯﾄを遮蔽(禁止)します。遮蔽ﾋﾞｯﾄが1に設定されると、その後のｱﾄﾞﾚｽ一致論理回路は到着ｱﾄﾞﾚｽ ﾋﾞｯﾄとTWAR内の対応
ﾋﾞｯﾄ間の比較を無視します。図20-22.はｱﾄﾞﾚｽ一致論理回路を詳細に示します。

図20-22. TWIｱﾄﾞﾚｽ一致論理 構成図
ｱﾄﾞﾚｽ ﾋﾞｯﾄ0比較器
到着ｱﾄﾞﾚｽ ﾋﾞｯﾄ0
TWA0

～

～

TWAM0
ｱﾄﾞﾚｽ
一致

ｱﾄﾞﾚｽ ﾋﾞｯﾄ6比較器● ﾋﾞｯﾄ0 - Res : 予約 (Reserved Bit)

このﾋﾞｯﾄは使われず、常に0として読まれます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]16521. USB制御器
21.1. 特徴
・ 全速(Full-speed)と低速(Low-speed)の装置動作を支援
・ USB Ver2.0仕様適合
・ 交互動作(2ﾊﾞﾝｸ)支援・ 832ﾊﾞｲﾄの2ﾎﾟｰﾄRAM(DPRAM)- 最大64ﾊﾞｲﾄの1つのｴﾝﾄﾞﾎﾟｲﾝﾄ (既定制御ｴﾝﾄﾞﾎﾟｲﾝﾄ)- 最大256ﾊﾞｲﾄの1つのｴﾝﾄﾞﾎﾟｲﾝﾄ (1または2ﾊﾞﾝｸ)- 最大64ﾊﾞｲﾄの5つのｴﾝﾄﾞﾎﾟｲﾝﾄ (1または2ﾊﾞﾝｸ)・ 低速(Low-speed)動作でのｸﾘｽﾀﾙなし動作

21.2. 構成図
USB制御器は2ﾎﾟｰﾄ ﾒﾓﾘ(DPRAM)に格納されたﾃﾞｰﾀの流れへUSB接続をｲﾝﾀｰﾌｪｰｽするﾊｰﾄﾞｳｪｱを提供します。
(全速動作に関して)USB制御器は内部PLL出力の48MHz 図21-1. USB制御器概要構成図±0.25%の基準ｸﾛｯｸを必要とします。このﾁｯﾌﾟ上のPLLは
AVCC
UVCC
XTAL1
USBｲﾝﾀｰﾌｪｰｽ用に内部高周波数(48MHz)ｸﾛｯｸを生成し校正付きます。PLL入力は外部ｸﾘｽﾀﾙ用低電力発振器、外部ｸﾛｯｸ
内蔵RC発振器
入力、または内蔵RC発振器を用いるように構成設定する
ｸﾛｯｸ多重器
ことができます(168頁の「ｸﾘｽﾀﾙなし動作」項をご覧ください)。
clk 8MHz PLLｸﾛｯｸ
USB
PLL
UCAP
48MHzｸﾛｯｸは受信したUSB差動ﾃﾞｰﾀからの12MHz全速
電圧調整器 (×n÷2)
前置分周器(Full-speed)または1.5MHz低速(Low-speed)のﾋﾞｯﾄ ｸﾛｯｸclk 48MHz
生成と、全速または低速USB装置許容誤差に従ったﾃﾞｰﾀ
DCPU
DPLL
送信に使われます。ｸﾛｯｸ再生はUSBﾊﾞｽのｼﾞｯﾀ仕様に適
ｸﾛｯｸ再生合したﾃﾞｼﾞﾀﾙ位相固定化閉路(DPLL)部によって行われまD+す。
USBｲﾝﾀｰﾌｪｰｽ
USB電気的仕様に従うため、USB緩衝部(D+とD-)は3.0～
USB用
VBUS
3.6V範囲内で給電されるべきです。ATmega16U4/32U4は内蔵DPRAM
5.5Vまで給電できるので、内蔵電圧調整器がUSB緩衝部
給電を提供します。

21.3. 代表的な応用実装
対象応用電源に応じて、ATmega16U4/32U4は異なる代表
的ﾊｰﾄﾞｳｪｱ実装を必要とします。

図21-2. 動作種別 対 周波数と電源
VCC (V)
5.5
4.5

最大動作周波数 (MHz)16MHz
内蔵電圧調整器
あり、USB適合

3.6
3.4

8MHz

内蔵電圧調整器
不要、USB適合

3.0
2.7

USB動作不可

2MHz

最低VCC
0

0

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

16621.3.1. ﾊﾞｽ給電装置

図21-3. 5V入出力での代表的ﾊﾞｽ給電応用

UVCC

1µF

AVCC

VCC

UCAP
VBUS
DD+
GND

RS=22Ω

RS=22Ω

VBUS
DD+
UGND
XTAL1

XTAL2

GND

図21-4. 3V入出力での代表的ﾊﾞｽ給電応用
外部3V
電圧調整器

UVCC

1µF

AVCC

VCC

UCAP
VBUS
DD+
GND

RS=22Ω

RS=22Ω

VBUS
DD+
UGND
XTAL1

21.3.2. 自己給電装置

XTAL2

GND

図21-5. 3.4～5.5V入出力での代表的自己給電応用

UVCC

1µF

AVCC

VCC

UCAP
VBUS
DD+
GND

RS=22Ω

RS=22Ω

外部
3.4～5.5V
電源

VBUS
DD+
UGND
XTAL1

XTAL2

GND

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]167

図21-6. 3.0～3.6V入出力での代表的自己給電応用

UVCC

1µ F

AVCC

VCC

UCAP
VBUS
DD+
GND

RS=22Ω

RS=22Ω

外部
3.0～3.6V
電源

VBUS
DD+
UGND
XTAL1

XTAL2

GND

21.4. ｸﾘｽﾀﾙなし動作
外部部品点数と部品費用を減らするため、USB単位部は低速(Low-speed)動作に於いてPLL用の入力ｸﾛｯｸ元として内蔵RC発振器
で動作するように構成設定することができます。内蔵RC発振器は0～40℃の温度範囲内でUSB低速周波数精度を満足するように工場校正されています。
USB全速(Full-speed)については外部ｸﾘｽﾀﾙ用発振器または外部ｸﾛｯｸ入力だけが使えます。

21.5. 設計の指針
USBﾃﾞｰﾀ線の直列抵抗器は値が22Ω(±5%)であるべきです。
● USB入力ｺﾈｸﾀ(またはｹｰﾌﾞﾙ付き装置の場合、ｹｰﾌﾞﾙ接続)からUSBﾏｲｸﾛ ｺﾝﾄﾛｰﾗへの配線は可能な限り短く、差動配線規則(斜めの累積を避け、可能な限り近く、同じ長さ)に従うべきです。
● 外部の妨害によるUSBﾊﾟｯﾄﾞの損傷を防ぐために、電圧瞬間変動/ESD消去器も使われ得ます。
● UCAPｺﾝﾃﾞﾝｻは正しい動作のために値が1µF(±10%)であるべきです。
● VBUS線上には10µFｺﾝﾃﾞﾝｻが強く推奨されます。
●

21.6. 一般的な動作
21.6.1. 序説
USB制御器は以下によって生成されたﾊｰﾄﾞｳｪｱ ﾘｾｯﾄ後にﾘｾｯﾄされ、禁止されます。
● 電源ONﾘｾｯﾄ● 外部ﾘｾｯﾄ● ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ
● 低電圧検出(BODﾘｾｯﾄ● JTAGﾘｾｯﾄ
しかし、別に利用可能な任意のﾘｾｯﾄ元は以下です。
● USBﾘｾｯﾄ終了(EOR: End Of Reset)
この場合、USB制御器はﾘｾｯﾄされますが、禁止されません(故に装置は接続を保ちます)。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]168

21.6.2. 電源ONとﾘｾｯﾄ
次の構成図は電源ONでのUSB制御器主状態を説明します。
ﾊｰﾄﾞｳｪｱ ﾘｾｯﾄ後のUSB制御器状態は「ﾘｾｯﾄ」です。この状態は以下です。
● USB制御(USBCON)ﾚｼﾞｽﾀのUSB全体許可(USBE)は設定(1)されません。(=解除(0))● 電力消費を最小とするためにUSB制御器ｸﾛｯｸは停止されます(USBCO
NﾚｼﾞｽﾀのUSBｸﾛｯｸ停止(FRZCLK)=1)。
● USB制御器は禁止されます。
● USBﾊﾟｯﾄﾞは休止(Suspend)動作です。
● 装置のUSB制御器内部状態はﾘｾｯﾄです。
USBE設定(=1)後、USB制御器は装置状態へ移行します。制御器は'ｱｲﾄﾞﾙ'です。
USB制御器はUSBEの解除(0)によって何時でも「停止」にできます。実際にはUSBEの解除(0)がUSB制御器上でﾊｰﾄﾞｳｪｱ ﾘｾｯﾄとして働きます。

図21-7. ﾘｾｯﾄ後のUSB制御器状態

その他の状態
USBE=0

ｸﾛｯｸ停止FRZCLK=1
ﾏｸﾛOFF

ﾘｾｯﾄ
USBE=1

ﾊｰﾄﾞｳｪｱ
ﾘｾｯﾄ(除くEORから)
USBE=0

USBE=0装置
EORからのﾊｰﾄﾞｳｪｱ ﾘｾｯﾄ

21.6.3. 割り込み
2つの割り込みﾍﾞｸﾀがUSBｲﾝﾀｰﾌｪｰｽに割り当てられます。
USB制御器は各ｴﾝﾄﾞﾎﾟｲﾝﾄへの関係ﾃﾞｰﾀ転送に関連するUSBｴﾝﾄﾞﾎﾟｲﾝﾄ
事象との違いでUSB一般事象を区別します。

図21-8. USB割り込み概要

USB一般割り込み
USB装置割り込み

USB一般
割り込みﾍﾞｸﾀ

ｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み

ｴﾝﾄﾞﾎﾟｲﾝﾄ
割り込みﾍﾞｸﾀ

図21-9. USB一般割り込みﾍﾞｸﾀ割り込み元

VBUSTI (USBINT.0)
VBUSTE (USBCON.0)
UPRSMI (UDINT.6)
UPRSME (UDIEN.6)
EORSMI (UDINT.5)
EORSME (UDIEN.5)
WAKEUPI (UDINT.4)
WAKEUPE (UDIEN.4)
EORSTI (UDINT.3)
EORSTE (UDIEN.3)
SOFI (UDINT.2)
SOFE (UDIEN.2)
SUSPI (UDINT.0)
SUSPE (UDIEN.0)

USB一般割り込み

USB装置割り込み

USB一般
割り込みﾍﾞｸﾀ

非同期割り込み元(ﾊﾟﾜｰﾀﾞｳﾝ動作からの起動復帰をCPUに許します。)

以下を除き、これら割り込みの殆ど全てはUSBｸﾛｯｸが許可される(FRZCLK=0)場合にだけ検出される時間相対事象です。
VBUS挿抜検出(挿入、取り外し)
ﾃﾞｰﾀ線上で状態変化が検出されるといつも起動されるWAKEUP割り込み
このWAKEUP非同期割り込みは一般的にUSBが休止(Suspend)状態へ移行された後に、ﾊﾟﾜｰﾀﾞｳﾝ動作でのﾃﾞﾊﾞｲｽの起動復帰を許
します。
●
●

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

169

図21-10. USBｴﾝﾄﾞﾎﾟｲﾝﾄ割り込みﾍﾞｸﾀ割り込み元

OVERFI (UESTA0X.6)
UNDERFI (UESTA0X.5)
FLERRE (UEIENX.7)
NAKINI (UEINTX.6)
NAKINE (UEIENX.6)
NAKOUTI (UEINTX.4)
NAKOUTE (UEIENX.4)
RXSTPI (UEINTX.3)
RXSTPE (UEIENX.3)
RXOUTI (UEINTX.2)
RXOUTE (UEIENX.2)
STALLEDI (UEINTX.1)
STALLEDE (UEIENX.1)
TXINI (UEINTX.0)
TXINE (UEIENX.0)

ｴﾝﾄﾞﾎﾟｲﾝﾄ6
ｴﾝﾄﾞﾎﾟｲﾝﾄ5
ｴﾝﾄﾞﾎﾟｲﾝﾄ4
ｴﾝﾄﾞﾎﾟｲﾝﾄ3
ｴﾝﾄﾞﾎﾟｲﾝﾄ2
ｴﾝﾄﾞﾎﾟｲﾝﾄ1
ｴﾝﾄﾞﾎﾟｲﾝﾄ0

ｴﾝﾄﾞﾎﾟｲﾝﾄ割り込みﾍﾞｸﾀ

EPINT(UEINT.n)

各ｴﾝﾄﾞﾎﾟｲﾝﾄはﾌﾗｸﾞに関して8つの割り込み元を持ち、各源は対応するｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み起動を許可または不許可にすることができます。ｴﾝﾄﾞﾎﾟｲﾝﾄに対して最低1つの(割り込み)元が割り込み起動を許可されるなら、対応する事象はﾌﾟﾛｸﾞﾗﾑをUSBｴﾝﾄﾞﾎﾟｲﾝﾄ割り
込みﾍﾞｸﾀへ分岐させます。使用者はｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み要求(UEINT)ﾚｼﾞｽﾀを読むことで割り込みの元(ｴﾝﾄﾞﾎﾟｲﾝﾄ)を判定し、そして様々なﾌﾗｸﾞのﾎﾟｰﾘﾝｸﾞによって検知される事象を扱います。

21.7. 電力動作種別
21.7.1. ｱｲﾄﾞﾙ動作
この動作ではCPUｺｱが停止されます(CPUｸﾛｯｸ停止)。ｱｲﾄﾞﾙ動作はUSB制御器が走行中、非走行中のどちらでも使われます。CPUは何れかのUSB割り込みで起動復帰します。

21.7.2. ﾊﾟﾜｰﾀﾞｳﾝ動作
この動作では発振器が停止され、全てのｸﾛｯｸ(CPUと周辺機能部)が停止します。USB制御器は以下の時に起動復帰します。
● CPU起動復帰割り込み(WAKEUPI)起動● VBUS遷移割り込み(VBUSTI)起動

21.7.3. USBｸﾛｯｸ停止
ﾌｧｰﾑｳｪｱはUSB制御器のｸﾛｯｸを停止するUSBCONﾚｼﾞｽﾀのUSBｸﾛｯｸ停止(FRZCLK)ﾋﾞｯﾄの設定(1)によって電力消費を低減することができます。FRZCLKが設定(1)されている時は次のﾚｼﾞｽﾀが未だｱｸｾｽ可能です。
● USBCON, USBSTA, USBINT● UDCON (分離(DETACH), ...)● UDINT● UDIEN
更にFRZCLKが設定(1)されている時は次の割り込みだけが起動され得ます。
● CPU起動復帰割り込み(WAKEUPI)● VBUS遷移割り込み(VBUSTI)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

170

21.8. 速度制御
速度選択(全速(Full-speed)または低速(Low-speed))
はD+/D-のﾌﾟﾙｱｯﾌﾟに依存します。
USB装置制御(UDCON)ﾚｼﾞｽﾀの低速/全速装置動作(LSM)ﾋﾞｯﾄはD-(低速動作)またはD+(全速動作)ﾃﾞｰﾀ
線上の内部ﾌﾟﾙｱｯﾌﾟ選択を許します。

図21-11. 装置動作速度選択

UCAP

USB電圧調整器

DETACH (UDCON.0)
LSM (UDCON.2)
RPU

RPU
DD+

21.9. ﾒﾓﾘ管理
本制御器は以下のﾒﾓﾘ割り当て管理だけを支援します。
ｴﾝﾄﾞﾎﾟｲﾝﾄの予約は(ｴﾝﾄﾞﾎﾟｲﾝﾄ0から最終ｴﾝﾄﾞﾎﾟｲﾝﾄへ)順に増やす場合にだけ行えます。従ってﾌｧｰﾑｳｪｱはこれと同じ順で設定すべきです。
ｴﾝﾄﾞﾎﾟｲﾝﾄ"ki"の予約はそれ(ｴﾝﾄﾞﾎﾟｲﾝﾄX構成1(UECFG1X)ﾚｼﾞｽﾀ)のｴﾝﾄﾞﾎﾟｲﾝﾄ ﾒﾓﾘ割り当て(ALLOC)ﾋﾞｯﾄが設定(1)される時に行われます。そしてﾊｰﾄﾞｳｪｱがﾒﾓﾘを割り当て、それをｴﾝﾄﾞﾎﾟｲﾝﾄ"ki-1"と"ki+1"間に挿入します。ｴﾝﾄﾞﾎﾟｲﾝﾄ"ki+1"のﾒﾓﾘは上へ移動してそのﾃﾞｰﾀは失われます。"ki+2"とそれよりも上のｴﾝﾄﾞﾎﾟｲﾝﾄのﾒﾓﾘが移動しないことに注意してください。
ｴﾝﾄﾞﾎﾟｲﾝﾄ許可(EPEN)の解除(0)はそれの設定(EPSIZE, EPBK)やALLOCﾋﾞｯﾄのどちらも解除(0)しません。ﾒﾓﾘを開放するためにﾌｧｰﾑｳｪｱはALLOCﾋﾞｯﾄを解除(0)すべきです。するとｴﾝﾄﾞﾎﾟｲﾝﾄ"ki+1"のﾒﾓﾘは自動的に下へ移動します。"ki+2"とそれよりも上のｴﾝ
ﾄﾞﾎﾟｲﾝﾄのﾒﾓﾘが移動しないことに注意してください。
下図は代表例でのUSBﾒﾓﾘの割り当てと認識を図示します。
図21-12. USBﾒﾓﾘの割り当てと認識の流れ

EPEN=1,
ALLOC=1

空きﾒﾓﾘ
5
4
3
2

空きﾒﾓﾘ
5
4
EPEN=0,ALLOC=1
2

空きﾒﾓﾘ
5
(4の内容消失)
4
2

空きﾒﾓﾘ
5
4
3 (元より大容量)

1
0

1
0

1
0

1
0

ｴﾝﾄﾞﾎﾟｲﾝﾄ
活動設定

ｴﾝﾄﾞﾎﾟｲﾝﾄ
禁止

禁止ﾒﾓﾘ開放(ALLOC=0)

ｴﾝﾄﾞﾎﾟｲﾝﾄ
活動再設定

衝突
(重複)

2

最初にｴﾝﾄﾞﾎﾟｲﾝﾄ0～5は昇順で設定されます。各ﾒﾓﾘはDPRAM内に予約されます。
● そしてｴﾝﾄﾞﾎﾟｲﾝﾄ3が禁止(EPEN=0)されますが、ﾒﾓﾘの予約は制御器によって内部的に保持されます。
● ALLOCﾋﾞｯﾄが解除(0)され、ｴﾝﾄﾞﾎﾟｲﾝﾄ4が下へ移動しますが、ｴﾝﾄﾞﾎﾟｲﾝﾄ5は移動しません。
● 最後はﾌｧｰﾑｳｪｱがより大きな容量でｴﾝﾄﾞﾎﾟｲﾝﾄ3の再設定を選ぶ場合です。制御器はｴﾝﾄﾞﾎﾟｲﾝﾄ2の後にﾒﾓﾘを予約し、ｴﾝﾄﾞﾎﾟｲ
ﾝﾄ4を自動的に移動します。ｴﾝﾄﾞﾎﾟｲﾝﾄ5は動かず、ｴﾝﾄﾞﾎﾟｲﾝﾄ4と5の共通の領域を使うことで衝突(重複)が出現します。これらのｴ
ﾝﾄﾞﾎﾟｲﾝﾄのﾃﾞｰﾀは潜在的に失われます。
以下に注意してください。
● ｴﾝﾄﾞﾎﾟｲﾝﾄ0のﾃﾞｰﾀは、より高位のｴﾝﾄﾞﾎﾟｲﾝﾄの活動設定または非活動設定でも決して失われません。このﾃﾞｰﾀはそれが非活性設定にされた場合に失われます。
● 同じ設定での同一ｴﾝﾄﾞﾎﾟｲﾝﾄの非活動設定と再活動設定は、より高位のｴﾝﾄﾞﾎﾟｲﾝﾄの移動を引き起こしません。これらのｴﾝﾄﾞﾎﾟｲ
ﾝﾄに対してﾃﾞｰﾀは保護されます。
● ｴﾝﾄﾞﾎﾟｲﾝﾄX状態0(UESTA0X)ﾚｼﾞｽﾀのｴﾝﾄﾞﾎﾟｲﾝﾄ構成状態(CFGOK)ﾌﾗｸﾞはﾒﾓﾘ割り当てで衝突(重複)した場合でもﾊｰﾄﾞｳｪｱによって設定(1)されます。
●

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

17121.10. ﾊﾟｯﾄﾞ休止
次図はﾊﾟｯﾄﾞの動きを図示します。
● ｱｲﾄﾞﾙ動作でﾊﾟｯﾄﾞは低電力消費動作に置かれます。
● 活動動作でﾊﾟｯﾄﾞは動作します。
休止状態を示すUSB装置割り込み要求(UDINT)ﾚｼﾞｽﾀの休止(Sunspend)割り込み要求(SUSPI)ﾌﾗｸﾞはUSBﾊﾞｽ上で検出されます。このﾌﾗｸﾞは自動的にUSBﾊﾟｯﾄﾞをｱｲﾄﾞﾙにします。非ｱｲﾄﾞﾙ事象の検出はUDINTﾚｼﾞｽﾀのCPU起動復帰割り込み要求(WAKEUPI)ﾌﾗｸﾞを設定(1)し、USBﾊﾟｯﾄﾞを起動復帰します。
図21-13. ﾊﾟｯﾄﾞの動き
更にﾊﾟｯﾄﾞはUSB装置制御(UDCON)ﾚｼﾞｽﾀの分離(DETACH)ﾋﾞｯﾄが設定(1)されている場合にもｱｲ ﾄﾞﾙ動作にして置けます。これはDETACHﾋﾞｯﾄが解除(0)されると、活動動作に復帰します。
ｱｲﾄﾞﾙ動作
USBE=1
図21-14. ﾊﾟｯﾄﾞの状態遷移&DETACH=0
休止検出=USBﾊﾟｯﾄﾞ低電力(ﾊﾟﾜｰﾀﾞｳﾝ)&非休止
USBE=0
ｿﾌﾄｳｪｱによる休止解除
SUSPI
再開=USBﾊﾟｯﾄﾞ起動復帰|DETACH=1
ｿﾌﾄｳｪｱによる再開解除|休止
WAKEUPI
活動動作
活動
低電力(ﾊﾟﾜｰﾀﾞｳﾝ)
活動ﾊﾟｯﾄﾞ状態

21.11. ﾌﾟﾗｸﾞ接続検出
USB接続は以下の構成でVBUSﾊﾟｯﾄﾞによって検出されます。
図21-15. ﾌﾟﾗｸﾞ接続検出入力構成図

ﾊﾟｯﾄﾞ論理回路
VDD
VBus_pulsing
RPU
VBUS

Session_valid
Vbus_valid

論理回路

VBUS
(USBSTA.0)

VBUSTI(USBINT.0)

RPD
VBus_discharge

VBUSﾊﾟｯﾄﾞの制御回路はVBUS電圧ﾚﾍﾞﾙに関する信号を出力します。
● Session_valid信号はVBUSﾊﾟｯﾄﾞ上の電圧が1.4V以上の時にHigh活性です。1.4Vより低いなら、信号は非活性です。
● VBUS状態ﾋﾞｯﾄはSession_valid信号が活性(VBUS>1.4V)の時に設定(1)されます。
● USB割り込み要求(USBINT)ﾚｼﾞｽﾀのVBUS遷移割り込み(VBUSTI)ﾌﾗｸﾞはVBUS状態変化毎に設定(1)されます。
● USB周辺機能はVBUSﾋﾞｯﾄが設定(1)されていない間、ﾊﾞｽへ接続することができません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]172

21.12. USBｿﾌﾄｳｪｱ操作種別
USB動作種別に応じて、ｿﾌﾄｳｪｱは以下の操作のいくつかを実行しなければなりません。
USBｲﾝﾀｰﾌｪｰｽ電源ON● USBﾊﾟｯﾄﾞ電圧調整器電源ON● PLLｲﾝﾀｰﾌｪｰｽ設定● PLL許可● PLL固定化(ﾛｯｸ)検査● USBｲﾝﾀｰﾌｪｰｽ許可● USBｲﾝﾀｰﾌｪｰｽ設定 (USB速度、ｴﾝﾄﾞﾎﾟｲﾝﾄ設定、...)● USB VBUS接続情報待機● USB装置取り付け(接続)USBｲﾝﾀｰﾌｪｰｽ電源OFF● USBｲﾝﾀｰﾌｪｰｽ分離● USBｲﾝﾀｰﾌｪｰｽ禁止● PLL禁止● USBﾊﾟｯﾄﾞ電圧調整器禁止
USBｲﾝﾀｰﾌｪｰｽ休止● 休止ﾋﾞｯﾄ解除(=0)● USBｸﾛｯｸ休止設定● PLL禁止● 休止形態を抜けるための割り込みを確実に許可してください。
● MCUを休止形態へ移行します。
USBｲﾝﾀｰﾌｪｰｽ再開● PLL許可● PLL固定化(ﾛｯｸ)待機● USBｸﾛｯｸ休止解除● 再開情報解除

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

173

21.13. USB一般用ﾚｼﾞｽﾀ
21.13.1. UHWCON - USBﾊｰﾄﾞｳｪｱ制御ﾚｼﾞｽﾀ (USB Hardware Control Register)
ﾋﾞｯﾄ
($D7)
Read/Write
初期値

7

6

5

4

3

2

1

-

-

-

-

-

-

-

R
0

R
0

R
0

R
0

R
0

R
0

R
0

0

UVREGE UHWCON
R/W
0● ﾋﾞｯﾄ7～1 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを変更してはいけません。
● ﾋﾞｯﾄ0 - UVREGE : USBﾊﾟｯﾄﾞ電圧調整器許可 (USB pad regulator Enable)

USBﾊﾟｯﾄﾞ用電圧調整器を許可するには設定(1)してください。USBﾊﾟｯﾄﾞ用電圧調整器を禁止するには解除(0)してください。

21.13.2. USBCON - USB制御ﾚｼﾞｽﾀ (USB Control Register)
ﾋﾞｯﾄ
($D8)
Read/Write
初期値

7

6

USBE

-

R/W
0

R
0

5

4

FRZCLK OTGPADE
R/W
1

R/W
0

3

2

1

-

-

-

R
0

R
0

R
0

0

VBUSTE USBCON
R/W
0● ﾋﾞｯﾄ7 - USBE : USB全体許可 (USB macro Enable Bit)

USB制御器を許可するには設定(1)してください。USBｸﾛｯｸ入力とUSB送受信器を禁止し、USB制御器をﾘｾｯﾄするには解除(0)してください。
● ﾋﾞｯﾄ6 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ5 - FRZCLK : USBｸﾛｯｸ停止 (Freeze USB Clock Bit)

ｸﾛｯｸ入力を禁止(再開検出は未だ活動)するには設定(1)してください。これは電力消費を低減します。ｸﾛｯｸ入力を許可するには解除(0)してください。
● ﾋﾞｯﾄ4 - OTGPADE : OTGﾊﾟｯﾄﾞ許可 (OTG Pad Enable)

OTGﾊﾟｯﾄﾞを許可するには設定(1)してください。OTGﾊﾟｯﾄﾞを禁止するには解除(0)してください。現実のOTGﾊﾟｯﾄﾞはVBUSﾊﾟｯﾄﾞです。
例えUSB全体許可(USBE)=0でも、このﾋﾞｯﾄが設定(1)/解除(0)できることに留意してください、それは例えUSB制御器が禁止でもVBUS検出を許します。USB動作(接続、送信など)を許すには本ﾊﾟｯﾄﾞが許可されなければなりません(訳注:共通性から本行追加)。
● ﾋﾞｯﾄ3～1 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ0 - VBUSTE : VBUS遷移割り込み許可 (VBUS Transition Interrupt Enable Bit)

VBUS遷移割り込み生成を許可するには、このﾋﾞｯﾄを設定(1)してください。VBUS遷移割り込み生成を禁止するには、このﾋﾞｯﾄを解除(0)してください。

21.13.3. USBSTA - USB状態ﾚｼﾞｽﾀ (USB Status Register)
ﾋﾞｯﾄ
($D9)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

-

-

ID

VBUS

R
0

R
0

R
0

R
0

R
0

R
0

R
1

R
0

USBSTA● ﾋﾞｯﾄ7～2 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ1 - ID : UIDﾋﾟﾝ ﾌﾗｸﾞ (UID pin Flag)

このﾋﾞｯﾄは常に1として読め、(UIDﾋﾟﾝの値を示す)AT90USB64/128との共通性が維持されます。
● ﾋﾞｯﾄ0 - VBUS : VBUSﾌﾗｸﾞ (VBus Flag)

このﾋﾞｯﾄからの読み込み値はVBUSﾋﾟﾝの状態を示します。本ﾋﾞｯﾄは装置動作で応用でのUSBﾊﾞｽ接続状態の監視に使えます。より多くの詳細については172頁の「ﾌﾟﾗｸﾞ接続検出」項をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]17421.13.4. USBINT - USB割り込み要求ﾚｼﾞｽﾀ (USB Interrupt Request Register)
ﾋﾞｯﾄ
($DA)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

-

-

-

VBUSTI

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R/W
0

USBINT● ﾋﾞｯﾄ7～1 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ0 - VBUSTI : VBUS遷移割り込み要求ﾌﾗｸﾞ (VBUS Transition Interrupt Flag)

VBUSﾊﾟｯﾄﾞ上で遷移(HighからLow、またはLowからHigh)が検出された時にﾊｰﾄﾞｳｪｱによって設定(1)されます。
これはｿﾌﾄｳｪｱによって解除(0)されるべきです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

175

22. USB装置動作
22.1. 序説
USB装置制御器は全速(Full-speed)と低速(Low-speed)のﾃﾞｰﾀ転送を支援します。既定の制御(Control)ｴﾝﾄﾞﾎﾟｲﾝﾄに加えて別に、制御(Control)、大量(Bulk:ﾊﾞﾙｸ)、割り込み(Interrupt)、等時(Isochronuos:ｱｲｿｸﾛﾉｽ)動作に設定できる6つのｴﾝﾄﾞﾎﾟｲﾝﾄを提供します。
● ｴﾝﾄﾞﾎﾟｲﾝﾄ0: 既定制御ｴﾝﾄﾞﾎﾟｲﾝﾄ、64ﾊﾞｲﾄまでのFIFO容量設定可能● ｴﾝﾄﾞﾎﾟｲﾝﾄ1: 交互動作で256ﾊﾞｲﾄまでのFIFO容量設定可能● ｴﾝﾄﾞﾎﾟｲﾝﾄ2～6 : 交互動作で64ﾊﾞｲﾄまでのFIFO容量設定可能
制御器はｱｲﾄﾞﾙ動作で始まります。この動作ではﾊﾟｯﾄﾞの電力消費が最小に低減されます。

22.2. 電源ONとﾘｾｯﾄ
図22-1. ﾘｾｯﾄ後のUSB装置制御器状態
次の構成図は電源ONでのUSB装置制御器の主な状態を説明します。
装置制御器のﾘｾｯﾄ状態は次のとおりです。
その他● 電力消費を最小とするために全体ｸﾛｯｸが停止されます(USB制御(USBCの状態
ON)ﾚｼﾞｽﾀのUSBｸﾛｯｸ停止(FRZCLK)=1)。
ｱｲﾄﾞﾙ
USBE=0
USBE=0● USB装置制御器の内部状態はﾘｾｯﾄです(全てのﾚｼﾞｽﾀがそれらの既定値
でﾘｾｯﾄされます。USB装置制御(UDCON)ﾚｼﾞｽﾀの分離(DETACH)ﾋﾞｯﾄがUSBE=1
設定(1)されることに注意してください)。
ID=1
ﾘｾｯﾄ
● ｴﾝﾄﾞﾎﾟｲﾝﾄのﾊﾞﾝｸはﾘｾｯﾄされます。
ﾊｰﾄﾞｳｪｱ
ﾘｾｯﾄ● D+とD-のﾌﾟﾙｱｯﾌﾟは非活性(分離(Detach)動作)にされます。
D+とD-のﾌﾟﾙｱｯﾌﾟは分離(DETACH)ﾋﾞｯﾄが解除(0)されると直ぐに活性(有効)にされ、VBUSが現れます。
ﾘｾｯﾄ後の制御器は最小電力消費でのｱｲﾄﾞﾙ状態で、この状態への移行にPLLが動作されている必要はありません。
USB装置制御器はUSB制御(USBCON)ﾚｼﾞｽﾀのUSB全体許可(USBE)ﾋﾞｯﾄの解除(0)よって何時でもﾘｾｯﾄにできます(USBｲﾝﾀｰﾌｪｰｽ禁止)。

22.3. ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄ
ｴﾝﾄﾞﾎﾟｲﾝﾄはｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄ(UERST)ﾚｼﾞｽﾀ内でｴﾝﾄﾞﾎﾟｲﾝﾄに対応するﾋﾞｯﾄ(EPRSTn)の設定(1)によって何時でもﾘｾｯﾄできます。このﾘｾｯﾄは以下を行います。
● そのｴﾝﾄﾞﾎﾟｲﾝﾄの内部状態機構をﾘｾｯﾄ● RxとTxのﾊﾞﾝｸが消去され、それらの内部ﾎﾟｲﾝﾀが復元(初期化)されます。
● ｴﾝﾄﾞﾎﾟｲﾝﾄX割り込み要求(UEINTX)ﾚｼﾞｽﾀ、ｴﾝﾄﾞﾎﾟｲﾝﾄX状態0(UESTA0X)ﾚｼﾞｽﾀ、ｴﾝﾄﾞﾎﾟｲﾝﾄX状態1(UESTA1X)ﾚｼﾞｽﾀはそれらのﾘｾｯﾄ値に復元(初期化)されます。
交互ﾃﾞｰﾀ番号領域は無変化に留まります。
その他のﾚｼﾞｽﾀは無変化に留まります。
ｴﾝﾄﾞﾎﾟｲﾝﾄ設定は活性(有効)に留まり、ｴﾝﾄﾞﾎﾟｲﾝﾄは未だ許可されています。
ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄはCLEAR_FEATURE USB命令への応答としてﾃﾞｰﾀ番号交互命令の解除(ｴﾝﾄﾞﾎﾟｲﾝﾄX制御(UECONX)ﾚｼﾞｽﾀの交互ﾃﾞｰﾀ番号ﾘｾｯﾄ(RSTDT)ﾋﾞｯﾄ)と連携して行えます。

22.4. USB ﾘｾｯﾄ
USB線上でUSBﾘｾｯﾄ(最小2.5µs幅でのSEO状態)が検出されると、制御器によって次の操作が行われます。
● 全てのｴﾝﾄﾞﾎﾟｲﾝﾄが禁止されます。
● 既定制御ｴﾝﾄﾞﾎﾟｲﾝﾄは構成(設定)状態に留まります(より多くの詳細については「ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄ」をご覧ください)。
CPUﾊｰﾄﾞｳｪｱ ﾘｾｯﾄ機能が活性(USB装置制御(UDCON)ﾚｼﾞｽﾀのCPUﾘｾｯﾄ(RSTCPU)ﾋﾞｯﾄが設定(1))にされた場合、USB制御器の禁止を除いてCPUｺｱへﾘｾｯﾄが生成されます(必然的に一般的なUSBﾘｾｯﾄ後で接続状態に留まるのと同じ動きになります)。この機能は装置の信頼性強化に使えます。

22.5. ｴﾝﾄﾞﾎﾟｲﾝﾄ選択
CPUによって何らかの操作が行われる前にｴﾝﾄﾞﾎﾟｲﾝﾄが先に選択されなければなりません。これはCPUによって管理されるｴﾝﾄﾞﾎﾟｲﾝ
ﾄ番号でのｴﾝﾄﾞﾎﾟｲﾝﾄ番号(UENUM)ﾚｼﾞｽﾀのｴﾝﾄﾞﾎﾟｲﾝﾄ番号(EPNUM2～0)ﾋﾞｯﾄ設定によって行われます。
その後にCPUは各種ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾚｼﾞｽﾀとﾃﾞｰﾀへｱｸｾｽすることができます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]176

22.6. ｴﾝﾄﾞﾎﾟｲﾝﾄの活性化(有効設定)
ｴﾝﾄﾞﾎﾟｲﾝﾄはｴﾝﾄﾞﾎﾟｲﾝﾄX制御(UECONX)ﾚｼﾞｽﾀのｴﾝﾄﾞﾎﾟｲﾝﾄ許可(EPEN)ﾋﾞｯﾄが設定(1)されない限り、ﾘｾｯﾄ下に保たれます。
以下の流れはｴﾝﾄﾞﾎﾟｲﾝﾄを活性(有効)にするために尊重されなければなりません。
図22-2. ｴﾝﾄﾞﾎﾟｲﾝﾄ活性(有効)化流れ図
ｴﾝﾄﾞﾎﾟｲﾝﾄ活性(有効)化UENUMﾚｼﾞｽﾀのEPNUM2～0設定

ｴﾝﾄﾞﾎﾟｲﾝﾄ番号選択

UECONXﾚｼﾞｽﾀの
EPEN=1

ｴﾝﾄﾞﾎﾟｲﾝﾄ活動設定

UECFG0Xﾚｼﾞｽﾀの
EPDIR,EPTYPE,...設定

UECFG1Xﾚｼﾞｽﾀの
ALLOC,EPSIZE,EPBK設定UESTA0XﾚｼﾞｽﾀのCFGOK=1 ?
YES
ｴﾝﾄﾞﾎﾟｲﾝﾄ活性(有効)ｴﾝﾄﾞﾎﾟｲﾝﾄ構成設定
・ ｴﾝﾄﾞﾎﾟｲﾝﾄ方向
・ ｴﾝﾄﾞﾎﾟｲﾝﾄ形式
ｴﾝﾄﾞﾎﾟｲﾝﾄ構成設定
・ ｴﾝﾄﾞﾎﾟｲﾝﾄ容量
・ ﾊﾞﾝｸ形式
ﾒﾓﾘの割り当てと認識が急いで作成されます。
正しいｴﾝﾄﾞﾎﾟｲﾝﾄ構成設定を確認
NO
異常

ｴﾝﾄﾞﾎﾟｲﾝﾄが不正に設定(CFGOK=0)されている限り、ﾊｰﾄﾞｳｪｱはﾎｽﾄによって送られたﾊﾟｹｯﾄに応答しません。
構成状況(CFGOK)ﾌﾗｸﾞはｴﾝﾄﾞﾎﾟｲﾝﾄ容量指定がDPRAM容量よりも大きいなら、設定(1)されません。
ｴﾝﾄﾞﾎﾟｲﾝﾄ許可(EPEN)ﾋﾞｯﾄの解除(0)はｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄとして働きます(より多くの詳細については176頁の「ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄ」をご覧ください)。これは次の操作も行います。
● ｴﾝﾄﾞﾎﾟｲﾝﾄの構成設定は保持されます(EPSIZE, EPNK, ALLOC保持)。
● 交互ﾃﾞｰﾀ番号領域をﾘｾｯﾄします。
● ｴﾝﾄﾞﾎﾟｲﾝﾄに関連するDPRAMは未だ予約されています。
ﾒﾓﾘ割り当てと認識についてのより多くの詳細に関しては171頁の「ﾒﾓﾘ管理」をご覧ください。

22.7. ｱﾄﾞﾚｽ設定
USB装置ｱﾄﾞﾚｽはUSB規約に従って設定されます。
● 電源投入後、USB装置はｱﾄﾞﾚｽ0で応答します。
● ﾎｽﾄは設定(SETUP)命令を送ります(SET_ADDRESS(addr))。
● ﾌｧｰﾑｳｪｱはこの要求を扱い、装置ｱﾄﾞﾚｽ(UDADDR)ﾚｼﾞｽﾀのUSB装置ｱﾄﾞﾚｽ(UADD6～0)内にそのｱﾄﾞﾚｽを記録しますが、ｱﾄﾞﾚｽ
許可(ADDEN)ﾋﾞｯﾄは解除(0)を保持してください。
● USB装置ﾌｧｰﾑｳｪｱは0ﾊﾞｲﾄのIN命令を送ります(IN 0 : 0長ﾊﾟｹｯﾄ)。
● その後、ﾌｧｰﾑｳｪｱはADDENﾋﾞｯﾄの設定(1)によってUSB装置ｱﾄﾞﾚｽを許可にできます。制御器によって受け付けられるｱﾄﾞﾚｽは
UADD6～0に格納された1つ(のｱﾄﾞﾚｽ)だけです。
ADDENとUADD6～0ﾋﾞｯﾄは同時に書かれるべきではありません。
UADD6～0ﾋﾞｯﾄは電源投入またはﾘｾｯﾄ後、既定ｱﾄﾞﾚｽ$00を内包します。
ADDENﾋﾞｯﾄは以下の状態でﾊｰﾄﾞｳｪｱによって解除(0)されます。
● 電源投入ﾘｾｯﾄ後● USBﾘｾｯﾄが受信された時● 制御器が禁止された時(USB制御(USBCON)ﾚｼﾞｽﾀのUSB全体許可(USBE)=0)
この(ADDEN)ﾋﾞｯﾄが解除(0)されると、既定装置ｱﾄﾞﾚｽ$00が使われます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]177

22.8. 休止、起動復帰と再開
USB線が非活性で3ms間後、制御器は全速(Full-speed)動作に切り替え、(許可されていれば)休止(Suspend)割り込み(SUSPI)を起動します。そしてﾌｧｰﾑｳｪｱはUSB制御(USBCON)ﾚｼﾞｽﾀのUSBｸﾛｯｸ停止(FRZCLK)ﾋﾞｯﾄを設定(1)できます。
CPUは更により低い電力消費にさせるのにｱｲﾄﾞﾙ動作へ移行することもできます。
休止(Suspend)動作からの回復には2つの方法があります。
● 1つ目はFRZCLKﾋﾞｯﾄを解除(0)することです。これはCPUがｱｲﾄﾞﾙ動作でない場合に可能です。
● 2つ目の方法はCPUがｱｲﾄﾞﾙ動作の場合で、CPU起動復帰割り込み(WAKEUPI)を許可(WAKEUPE=1)することです。そして制御器によって非ｱｲﾄﾞﾙ信号が見つかると直ぐに、WAKEUPI割り込みが起動されます。ﾌｧｰﾑｳｪｱはその後に転送を再開するために
FRZCLKﾋﾞｯﾄを解除(0)すべきです。
休止割り込み(SUSPI)とCPU起動復帰割り込み(WAKEUPI)間に関連はなく、WAKEUPI割り込みはﾃﾞｰﾀ線上の非ｱｲﾄﾞﾙ形態で直ぐに起動されます。従ってWAKEUPI割り込みは例え制御器が休止動作でなくても起き得ます。
WAKEUPI割り込みが起動されるとき、SUSPI割り込みが既に設定(1)されている場合、それはﾊｰﾄﾞｳｪｱによって解除(0)されます。
SUSPI割り込みが起動されるとき、WAKEUPI割り込みが既に設定(1)されている場合、それはﾊｰﾄﾞｳｪｱによって解除(0)されます。

22.9. 分離(切り離し)
USB装置制御(UDCON)ﾚｼﾞｽﾀの分離(DETACH)ﾋﾞｯﾄのﾘｾｯﾄ値は1です。
単にDETACHﾋﾞｯﾄを設定(1)し、そしてｸ解除(0)することによって装置を再列挙(再認識)することが可能です(しかし、ﾌｧｰﾑｳｪｱはms単位での反発除去遅延を考慮しなければなりません)。
●

図22-3. 全速動作での装置分離

UVREF
DETACH=1(UDCON.0)

UVREF
DETACH=0(UDCON.0)

D+

D+

D-

D-

DETACHﾋﾞｯﾄの設定(1)は(選択された全速(Full-speed)または低速(Low-speed)動作に応じて)、D+またはD-ﾊﾟｯﾄﾞ上のﾌﾟﾙｱｯ
ﾌﾟを切断します。その後のDETACHﾋﾞｯﾄの解除(0)がD+または
D-ﾊﾟｯﾄﾞ上のﾌﾟﾙｱｯﾌﾟを接続します。

EN=1

分離(Detach)、
EN=1
その後の取り付け(Attach)

22.10. 遠隔起動復帰
遠隔起動復帰(Remote Wake-up: または上方向再開(Upstream resume))機能は、装置によって自発的に送ることが許された唯一の操作です。とにかく、それを行うため、装置は最初にホストからDEVICE_REMOTE_WAKEUP要求が受信されるべきです。
● 最初にUSB制御器は信号線の休止(Suspend)状態を検知しなければなりません。遠隔起動復帰は休止(Suspend)割り込み(SUSPI)
ﾌﾗｸﾞが設定(1)されている時にだけ送ることができます。
● ﾌｧｰﾑｳｪｱはその後に上方向再開(Upstream resume)列を送るためにUSB装置制御(UDCON)ﾚｼﾞｽﾀの遠隔起動(RMWKUP)ﾋﾞｯﾄを設定(1)できます。
● 制御器が上方向再開(Upstream resume)送信を始めると、(許可されていれば)上方向再開割り込み(UPRSMI)が起動されます。
SUSPIはﾊｰﾄﾞｳｪｱによって解除(0)されます。
● 上方向再開(Upstream resume)の最後でRMWKUPﾋﾞｯﾄがﾊｰﾄﾞｳｪｱによって解除(0)されます。
● 制御器がﾎｽﾄからの良好な再開終了(End Of Resume)を検知すると、(許可されていれば)再開終了割り込み(EORSMI)が起動されます。

22.11. 不能応答(STALL)要求
各ｴﾝﾄﾞﾎﾟｲﾝﾄに対する不能応答(STALL)管理は2ﾋﾞｯﾄ(と1ﾌﾗｸﾞ)を使って行われます。
● STALLRQ (不能応答要求(STALL Request)許可)● STALLRQC (不能応答要求(STALL Request)禁止)● STALLEDI (不能応答送信(STALL sent)割り込み)
次の要求で不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸを送るにはｴﾝﾄﾞﾎﾟｲﾝﾄX制御(UECONX)ﾚｼﾞｽﾀのSTALLRQﾋﾞｯﾄが設定(1)されなければなりません。後続する全ての要求はSTALLRQCﾋﾞｯﾄが設定(1)されるまで不能応答(STALL)でﾊﾝﾄﾞｼｪｰｸされます。
STALLRQCの設定(1)はSTALLRQﾋﾞｯﾄを自動的に解除(0)します。STALLRQCﾋﾞｯﾄもｿﾌﾄｳｪｱによって設定(1)された後、ﾊｰﾄﾞｳｪｱによって直ちに解除(0)されます。従ってﾌｧｰﾑｳｪｱはこのﾋﾞｯﾄを決して設定(1)として読まないでしょう。
不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸが送られる度にｴﾝﾄﾞﾎﾟｲﾝﾄX割り込み要求(UEINTX)ﾚｼﾞｽﾀのSTALLEDIﾌﾗｸﾞがUSB制御器によって設定(1)され、(許可されていれば)ｴﾝﾄﾞﾎﾟｲﾝﾄn(=X)割り込み(EPINTn)が起動されます。
到着ﾊﾟｹｯﾄは破棄されます(OUTﾃﾞｰﾀ受信割り込み要求(RXOUTI)と読み書き可(RWAL)ﾌﾗｸﾞは設定(1)されません)。
ﾎｽﾄはその後に不能応答(STALL)をﾘｾｯﾄするための命令を送信し、ﾌｧｰﾑｳｪｱは直ぐにSTALLRQCﾋﾞｯﾄを設定(1)してｴﾝﾄﾞﾎﾟｲﾝﾄをﾘｾｯﾄしなければなりません。
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]178

22.11.1. 制御ｴﾝﾄﾞﾎﾟｲﾝﾄに対する特別な考慮
SETUP要求は常に肯定応答(ACK)で応答されます。
不能応答(STALL)要求が制御ｴﾝﾄﾞﾎﾟｲﾝﾄで設定され、SETUP要求が起きると、そのSETUP要求はACKで応答されなければならず、
不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸ要求(STALLRQ)ﾋﾞｯﾄと不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸ送信完了割り込み要求(STALLEDI)ﾌﾗｸﾞは自動的にﾘｾｯﾄ(=0)されます(SETUP受信割り込み要求(RXSTPI)=1,送信可割り込み要求(TXINI)=0,不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸ送信完了割
り込み要求(STALLEDI) =0,...)。
この管理は列挙管理処理を簡単にします。命令が未支援または異常を含む場合、ﾌｧｰﾑｳｪｱは不能応答(STALLRQ)ﾋﾞｯﾄを設定(1)して次のSETUP要求を待つ主作業へ戻ることができます。
この機能はGET_DESCRIPTORに対する追加状態送信をし得る第8節検査に適合します。ﾌｧｰﾑｳｪｱは状態受信後、直ちに不能応答
要求(STALLRQ)ﾋﾞｯﾄを設定(1)します。全ての追加状態は以降のSETUP要求まで、自動的に不能応答(STALL)にされます。

22.11.2. 不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸと再試行機構
再試行機構は不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸよりも高い優先順位を持ちます。不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸは不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸ要求(STALLRQ)ﾋﾞｯﾄが設定(1)され、且つ再試行の必要がない場合に送信されます。

22.12. 制御ｴﾝﾄﾞﾎﾟｲﾝﾄ管理
SETUP要求は常に肯定応答(ACK)で応答されます。新規のSETUPﾊﾟｹｯﾄが受信されると、(許可されているならば)SETUP受信割り込
み要求(RXSTPI)が起動されます。OUT受信割り込み要求(RXOUTI)は起動されません。
ｴﾝﾄﾞﾎﾟｲﾝﾄX割り込み要求(UEINTX)ﾚｼﾞｽﾀのFIFO制御(FIFOCON)ﾋﾞｯﾄと読み書き可(RWAL)ﾌﾗｸﾞは制御ｴﾝﾄﾞﾎﾟｲﾝﾄに無関係です。
従ってﾌｧｰﾑｳｪｱはこのｴﾝﾄﾞﾎﾟｲﾝﾄでそれらを決して使ってはなりません。読むとそれらの値は常に0です。
制御ｴﾝﾄﾞﾎﾟｲﾝﾄは以下のﾋﾞｯﾄによって管理されます。
新規SETUPﾊﾟｹｯﾄが受信されると、RXSTPIが設定(1)されます。ﾊﾟｹｯﾄの応答とｴﾝﾄﾞﾎﾟｲﾝﾄ ﾊﾞﾝｸの解除のため、これはﾌｧｰﾑｳｪｱによって解除(0)されるべきです。
● 新規OUTﾃﾞｰﾀが受信されると、RXOUTIが設定(1)されます。ﾊﾟｹｯﾄの応答とｴﾝﾄﾞﾎﾟｲﾝﾄ ﾊﾞﾝｸの解除のため、これはﾌｧｰﾑｳｪｱによって解除(0)されるべきです。
● ﾊﾞﾝｸが新規INﾊﾟｹｯﾄ受け入れ準備可の時に送信可割り込み要求(TXINI)が設定(1)されます。ﾊﾟｹｯﾄの送信とｴﾝﾄﾞﾎﾟｲﾝﾄ ﾊﾞﾝｸの解除のため、これはﾌｧｰﾑｳｪｱによって解除(0)されるべきです。
●

22.12.1. 制御出力
次図は制御出力転送を示します。状態段階中、制御器は最初のIN指示票(ﾄｰｸﾝ)で否定応答(NAK)を送信する必要はありません。
● ﾌｧｰﾑｳｪｱが読まなければならない記述子の正確なﾊﾞｲﾄ数を知っているなら、その後の状態段階が予測でき、次のIN指示子に対して0長ﾊﾟｹｯﾄ(ZLP)を送信できます。
● またはﾊﾞｲﾄを読み、全ﾊﾞｲﾄがﾎｽﾄによって送信されてしまったことを知らせる、NAK(否定応答)INﾊﾟｹｯﾄ受信割り込み要求(NAKIN
I)のﾎﾟｰﾘﾝｸﾞができ、処理単位(Transaction)は既に状態段階です。
図22-4. 制御出力の流れ
設定(Setup)段階
USB信号線SETUP
RXSTPIRXOUTI
TXINI

HW↑

OUT

ﾃﾞｰﾀ(Data)段階
OUT

状態(Status)段階
IN
IN
NAK

↓SW
HW↑

↓SW

HW↑

↓SW
↓SW

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]179

22.12.2. 制御入力
次図は制御入力転送を示します。USB制御器はCPUとﾎｽﾄから同時に起こる書き込み要求を管理しなければなりません。
図22-5. 制御出力の流れ
設定(Setup)段階
USB信号線SETUP
RXSTPIRXOUTI
TXINI
ﾎｽﾄ書き込み許可
CPU書き込み許可

HW↑

ﾃﾞｰﾀ(Data)段階
IN

IN

状態(Status)段階
OUT

OUT
NAK

↓SW

HW↑
↓SW

↓SW

HW↑

↓SW

HW↑

否定応答(NAK)ﾊﾝﾄﾞｼｪｰｸが状態段階命令の最初で常に生成されます。
制御器が状態段階を検知すると、CPUによって書かれた全ﾃﾞｰﾀが消去され、送信可割り込み要求(TXINI)の解除(0)は無効です。
ﾌｧｰﾑｳｪｱは送信が完了か、または受信が完了かを調べます。
OUT再試行は常に肯定応答(ACK)で応答されます。この受信は次のとおりです。
● OUT受信割り込み要求(RXOUTI)ﾌﾗｸﾞが設定(1)されます。 (OUTﾃﾞｰﾀ受信)● 送信可割り込み要求(TXINI)ﾌﾗｸﾞが設定(1)されます。 (ﾃﾞｰﾀ送信、新規ﾃﾞｰﾀ受け入れ可)
ｿﾌﾄｳｪｱでの手順は次のとおりです。
● 送信可状態設定
待機 (送信完了または受信完了)
受信完了ならﾌﾗｸﾞ解除後復帰、送信完了なら継続へ
一旦OUT状態段階が受信されてしまうと、USB制御器はSETUP要求を待ちます。SETUP要求は他の何れの要求よりも高い優先順位を持ち、肯定応答(ACK)で応答しなければなりません。これはSETUPが受信された時にFIFOがﾘｾｯﾄされ、他のどのﾌﾗｸﾞも解除(0)されるべきことを意味します。
警告: ﾊﾞｲﾄ計数器は0長OUTﾊﾟｹｯﾄが受信された時にﾘｾｯﾄされます。ﾌｧｰﾑｳｪｱはこれに充分注意しなければなりません。
●●

22.13. OUTｴﾝﾄﾞﾎﾟｲﾝﾄ管理
OUTﾊﾟｹｯﾄはﾎｽﾄによって送られます。受け取りを知らせる、または空でないﾊﾞﾝｸの全てのﾃﾞｰﾀはCPUによって読むことができます。

22.13.1. 概要
ｴﾝﾄﾞﾎﾟｲﾝﾄが先に構成設定されなければなりません。
現在のﾊﾞﾝｸが一杯になる毎にOUT受信割り込み要求(RXOUTI)とFIFO制御(FIFOCON)ﾋﾞｯﾄが設定(1)されます。これはOUT受信割
り込み許可(RXOUTE)ﾋﾞｯﾄが設定(1)なら、割り込みを起動します。ﾌｧｰﾑｳｪｱはRXOUTIﾋﾞｯﾄの解除(0)によってUSB割り込みに応答できます。ﾌｧｰﾑｳｪｱは現在のﾊﾞﾝｸを開放するためにﾃﾞｰﾀを読み、FIFOCONﾋﾞｯﾄを解除(0)してください。OUTｴﾝﾄﾞﾎﾟｲﾝﾄが2重ﾊﾞﾝｸで構成されている場合、FIFOCONﾋﾞｯﾄの解除(0)は次のﾊﾞﾝｸに切り替えます。そしてRXOUTIとFIFOCONﾋﾞｯﾄは新しいﾊﾞﾝｸの状態に応じてﾊｰﾄﾞｳｪｱよって更新されます。
RXOUTIは常にFIFOCONの解除(0)に先立って解除(0)されるべきです。
読み書き可(RWAL)ﾌﾗｸﾞは常に現在のﾊﾞﾝｸの状態を反映します。このﾌﾗｸﾞはﾌｧｰﾑｳｪｱがﾊﾞﾝｸからﾃﾞｰﾀを読める時に設定(1)され、ﾊﾞﾝｸが空の場合にﾊｰﾄﾞｳｪｱによって解除(0)されます。
図22-6. 1つのOUTﾃﾞｰﾀ ﾊﾞﾝｸ例
OUT

DATA (ﾊﾞﾝｸ0へ)

ACK
HW↑

RXOUTI
FIFOCON

HW↑

NAK

OUT

DATA (ﾊﾞﾝｸ0へ)

↓SW

ACK
HW↑

CPUからのﾊﾞﾝｸ0
ﾃﾞｰﾀ読み出し↓SW↓SW
CPUからのﾊﾞﾝｸ0
ﾃﾞｰﾀ読み出し

図22-7. 2つのOUTﾃﾞｰﾀ ﾊﾞﾝｸ例
OUT
RXOUTI
FIFOCONDATA (ﾊﾞﾝｸ0へ)

ACK

OUT

HW↑

↓SW

HW↑

DATA (ﾊﾞﾝｸ1へ)

ACK
HW↑

CPUからのﾊﾞﾝｸ0
ﾃﾞｰﾀ読み出しSW↓↓SW
CPUからのﾊﾞﾝｸ1
ﾃﾞｰﾀ読み出し

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]180

22.13.2. 詳細内容
ﾃﾞｰﾀは以下の流れに従い、CPUによって読まれます。
● ﾎｽﾄによってﾊﾞﾝｸが満たされると、ｴﾝﾄﾞﾎﾟｲﾝﾄn(=X)割り込み(EPINTn)が起動され、許可(OUT受信割り込み許可(RXOUTE)=1)されていればOUT受信割り込み要求(RXOUTI)ﾌﾗｸﾞが設定(1)されます。CPUはｿﾌﾄｳｪｱ構造に応じてRXOUTIﾌﾗｸﾞまたはFIFO制
御(FIFOCON)ﾋﾞｯﾄのﾎﾟｰﾘﾝｸﾞもできます。
● CPUはRXOUTIの解除(0)によって割り込みに応答します。
● CPUは現在のﾊﾞﾝｸ内のﾊﾞｲﾄ数(N)を読めます(N=BYCT)。
● CPUは現在のﾊﾞﾝｸからﾃﾞｰﾀを読めます(UEDATXのN回読み出し)。
● 全ﾃﾞｰﾀが読まれると、CPUはFIFOCONﾋﾞｯﾄの解除(0)によってﾊﾞﾝｸを開放できます。
● UEDATXのN回読み出し後、読み書き可(RWAL)ﾌﾗｸﾞはﾊｰﾄﾞｳｪｱによって直ちに解除(0)されます。
ｴﾝﾄﾞﾎﾟｲﾝﾄが2つのﾊﾞﾝｸを使う場合、現在のﾊﾞﾝｸがCPUによって読まれる一方、2つ目のﾊﾞﾝｸがﾎｽﾄによって満たされ得ます。その後、CPUがFIFOCONを解除(0)すると、次(2つ目)のﾊﾞﾝｸが既に(読み出し)の準備が整っているかもしれず、(その場合、)RXOUT Iが直ちに設定(1)されます。

22.14. INｴﾝﾄﾞﾎﾟｲﾝﾄ管理
INﾊﾟｹｯﾄはﾎｽﾄからのIN要求でUSB装置制御器によって送られます。受け取りを知らせる、または一杯でないﾊﾞﾝｸの全てのﾃﾞｰﾀはCPUによって書くことができます。

22.14.1. 概要
ｴﾝﾄﾞﾎﾟｲﾝﾄが先に構成設定されなければなりません。
現在のﾊﾞﾝｸが自由になると、ﾊｰﾄﾞｳｪｱによって送信可割り込み要求(TXINI)が設定(1)されます。これは送信可割り込み許可(TXINE)
ﾋﾞｯﾄが設定(1)なら、割り込みを起動します。FIFO制御(FIFOCON)ﾋﾞｯﾄが同時に設定(1)されます。CPUはFIFO内にﾃﾞｰﾀを書き、ﾃﾞｰ
ﾀの送信をUSB制御器に許すためにFIFOCONﾋﾞｯﾄを解除(0)してください。INｴﾝﾄﾞﾎﾟｲﾝﾄが2重ﾊﾞﾝｸで構成されている場合、これは次のﾊﾞﾝｸへの切り替えも行います。TXINIとFIFOCONﾋﾞｯﾄは次のﾊﾞﾝｸの状態に関してﾊｰﾄﾞｳｪｱよって更新されます。
TXINIは常にFIFOCONの解除(0)に先立って解除(0)されるべきです。
読み書き可(RWAL)ﾌﾗｸﾞは常に現在のﾊﾞﾝｸの状態を反映します。このﾋﾞｯﾄはﾌｧｰﾑｳｪｱがﾊﾞﾝｸへﾃﾞｰﾀを書ける時に設定(1)され、ﾊﾞﾝｸが一杯の場合にﾊｰﾄﾞｳｪｱによって解除(0)されます。
図22-8. 1つのINﾃﾞｰﾀ ﾊﾞﾝｸ例
NAK
TXINI
FIFOCON

HW↑
HW↑

IN

DATA (ﾊﾞﾝｸ0から)

↓SW

ACK
HW↑

↓SW

CPUからのﾊﾞﾝｸ0
ﾃﾞｰﾀ書き込み

DA

IN
↓SW

HW↑

CPUからのﾊﾞﾝｸ0
ﾃﾞｰﾀ書き込み

↓SW

ACK

IN

HW↑

↓SW

HW↑

CPUからのﾊﾞﾝｸ0 SW↓
ﾃﾞｰﾀ書き込み

HW↑

図22-9. 2つのINﾃﾞｰﾀ ﾊﾞﾝｸ例
ACK
TXINI
FIFOCON

IN
HW↑

HW↑

↓SW

HW↑

CPUからのﾊﾞﾝｸ0 SW↓
ﾃﾞｰﾀ書き込み

DATA (ﾊﾞﾝｸ0から)↓SW

CPUからのﾊﾞﾝｸ1 SW↓ HW↑
ﾃﾞｰﾀ書き込み

DATA (ﾊﾞﾝｸ1から)

ACK

22.14.2. 詳細内容
ﾃﾞｰﾀは以下の流れに従い、CPUによって書かれます。
● ﾊﾞﾝｸが空の時にｴﾝﾄﾞﾎﾟｲﾝﾄn(=X)割り込み(EPINTn)が起動され、許可(送信可割り込み許可(TXINE)=1)されていれば送信可割り込み要求(TXINI)が設定(1)されます。CPUはｿﾌﾄｳｪｱ構造の選択に応じてTXINIまたはFIFO制御(FIFOCON)のﾎﾟｰﾘﾝｸﾞもできます。
● CPUはTXINIの解除(0)によって割り込みに応答します。
● CPUは現在のﾊﾞﾝｸ内にﾃﾞｰﾀを書けます(UEDATXの書き込み)。
● 全ﾃﾞｰﾀが書かれると、CPUはFIFOCONの解除(0)によってﾊﾞﾝｸを開放できます。
● UEDATXのN回書き込み後、読み書き可(RWAL)ﾌﾗｸﾞはﾊｰﾄﾞｳｪｱによって直ちに解除(0)されます。
ｴﾝﾄﾞﾎﾟｲﾝﾄが2つのﾊﾞﾝｸを使う場合、現在のﾊﾞﾝｸがCPUによって書かれる一方、2つ目のﾊﾞﾝｸがﾎｽﾄによって読まれ得ます。その後、
CPUがFIFOCONを解除(0)すると、次(2つ目)のﾊﾞﾝｸが既に準備が整っている(空)かもしれず、(その場合、)TXINIが直ちに設定(1)されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]18122.14.2.1. 失敗中止(Abort)
いくつかの状態でﾎｽﾄによって失敗中止(Abort)段階が生成され得ます。
● 制御転送でIN段階中に0長ﾃﾞｰﾀOUTﾊﾟｹｯﾄが受信された場合● 等時(Isochronous)転送に於いてINｴﾝﾄﾞﾎﾟｲﾝﾄでのIN段階中にOUTｴﾝﾄﾞﾎﾟｲﾝﾄでの0長ﾃﾞｰﾀOUTﾊﾟｹｯﾄが受信された場合● その他 ...
ﾊﾞﾝｸ消去(KILLBK)ﾋﾞｯﾄは最後に書かれたﾊﾞﾝｸを消す(無効にする)のに使われます。この失敗中止を管理する最良の方法は次の操作を実行することです。
図22-10. 失敗中止の流れ図
ｴﾝﾄﾞﾎﾟｲﾝﾄ失敗中止(Abort)
UEIENXﾚｼﾞｽﾀのTXINE=0

UESTA0X
ﾚｼﾞｽﾀのNBUSYBK1,0
=00 ?
YES
ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄ

TXINI割り込み禁止

失敗中止(Abort)は何も送ってはならないことを意味し、どのﾊﾞﾝｸも動作中でないという事実に基づきます。

NO

UEINTXﾚｼﾞｽﾀのKILLBK=1YESUEINTXﾚｼﾞｽﾀのKILLBK=1 ?

最後に書かれたﾊﾞﾝｸを消去(無効化)NO

無効化処置完了待機

失敗中止(Abort)実行終了

22.15. 等時(Isochronous)動作22.15.1. ｱﾝﾀﾞｰﾌﾛｰ(Underflow)
ｱﾝﾀﾞｰﾌﾛｰはIN段階中にﾎｽﾄが空のﾊﾞﾝｸを読もうと試みる場合に起き得ます。この場合、ｱﾝﾀﾞｰﾌﾛｰ異常割り込み要求(UNDERFI)が起動されます。
ｱﾝﾀﾞｰﾌﾛｰはOUT段階中にﾊﾞﾝｸが既に一杯であるのにﾎｽﾄがﾊﾟｹｯﾄを送る場合に起き得ます。代表的にはCPUが充分速くない場合です。そのﾊﾟｹｯﾄは失われます。
ﾊﾞﾝｸがﾃﾞｰﾀを与える準備ができている場合(OUT受信割り込み要求(RXOUTI)=1または読み書き可(RWAL)=1)でだけCPUが読むのが当然なので、CPU側でOUT段階中にｱﾝﾀﾞｰﾌﾛｰ異常になることは不可能です。

22.15.2. CRC異常
CRC異常はOUT段階中にUSB制御器が不正な受信ﾊﾟｹｯﾄを検出した場合に起き得ます。この場合、不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸ送
信完了割り込み要求(STALLEDI)が起動されます。これはOUT受信割り込み要求(RXOUTI)の起動を妨げません。

22.16. ｵｰﾊﾞｰﾌﾛｰ
制御(Control)、等時(Isochronous)、大量(Bulk)または割り込み(Interrupt)ｴﾝﾄﾞﾎﾟｲﾝﾄでのｵｰﾊﾞｰﾌﾛｰは、OUT段階中にﾎｽﾄがﾊﾟｹｯﾄに対して小さすぎるﾊﾞﾝｸに書くことを試みる場合に起き得ます。この場合、(許可なら)ｵｰﾊﾞｰﾌﾛｰ異常割り込み要求(OVERFI)が起動されます。そのﾊﾟｹｯﾄは応答され、(許可なら)OUT受信割り込み要求(RXOUTI)が起動されます。ﾊﾞﾝｸはﾊﾟｹｯﾄの先頭からのﾊﾞｲﾄで満たされます。
ﾊﾞﾝｸがﾃﾞｰﾀ ｱｸｾｽの準備ができている場合(送信可(TXINI)=1または読み書き可(RWAL)=1)でだけCPUが書くのが当然なので、CPU側でIN段階中にｵｰﾊﾞｰﾌﾛｰ異常になることは不可能です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]182

22.17. 装置割り込み
図22-11.は全割り込み元を示します。
割り込みは割り込み処理(即ちこれらの発生は通常処理の一部です)と例外(異常)の2種類です。
通常処理中割り込みは以下の時に生成されます。
● VBUS接続検出(挿抜) (VBUSTI)● 上方向再開(Upstream resume) (UPRSMI)● 再開終了 (EORSMI)● 起動復帰 (WAKEUPI)● ﾘｾｯﾄ終了(速度初期化) (EORSTI)● ﾌﾚｰﾑ開始 (SOFI, ﾌﾚｰﾑ番号CRC異常(FNCERR)ﾌﾗｸﾞ=0の場合)● 不活性の3ms後の休止(Suspend)検出 (SUSPI)
例外割り込みは以下の時に生成されます。
● ﾌﾚｰﾑ開始(SOF)のﾌﾚｰﾑ番号でのCRC異常 (SOFI,FNCERR=1の場合)

図22-11. USB装置制御器割り込み元

UPRSMI (UDINT.6)
UPRSME (UDIEN.6)
EORSMI (UDINT.5)
EORSME (UDIEN.5)
WAKEUPI (UDINT.4)
WAKEUPE (UDIEN.4)
EORSTI (UDINT.3)
EORSTE (UDIEN.3)
SOFI (UDINT.2)
SOFE (UDIEN.2)
SUSPI (UDINT.0)
SUSPE (UDIEN.0)

USB装置
割り込み

非同期割り込み元(ﾊﾟﾜｰﾀﾞｳﾝ動作
からの起動復帰をCPUに許します。)

図22-12. USBｴﾝﾄﾞﾎﾟｲﾝﾄ割り込みﾍﾞｸﾀ割り込み元

OVERFI (UESTA0X.6)
UNDERFI (UESTA0X.5)
FLERRE (UEIENX.7)
NAKINI (UEINTX.6)
NAKINE (UEIENX.6)
NAKOUTI (UEINTX.4)
NAKOUTE (UEIENX.4)
RXSTPI (UEINTX.3)
RXSTPE (UEIENX.3)
RXOUTI (UEINTX.2)
RXOUTE (UEIENX.2)
STALLEDI (UEINTX.1)
STALLEDE (UEIENX.1)
TXINI (UEINTX.0)
TXINE (UEIENX.0)

ｴﾝﾄﾞﾎﾟｲﾝﾄ6
ｴﾝﾄﾞﾎﾟｲﾝﾄ5
ｴﾝﾄﾞﾎﾟｲﾝﾄ4
ｴﾝﾄﾞﾎﾟｲﾝﾄ3
ｴﾝﾄﾞﾎﾟｲﾝﾄ2
ｴﾝﾄﾞﾎﾟｲﾝﾄ1
ｴﾝﾄﾞﾎﾟｲﾝﾄ0

ｴﾝﾄﾞﾎﾟｲﾝﾄ
割り込み
EPINT
(UEINT.n)

通常処理中割り込みは以下の時に生成されます。
● INﾃﾞｰﾀ受け入れ可 (EPINTn, TXINI=1)● OUTﾃﾞｰﾀ受信 (EPINTn, RXOUTI=1)● 設定(SETUP)受信 (EPINTn, RXSTPI=1)
例外割り込みは以下の時に生成されます。
● 不能ﾊﾟｹｯﾄ (EPINTn, STALLEDI=1)● 等時(Isochronous)動作のOUTでのCRC異常 (EPINTn, OVERFI=1)● 等時動作でのｵｰﾊﾞｰﾌﾛｰ (EPINTn, OVERFI=1)● 等時動作でのｱﾝﾀﾞｰﾌﾛｰ (EPINTn, UNDERFI=1)● INでの否定応答(NAK) (EPINTn, NAKINI=1)● OUTでの否定応答(NAK) (EPINTn, NAKOUTI=1)
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]183

22.18. USB装置一般用ﾚｼﾞｽﾀ22.18.1. UDCON - USB装置制御ﾚｼﾞｽﾀ (USB Device Control Register)
ﾋﾞｯﾄ
($E0)
Read/Write
初期値

7

6

5

4

3

2

-

-

-

-

RSTCPU

LSM

R
0

R
0

R
0

R
0

R/W
0

R/W
0

1

0

RMWKUP DETACH UDCON
R/W
0

R/W
1

● ﾋﾞｯﾄ7～4 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ3 - RSTCPU : CPUﾘｾｯﾄ (USB Reset CPU Bit)

(USB制御器の禁止と接続状態を除いて)USBﾘｾｯﾄ終了検出でCPUをﾘｾｯﾄするには、ﾌｧｰﾑｳｪｱによってこのﾋﾞｯﾄを設定(1)してください。このﾋﾞｯﾄはUSB制御器が禁止される時にﾘｾｯﾄ(0)されますが、ﾘｾｯﾄ終了(End Of Reset)によって生成されたCPUﾘｾｯﾄによって影響を及ぼされません(許可(1)に留まります)。
● ﾋﾞｯﾄ2 - LSM : 低速/全速装置動作選択 (USB Device Low Speed Mode Selection)

このﾋﾞｯﾄはUSBの低速(Low-speed)または全速(Full-speed)動作選択を許します。
全速動作(取り付け(DETACHﾋﾞｯﾄ=0)とでD+内部ﾌﾟﾙｱｯﾌﾟ活性(有効))を選択するには解除(0)してください。低速動作(取り付け(DET
ACHﾋﾞｯﾄ=0)とでD-内部ﾌﾟﾙｱｯﾌﾟ活性(有効))を選択するには設定(1)してください。(訳注:原書本項のﾎｽﾄ動作関係記述削除)● ﾋﾞｯﾄ1 - RMWKUP : 遠隔起動復帰 (Remote Waku-up Bit)

遠隔起動復帰に関してﾎｽﾄへ上方向再開(Upstream-resume)を送信するには設定(1)してください(休止割り込み要求(SUSPI)ﾌﾗｸﾞが設定(1)でなければなりません)。
信号通信完了時、ﾊｰﾄﾞｳｪｱによって解除(0)されます。ｿﾌﾄｳｪｱでの解除(0)は無効です。より多くの詳細については178頁の「遠隔起動復帰」をご覧ください。
● ﾋﾞｯﾄ0 - DETACH : 分離 (Detach Bit)

装置を物理的に分離(D+またはD-上の内部ﾌﾟﾙｱｯﾌﾟ切断)するには設定(1)してください。
装置を再接続するには解除(0)してください。より多くの詳細については178頁の「分離(切り離し)」をご覧ください。

22.18.2. UDINT - USB装置割り込み要求ﾚｼﾞｽﾀ (USB Device Interrupt Register)
ﾋﾞｯﾄ
($E1)
Read/Write
初期値

7

6

-

UPRSMI

R
0

R/W
0

5

4

3

EORSMI WAKEUPI EORSTI
R/W
0

R/W
0

R/W
0

2

1

0

SOFI

-

SUSPI

R/W
0

R
0

R/W
0

UDINT

● ﾋﾞｯﾄ7 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ6 - UPRSMI : 上方向再開割り込み要求ﾌﾗｸﾞ (Upstream Resume Interrupt Flag)

USB制御器が上方向再開(Upstream Resume)と呼ばれる再開信号を送る時にﾊｰﾄﾞｳｪｱによって設定(1)されます。これは上方向再開
割り込み許可(UPRSME)が設定(1)されているなら、USB割り込みを起動します。
ｿﾌﾄｳｪｱで解除(0)されるべきです(その前にUSBｸﾛｯｸ入力が許可されていなければなりません)。ｿﾌﾄｳｪｱによる設定(1)は無効です。
● ﾋﾞｯﾄ5 - EORSMI : 再開終了割り込み要求ﾌﾗｸﾞ (End Of Resume Interrupt Flag)

USB制御器がﾎｽﾄによって開始された良好な再開終了(End Of Resume)を検知すると、ﾊｰﾄﾞｳｪｱによって設定(1)されます。これは再開終了割り込み許可(EORSME)が設定(1)されているなら、USB割り込みを起動します。
ｿﾌﾄｳｪｱによって解除(0)されるべきでしょう。ｿﾌﾄｳｪｱによる設定(1)は無効です。
● ﾋﾞｯﾄ4 - WAKEUPI : CPU起動復帰割り込み要求ﾌﾗｸﾞ (Wake-up CPU Interrupt Flag)

USB制御器が信号線から(上方向再開(Upstream resume)でない)非ｱｲﾄﾞﾙ信号濾出によって再活性化されると、ﾊｰﾄﾞｳｪｱによって設定(1)されます。これはCPU起動復帰割り込み許可(WAKEUPE)が設定(1)されているなら、USB割り込みを起動します。
ｿﾌﾄｳｪｱで解除(0)されるべきです(その前にUSBｸﾛｯｸ入力が許可されていなければなりません)。ｿﾌﾄｳｪｱによる設定(1)は無効です。
より多くの詳細については178頁の「休止、起動復帰と再開」をご覧ください。
● ﾋﾞｯﾄ3 - EORSTI : ﾘｾｯﾄ終了割り込み要求ﾌﾗｸﾞ (End Of Reset Interrupt Flag)

ﾘｾｯﾄ終了(End Of Reset)がUSB制御器によって検出されると、ﾊｰﾄﾞｳｪｱによって設定(1)されます。これはﾘｾｯﾄ終了割り込み許可(EORSTE)が設定(1)されているなら、USB割り込みを起動します。
ｿﾌﾄｳｪｱによって解除(0)されるべきでしょう。ｿﾌﾄｳｪｱによる設定(1)は無効です。
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

184

● ﾋﾞｯﾄ2 - SOFI : ﾌﾚｰﾑ開始割り込み要求ﾌﾗｸﾞ (Start Of Frame Interrupt Flag)

ﾌﾚｰﾑ開始(SOF)PIDが(毎1msで)検知されると、ﾊｰﾄﾞｳｪｱによって設定(1)されます。これはﾌﾚｰﾑ開始割り込み許可(SOFE)が設定(1)されているなら、USB割り込みを起動します。
● ﾋﾞｯﾄ1 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ0 - SUSPI : 休止割り込み要求ﾌﾗｸﾞ (Suspend Interrupt Flag)

USB休止(Suspend) (3ﾌﾚｰﾑ期間のﾊﾞｽ ｱｲﾄﾞﾙ、3msのJ状態)が検出されると、ﾊｰﾄﾞｳｪｱによって設定(1)されます。これは休止割り込み
許可(SUSPE)が設定(1)されているなら、USB割り込みを起動します。
ｿﾌﾄｳｪｱによって解除(0)されるべきでしょう。ｿﾌﾄｳｪｱによる設定(1)は無効です。
より多くの詳細については178頁の「休止、起動復帰と再開」をご覧ください。
これらの割り込み要求ﾌﾗｸﾞは例え対応する割り込み許可ﾋﾞｯﾄが設定(1)されていなくても設定(1)されます。

22.18.3. UDIEN - USB装置割り込み許可ﾚｼﾞｽﾀ (USB Device Interrupt Enable Register)
ﾋﾞｯﾄ
($E2)
Read/Write
初期値

7

-

6

5

4

3

UPRSME EORSME WAKEUPE EORSTE

R
0

R/W
0

R/W
0

R/W
0

R/W
0

2

1

0

SOFE

-

SUSPE

R/W
0

R
0

R/W
0

UDIEN

● ﾋﾞｯﾄ7 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ6 - UPRSME : 上方向再開割り込み許可 (Upstream Resume Enable Bit)

上方向再開(Upstream Resume)割り込み(UPRSMI)を許可するには設定(1)してください。UPRSMIを禁止するには解除(0)してください。
● ﾋﾞｯﾄ5 - EORSME : 再開終了割り込み許可 (End Of Resume Enable Bit)

再開終了(End Of Resume)割り込み(EORSMI)を許可するには設定(1)してください。EORSMIを禁止するには解除(0)してください。
● ﾋﾞｯﾄ4 - WAKEUPE : CPU起動復帰割り込み許可 (Wake-up CPU Enable Bit)

CPU起動復帰割り込み(WAKEUPI)を許可するには設定(1)してください。WAKEUPIを禁止するには解除(0)してください。
● ﾋﾞｯﾄ3 - EORSTE : ﾘｾｯﾄ終了割り込み許可 (End Of Reset Enable Bit)

ﾘｾｯﾄ終了(End Of Reset)割り込み(EORSTI)を許可するには設定(1)してください。EORSTIを禁止するには解除(0)してください。
● ﾋﾞｯﾄ2 - SOFE : ﾌﾚｰﾑ開始割り込み許可 (Start Of Frame Enable Bit)

ﾌﾚｰﾑ開始割り込み(SOFI)を許可するには設定(1)してください。SOFIを禁止するには解除(0)してください。
● ﾋﾞｯﾄ1 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ0 - SUSPE : 休止割り込み許可 (Suspend Interrupt Enable Bit)

USB休止(Suspend)割り込み(SUSPI)を許可するには設定(1)してください。SUSPIを禁止するには解除(0)してください。

22.18.4. UDADDR - USB装置ｱﾄﾞﾚｽ ﾚｼﾞｽﾀ (USB Device Address Register)
ﾋﾞｯﾄ
($E3)
Read/Write
初期値

7

6

5

4

3

2

1

0

ADDEN

UADD6

UADD5

UADD4

UADD3

UADD2

UADD1

UADD0

W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

UDADDR● ﾋﾞｯﾄ7 - ADDEN : ｱﾄﾞﾚｽ許可 (Address Enable Bit)

UADD6～0を活性(有効)にするには設定(1)してください。
このﾋﾞｯﾄはﾊｰﾄﾞｳｪｱによって解除(0)されます。ｿﾌﾄｳｪｱによる解除(0)は無効です。
より多くの詳細については177頁の「ｱﾄﾞﾚｽ設定」をご覧ください。
● ﾋﾞｯﾄ6～0 - UADD6～0 : USB装置ｱﾄﾞﾚｽ (USB Address Bits)

装置ｱﾄﾞﾚｽを指定するためにｿﾌﾄｳｪｱで設定してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]185

22.18.5. UDFNUMH, UDFNUML (UDFNUM) - USB装置ﾌﾚｰﾑ番号ﾚｼﾞｽﾀ (USB Device Frame Number Register)
ﾋﾞｯﾄ
($E5)
Read/Write
初期値
ﾋﾞｯﾄ
($E4)
Read/Write
初期値

15

14

13

12

11

10

9

8

-

-

-

-

-

FNUM10

FNUM9

FNUM8

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

7

6

5

4

3

2

1

0

FNUM7

FNUM6

FNUM5

FNUM4

FNUM3

FNUM2

FNUM1

FNUM0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

UDFNUMHUDFNUML● ﾋﾞｯﾄ15～11 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ10～0 - FNUM10～0 : ﾌﾚｰﾑ番号 (Frame Number Flags)

ﾊｰﾄﾞｳｪｱによって設定されます。これらは11ﾋﾞｯﾄのﾌﾚｰﾑ番号情報です。これらは最後に受信したﾌﾚｰﾑ開始(SOF)ﾊﾟｹｯﾄで供給されます。FNUM10～0は不正なSOFが受信された場合も更新されます。
(訳注) UDFNUMHとUDFNUMLは原書での個別表記を統一表記に纏めました。

22.18.6. UDMFN - USB装置ﾌﾚｰﾑ番号状態ﾚｼﾞｽﾀ (USB Device Maintained Frame Number Register)
ﾋﾞｯﾄ
($E6)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

FNCERR

-

-

-

-

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

UDMFN

● ﾋﾞｯﾄ7～5 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ4 - FNCERR : ﾌﾚｰﾑ番号CRC異常ﾌﾗｸﾞ (Frame Number CRC Error Flag)

ﾌﾚｰﾑ開始(SOF)ﾊﾟｹｯﾄで不正なﾌﾚｰﾑ番号が受信されると、ﾊｰﾄﾞｳｪｱによって設定(1)されます。
このﾋﾞｯﾄとﾌﾚｰﾑ開始割り込み要求(SOFI)は同時に更新されます。
● ﾋﾞｯﾄ3～0 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。

22.19. USB装置ｴﾝﾄﾞﾎﾟｲﾝﾄ用ﾚｼﾞｽﾀ22.19.1. UENUM - ｴﾝﾄﾞﾎﾟｲﾝﾄ番号ﾚｼﾞｽﾀ (USB Endpoint Number Register)
ﾋﾞｯﾄ
($E9)
Read/Write
初期値

7

6

5

4

3

-

-

-

-

-

R
0

R
0

R
0

R
0

R
0

2

1

0

EPNUM2 EPNUM1 EPNUM0 UENUM
R/W
0

R/W
0

R/W
0

● ﾋﾞｯﾄ7～3 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ2～0 - EPNUM2～0 : ｴﾝﾄﾞﾎﾟｲﾝﾄ番号 (Endpoint Number Bits)

CPUによってｱｸｾｽされるべきｴﾝﾄﾞﾎﾟｲﾝﾄの番号を選択するためにｿﾌﾄｳｪｱで設定してください。Xで終わるUSB装置ﾚｼﾞｽﾀのXがこの番号に対応します(訳注:共通性から本行追加)。より多くの詳細については176頁の「ｴﾝﾄﾞﾎﾟｲﾝﾄ選択」項をご覧ください。
EPNUM2～0=111は許されません。

22.19.2. UERST - ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄ ﾚｼﾞｽﾀ (USB Endpoint Reset Register)
ﾋﾞｯﾄ
($EA)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

EPRST6EPRST5EPRST4EPRST3EPRST2EPRST1EPRST0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

UERST

● ﾋﾞｯﾄ7 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]186

● ﾋﾞｯﾄ6～0 - EPRST6～EPRST0 : ｴﾝﾄﾞﾎﾟｲﾝﾄFIFOﾘｾｯﾄ (Endpoint FIFO Reset Bits)

ﾊｰﾄﾞｳｪｱ ﾘｾｯﾄまたはUSBﾊﾞｽ ﾘｾｯﾄが受信された時に選択したｴﾝﾄﾞﾎﾟｲﾝﾄFIFOをﾘｾｯﾄするために、他のどの操作にも先立って設定(1)してください。より多くの情報については176頁の「ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄ」項をご覧ください。
ﾘｾｯﾄ動作を完了するためにｿﾌﾄｳｪｱで解除(0)された後にｴﾝﾄﾞﾎﾟｲﾝﾄの使用を始めてください。

22.19.3. UECONX - ｴﾝﾄﾞﾎﾟｲﾝﾄX制御ﾚｼﾞｽﾀ (USB Endpoint X Control Register)
ﾋﾞｯﾄ
($EB)
Read/Write
初期値

7

6

-

-

R
0

R
0

5

4

3

STALLRQ STALLRQC RSTDT
W
0

W
0

W
0

2

1

0

-

-

EPEN

R
0

R
0

R/W
0

UECONX● ﾋﾞｯﾄ7,6 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ5 - STALLRQ : 不能応答ﾊﾝﾄﾞｼｪｰｸ要求 (STALL Request Handshake Bit)

次のﾊﾝﾄﾞｼｪｰｸに対してﾎｽﾄへ不能応答(STALL)を要求するには設定(1)してください。
次の(新規)SETUPが受信されると、ﾊｰﾄﾞｳｪｱによって解除(0)されます。ｿﾌﾄｳｪｱによる解除(0)は無効です。
より多くの詳細につては179頁の「不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸと再試行機構」項をご覧ください。
● ﾋﾞｯﾄ4 - STALLRQC : 不能応答ﾊﾝﾄﾞｼｪｰｸ解除 (STALL Request Clear Handshake Bit)

不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸ機構を禁止するには設定(1)してください。
設定(1)後、ﾊｰﾄﾞｳｪｱによって直ちに解除(0)されます。ｿﾌﾄｳｪｱによる解除(0)は無効です。
より多くの詳細につては179頁の「不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸと再試行機構」項をご覧ください。
● ﾋﾞｯﾄ3 - RSTDT : 交互ﾃﾞｰﾀ番号ﾘｾｯﾄ (Reset Data Toggle Bit)

交互ﾃﾞｰﾀ番号処理を自動的に解除するには設定(1)してください。
OUTｴﾝﾄﾞﾎﾟｲﾝﾄに対して次に受信したﾊﾟｹｯﾄは交互ﾃﾞｰﾀ番号=0でしょう。
INｴﾝﾄﾞﾎﾟｲﾝﾄに対して次に送るべきﾊﾟｹｯﾄは交互ﾃﾞｰﾀ番号=0でしょう。
このﾋﾞｯﾄはﾊｰﾄﾞｳｪｱによって即時に解除(0)されます。ﾌｧｰﾑｳｪｱはこのﾋﾞｯﾄが解除(0)されるのを待つ必要はありません。ｿﾌﾄｳｪｱによる解除(0)は無効です。
● ﾋﾞｯﾄ2,1 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ0 - EPEN : ｴﾝﾄﾞﾎﾟｲﾝﾄ許可 (Endpoint Enable Bit)

装置構成に従ってｴﾝﾄﾞﾎﾟｲﾝﾄを許可するには設定(1)してください。ｴﾝﾄﾞﾎﾟｲﾝﾄ0は装置構成設定に関係するので、ﾊｰﾄﾞｳｪｱまたは
USBﾘｾｯﾄ後、常に許可されるべきです。
ｴﾝﾄﾞﾎﾟｲﾝﾄを禁止するには、このﾋﾞｯﾄを解除(0)してください。より多くの詳細については177頁の「ｴﾝﾄﾞﾎﾟｲﾝﾄの活性化(有効設定)」項をご覧ください。

22.19.4. UECFG0X - ｴﾝﾄﾞﾎﾟｲﾝﾄX構成0ﾚｼﾞｽﾀ (USB Endpoint X Configuration 0 Register)
ﾋﾞｯﾄ
($EC)
Read/Write
初期値

7

6

EPTYPE1 EPTYPE0
R/W
0

R/W
0

5

4

3

2

1

0

-

-

-

-

-

EPDIR

R
0

R
0

R
0

R
0

R
0

R/W
0

UECFG0X● ﾋﾞｯﾄ7,6 - EPTYPE1,0 : ｴﾝﾄﾞﾎﾟｲﾝﾄ形式 (Endpoint Type Bits)

ｴﾝﾄﾞﾎﾟｲﾝﾄ構成設定に従ってこのﾋﾞｯﾄを設定してください。
00=制御(Control)、01=等時(Isochronus)、10=大量(Bulk)、11=割り込み(Interrupt)● ﾋﾞｯﾄ5～1 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ0 - EPDIR : ｴﾝﾄﾞﾎﾟｲﾝﾄ方向 (Endpoint Direction Bit)

大量(Bulk)、割り込み(Interrupt)、等時(Isochronuos)ｴﾝﾄﾞﾎﾟｲﾝﾄに対してIN方向を設定するには設定(1)してください。
大量、割り込み、等時、制御(Control)ｴﾝﾄﾞﾎﾟｲﾝﾄに対してOUT方向を設定するには解除(0)してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]187

22.19.5. UECFG1X - ｴﾝﾄﾞﾎﾟｲﾝﾄX構成1ﾚｼﾞｽﾀ (USB Endpoint X Configuration 1 Register)
ﾋﾞｯﾄ
($ED)
Read/Write
初期値

7

-

6

5

4

EPSIZE2 EPSIZE1 EPSIZE0

R
0

R/W
0

R/W
0

3

2

1

0

EPBK1

EPBK0

ALLOC

-

R/W
0

R/W
0

R/W
0

R
0

R/W
0

UECFG1X● ﾋﾞｯﾄ7 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ6～4 - EPSIZE2～0 : ｴﾝﾄﾞﾎﾟｲﾝﾄ容量 (Endpoint Size Bits)

ｴﾝﾄﾞﾎﾟｲﾝﾄ容量に従ってこのﾋﾞｯﾄを設定してください。
000=8ﾊﾞｲﾄ、001=16ﾊﾞｲﾄ、010=32ﾊﾞｲﾄ、011=64ﾊﾞｲﾄ、100=128ﾊﾞｲﾄ、101=256ﾊﾞｲﾄ、110=512ﾊﾞｲﾄ、111=予約(使用禁止)● ﾋﾞｯﾄ3,2 - EPBK1,0 : ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾊﾞﾝｸ形式 (Endpoint Bank Bits)

ｴﾝﾄﾞﾎﾟｲﾝﾄ容量に従ってこの領域を設定してください。
00=1ﾊﾞﾝｸ、01=2ﾊﾞﾝｸ、1x=予約(本設定使用禁止)● ﾋﾞｯﾄ1 - ALLOC : ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾒﾓﾘ割り当て (Endpoint Allocation Bit)

ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾒﾓﾘを割り当てるにはこのﾋﾞｯﾄを設定(1)してください。
ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾒﾓﾘを開放するには解除(0)してください。
より多くの詳細については177頁の「ｴﾝﾄﾞﾎﾟｲﾝﾄの活性化(有効設定)」項をご覧ください。
● ﾋﾞｯﾄ0 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。

22.19.6. UESTA0X - ｴﾝﾄﾞﾎﾟｲﾝﾄX状態0ﾚｼﾞｽﾀ (USB Endpoint X Status 0 Register)
ﾋﾞｯﾄ
($EE)
Read/Write
初期値

7

CFGOK

6

5

OVERFI UNDERFI

R
0

R/W
0

R/W
0

4

R
0

3

2

1

0

DTSEQ1 DTSEQ0 NBUSYBK1 NBUSYBK0 UESTA0X
R
0

R
0

R
0

R
0

● ﾋﾞｯﾄ7 - CFGOK : 構成状態ﾌﾗｸﾞ (Configuration Status Flag)

ｴﾝﾄﾞﾎﾟｲﾝﾄX容量(EPSIZE)とﾊﾞﾝｸ形式(EPBK)が許された最大ﾊﾞﾝｸ数と最大FIFOと比較して正しい時にﾊｰﾄﾞｳｪｱによって設定(1)されます。このﾋﾞｯﾄは割り当て(ALLOC)ﾋﾞｯﾄが設定(1)される時に更新されます。
このﾋﾞｯﾄが解除(0)されている場合、使用者は正しいEPSIZEとEPBK値でｴﾝﾄﾞﾎﾟｲﾝﾄ構成1(UECFG1X)ﾚｼﾞｽﾀを再設定すべきです。
● ﾋﾞｯﾄ6 - OVERFI : ｵｰﾊﾞｰﾌﾛｰ異常割り込み要求ﾌﾗｸﾞ (Overflow Error Interrupt Flag)

等時(Isochronous)ｴﾝﾄﾞﾎﾟｲﾝﾄでｵｰﾊﾞｰﾌﾛｰ異常が起こると、ﾊｰﾄﾞｳｪｱによって設定(1)されます。(許可なら)割り込み(EPINTn)が起動されます。
より多くの詳細については183頁の「等時(Isochronous)動作」項をご覧ください。
このﾋﾞｯﾄはｿﾌﾄｳｪｱによって解除(0)されるべきでしょう。ｿﾌﾄｳｪｱによる設定(1)は無効です。
● ﾋﾞｯﾄ5 - UNDERFI : ｱﾝﾀﾞｰﾌﾛｰ異常割り込み要求ﾌﾗｸﾞ (Underflow Error Interrupt Flag)

等時(Isochronous)ｴﾝﾄﾞﾎﾟｲﾝﾄでｱﾝﾀﾞｰﾌﾛｰ異常が起こると、ﾊｰﾄﾞｳｪｱによって設定(1)されます。(許可なら)割り込み(EPINTn)が起動されます。
より多くの詳細については182頁の「等時(Isochronous)動作」項をご覧ください。
このﾋﾞｯﾄはｿﾌﾄｳｪｱによって解除(0)されるべきでしょう。ｿﾌﾄｳｪｱによる設定(1)は無効です。
● ﾋﾞｯﾄ4 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ3,2 - DTSEQ1,0 : 交互ﾃﾞｰﾀ番号ﾌﾗｸﾞ (Data Toggle Sequencing Flag)

現在のﾊﾞﾝｸのPIDﾃﾞｰﾀを示すためにﾊｰﾄﾞｳｪｱによって設定されます。
00=Data0、01=Data1、1x=予約
OUT転送に於ける本値は現在のﾊﾞﾝｸで最後に受信した交互ﾃﾞｰﾀ番号を示します。
IN転送に於ける本値は送るべき次ﾊﾟｹｯﾄに対して使われるべき交互ﾃﾞｰﾀ番号を示します。これは現在のﾊﾞﾝｸと無関係です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]188

● ﾋﾞｯﾄ1,0 - NBUSYBK1,0 : ﾊﾞﾝｸ内容状況ﾌﾗｸﾞ (Busy Bank Flag)

内容が設定されているﾊﾞﾝｸ数を示すためにﾊｰﾄﾞｳｪｱによって設定されます。
INｴﾝﾄﾞﾎﾟｲﾝﾄに対しては使用者によって満たされ、IN転送の準備ができているﾊﾞﾝｸ数を示します。
OUTｴﾝﾄﾞﾎﾟｲﾝﾄに対してはﾎｽﾄからのOUT転送単位(Transaction)によって満たされたﾊﾞﾝｸ数を示します。
00=全ﾊﾞﾝｸ空き、01=1ﾊﾞﾝｸ設定済み、10=2ﾊﾞﾝｸ設定済み、11=予約

22.19.7. UESTA1X - ｴﾝﾄﾞﾎﾟｲﾝﾄX状態1ﾚｼﾞｽﾀ (USB Endpoint X Status 1 Register)
ﾋﾞｯﾄ
($EF)
Read/Write
初期値

7

6

5

4

3

-

-

-

-

-

R
0

R
0

R
0

R
0

R
0

2

1

0

CTRLDIR CURRBK1 CURRBK0 UESTA1X
R
0

R
0

R
0

● ﾋﾞｯﾄ7～3 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ2 - CTRLDIR : 制御転送方向 (Control Direction Flag)

設定(SETUP)ﾊﾟｹｯﾄ後にﾊｰﾄﾞｳｪｱによって設定され、後続ﾊﾟｹｯﾄの方向を与えます。
0=OUTｴﾝﾄﾞﾎﾟｲﾝﾄ、1=INｴﾝﾄﾞﾎﾟｲﾝﾄ。 ｿﾌﾄｳｪｱによる設定(1)や解除(0)はできません。
● ﾋﾞｯﾄ1,0 - CURRBK1,0 : (除く制御ｴﾝﾄﾞﾎﾟｲﾝﾄ)現ﾊﾞﾝｸ番号 (Current Bnak (endpoints except Control endpoint) Flag)

現在のﾊﾞﾝｸ番号を示すためにﾊｰﾄﾞｳｪｱによって設定されます。
00=ﾊﾞﾝｸ0、01=ﾊﾞﾝｸ1、1x=予約。 ｿﾌﾄｳｪｱによる設定(1)や解除(0)はできません。

22.19.8. UEINTX - ｴﾝﾄﾞﾎﾟｲﾝﾄX割り込み要求ﾚｼﾞｽﾀ (USB Endpoint X Interrupt Register)
ﾋﾞｯﾄ
($E8)
Read/Write
初期値

7

6

FIFOCON NAKINI
R/W
0

R/W
0

5

RWAL
R/W
0

4

3

NAKOUTI RXSTPI
R/W
0

R/W
0

2

1

RXOUTI STALLEDI
R/W
0

R/W
0

0

TXINI

UEINTX

R/W
0● ﾋﾞｯﾄ7 - FIFOCON : FIFO制御 (FIFO Control Bit)

OUTとSETUPｴﾝﾄﾞﾎﾟｲﾝﾄに対して :新規OUTﾒｯｾｰｼﾞが現在のﾊﾞﾝｸ内に格納されると、ﾊｰﾄﾞｳｪｱによってOUTﾃﾞｰﾀ受信割り込み要求(RXOUTI)またはSETUP受信割り込み要求(RXSTPI)と同時に設定(1)されます。
現在のﾊﾞﾝｸを開放するために解除(0)して次のﾊﾞﾝｸに切り替えてください。ｿﾌﾄｳｪｱによる設定(1)は無効です。
INｴﾝﾄﾞﾎﾟｲﾝﾄに対して :現在のﾊﾞﾝｸが空の時にﾊｰﾄﾞｳｪｱによって送信可割り込み要求(TXINI)と同時に設定(1)されます。
FIFOﾃﾞｰﾀを送信してﾊﾞﾝｸを切り替えるために解除(0)してください。ｿﾌﾄｳｪｱによる設定(1)は無効です。
● ﾋﾞｯﾄ6 - NAKINI : IN受信否定応答割り込み要求ﾌﾗｸﾞ (NAK IN Received Interrupt Flag)

ﾎｽﾄからのIN要求の応答で否定応答(NAK)ﾊﾝﾄﾞｼｪｰｸが送られた時にﾊｰﾄﾞｳｪｱによって設定(1)されます。これはIN受信否定応答割
り込み許可(NAKINE)が設定(1)されているなら、USB割り込みを起動します。
このﾌﾗｸﾞはｿﾌﾄｳｪｱによって解除(0)されるべきでしょう。ｿﾌﾄｳｪｱによる設定(1)は無効です。
● ﾋﾞｯﾄ5 - RWAL : 読み書き可ﾌﾗｸﾞ (Read/Write Allowed Flag)

以下を示すためにﾊｰﾄﾞｳｪｱによって設定(1)されます。
・ INｴﾝﾄﾞﾎﾟｲﾝﾄについては、現ﾊﾞﾝｸが一杯でない、換言するとﾌｧｰﾑｳｪｱがFIFOにﾃﾞｰﾀを書ける・ OUTｴﾝﾄﾞﾎﾟｲﾝﾄについては、現ﾊﾞﾝｸが空でない、換言するとﾌｧｰﾑｳｪｱがFIFOからﾃﾞｰﾀを読める
このﾋﾞｯﾄは不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸ要求(STALLRQ)が設定(1)、または異常の場合に決して設定(1)されません。
その他の場合、ﾊｰﾄﾞｳｪｱによって解除(0)されます。
このﾋﾞｯﾄは制御(Control)ｴﾝﾄﾞﾎﾟｲﾝﾄに使われるべきではありません。
● ﾋﾞｯﾄ4 - NAKOUTI : OUT受信否定応答割り込み要求ﾌﾗｸﾞ (NAK OUT Received Interrupt Flag)

ﾎｽﾄからのOUT/PING要求の応答で否定応答(NAK)ﾊﾝﾄﾞｼｪｰｸが送られた時にﾊｰﾄﾞｳｪｱによって設定(1)されます。これはOUT受信
否定応答割り込み許可(NAKOUTE)が設定(1)されているなら、USB割り込みを起動します。
このﾌﾗｸﾞはｿﾌﾄｳｪｱによって解除(0)されるべきでしょう。ｿﾌﾄｳｪｱによる設定(1)は無効です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]189

● ﾋﾞｯﾄ3 - RXSTPI : SETUP受信割り込み要求ﾌﾗｸﾞ (Received SETUP Interrupt Flag)

現ﾊﾞﾝｸが新規の有効設定(SETUP)ﾊﾟｹｯﾄを含むことを示すためにﾊｰﾄﾞｳｪｱによって設定(1)されます。(許可なら、)割り込み(EPINTn)が起動されます。
割り込みでのやり取りを行うためにｿﾌﾄｳｪｱで解除(0)してください。ｿﾌﾄｳｪｱによる設定(1)は無効です。
ｴﾝﾄﾞﾎﾟｲﾝﾄがINｴﾝﾄﾞﾎﾟｲﾝﾄの場合、このﾋﾞｯﾄは非活性(解除(0))です。
● ﾋﾞｯﾄ2 - RXOUTI/KILLBKRXOUTI : OUTﾃﾞｰﾀ受信割り込み要求ﾌﾗｸﾞ (Received OUT Data Interrupt Flag)
現ﾊﾞﾝｸが新規ﾊﾟｹｯﾄを含むことを示すためにﾊｰﾄﾞｳｪｱによって設定(1)されます。(許可なら、)割り込み(EPINTn)が起動されます。
割り込みでのやり取りを行うためにｿﾌﾄｳｪｱで解除(0)してください。ｿﾌﾄｳｪｱによる設定(1)は無効です。
KILLBK : 最終書き込みﾊﾞﾝｸ無効化 (Kill Bank IN Bit)
最後に書かれたﾊﾞﾝｸを消去(無効化)するにはこのﾋﾞｯﾄを設定(1)してください。
そのﾊﾞﾝｸが消去(無効化)されると、ﾊｰﾄﾞｳｪｱによって解除(0)されます。ｿﾌﾄｳｪｱによる解除(0)は無効です。
失敗中止(Abort)でのより多くの詳細については182頁の「失敗中止(Abort)」をご覧ください。
● ﾋﾞｯﾄ1 - STALLEDI : 不能応答送信完了/異常検出割り込み要求ﾌﾗｸﾞ (STALLEDI Interrupt Flag)

不能応答(STALL)ﾊﾝﾄﾞｼｪｰｸが送信された、または等時(Isochronuos)OUTｴﾝﾄﾞﾎﾟｲﾝﾄでCRC異常が検出されたことを示すためにﾊｰﾄﾞｳｪｱによって設定(1)されます。
このﾌﾗｸﾞはｿﾌﾄｳｪｱによって解除(0)されるべきでしょう。ｿﾌﾄｳｪｱによる設定(1)は無効です。
● ﾋﾞｯﾄ0 - TXINI : 送信可割り込み要求ﾌﾗｸﾞ (Transmiter Ready Flag)

現ﾊﾞﾝｸが空で、満たされ得ることを示すためにﾊｰﾄﾞｳｪｱによって設定(1)されます。(許可なら、)割り込み(EPINTn)が起動されます。
割り込みでのやり取りを行うためにｿﾌﾄｳｪｱで解除(0)してください。ｿﾌﾄｳｪｱによる設定(1)は無効です。
ｴﾝﾄﾞﾎﾟｲﾝﾄがOUTｴﾝﾄﾞﾎﾟｲﾝﾄの場合、このﾋﾞｯﾄは非活性(解除(0))です。

22.19.9. UEIENX - ｴﾝﾄﾞﾎﾟｲﾝﾄX割り込み許可ﾚｼﾞｽﾀ (USB Endpoint X Interrupt Enable Register)
ﾋﾞｯﾄ
($F0)
Read/Write
初期値

7

6

FLERRE NAKINE
R/W
0

R/W
0

5

R
0

4

3

2

1

0

NAKOUTE RXSTPE RXOUTE STALLEDE TXINE
R/W
0

R/W
0

R/W
0

R/W
0

UEIENX

R/W
0● ﾋﾞｯﾄ7 - FLERRE : 流れ異常割り込み許可 (Flow Error Interrupt Enable Bit)

ｵｰﾊﾞｰﾌﾛｰ割り込み要求(OVERFI)またはｱﾝﾀﾞｰﾌﾛｰ割り込み要求(UNDERFI)が設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を許可するには設定(1)してください。
OVERFIまたはUNDERFIが設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を禁止するには解除(0)してください。
● ﾋﾞｯﾄ6 - NAKINE : IN受信否定応答割り込み許可 (NAK IN Interrupt Enable Bit)

IN受信否定応答割り込み要求(NAKINI)が設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を許可するには設定(1)してください。
NAKINIが設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を禁止するには解除(0)してください。
● ﾋﾞｯﾄ5 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ4 - NAKOUTE : OUT受信否定応答割り込み許可 (NAK OUT Interrupt Enable Bit)

OUT受信否定応答割り込み要求(NAKOUTI)が設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を許可するには設定(1)してください。
NAKOUTIが設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を禁止するには解除(0)してください。
● ﾋﾞｯﾄ3 - RXSTPE : SETUP受信割り込み許可 (Received SETUP Interrupt Enable Bit)

SETUP受信割り込み要求(RXSTPI)が設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を許可するには設定(1)してください。
RXSTPIが設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を禁止するには解除(0)してください。
● ﾋﾞｯﾄ2 - RXOUTE : OUTﾃﾞｰﾀ受信割り込み許可 (Received OUT Data Interrupt Enable Bit)

OUTﾃﾞｰﾀ受信割り込み要求(RXOUTI)が設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を許可するには設定(1)してください。
RXOUTIが設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を禁止するには解除(0)してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]190

● ﾋﾞｯﾄ1 - STALLEDE : 不能応答/異常検出割り込み許可 (Stalled Interrupt Enable Bit)

不能応答/異常検出割り込み要求(STALLEDI)が設定(1)された時に、ｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を許可するには設定(1)してください。
STALLEDIが設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を禁止するには解除(0)してください。
● ﾋﾞｯﾄ0 - TXINE : 送信可割り込み許可 (Transmitter Ready Interrupt Enable Bit)

送信可割り込み要求(TXINI)が設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を許可するには設定(1)してください。
TXINIが設定(1)された時にｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み(EPINTn)を禁止するには解除(0)してください。

22.19.10. UEDATX - ｴﾝﾄﾞﾎﾟｲﾝﾄX ﾃﾞｰﾀ ﾚｼﾞｽﾀ (USB Endpoint X Data Register)
ﾋﾞｯﾄ
($F1)
Read/Write
初期値

7

6

5

4

3

2

1

0

DAT7

DAT6

DAT5

DAT4

DAT3

DAT2

DAT1

DAT0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

UEDATX● ﾋﾞｯﾄ7～0 - DAT7～0 : ﾃﾞｰﾀ (Data Bits)

ｴﾝﾄﾞﾎﾟｲﾝﾄ番号(EPNUM)によって選択したｴﾝﾄﾞﾎﾟｲﾝﾄFIFOとのﾊﾞｲﾄ読み書きをｿﾌﾄｳｪｱによって行ってください。

22.19.11. UEBCHX, UEBCLX (UEBCX) - ｴﾝﾄﾞﾎﾟｲﾝﾄX ﾊﾞｲﾄ数ﾚｼﾞｽﾀ (USB Endpoint X Byte Count Register)
ﾋﾞｯﾄ
($F3)
Read/Write
初期値
ﾋﾞｯﾄ
($F2)
Read/Write
初期値

15

14

13

12

11

10

9

8

-

-

-

-

-

BYCT10

BYCT9

BYCT8

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

7

6

5

4

3

2

1

0

BYCT7

BYCT6

BYCT5

BYCT4

BYCT3

BYCT2

BYCT1

BYCT0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

UEBCHXUEBCLX● ﾋﾞｯﾄ15～11 - Res : 予約 (Reserved)

これらのﾋﾞｯﾄからの読み込み値は常に0です。これらのﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ10～0 - BYCT10～0 : ﾊﾞｲﾄ数 (Byte count Bits)

ﾊｰﾄﾞｳｪｱによって設定されます。これらはFIFOｴﾝﾄﾞﾎﾟｲﾝﾄのﾊﾞｲﾄ数です。
・ (INｴﾝﾄﾞﾎﾟｲﾝﾄについては)、ｴﾝﾄﾞﾎﾟｲﾝﾄ内への毎書き込み後に増加(+1)され、毎ﾊﾞｲﾄ送信後に減少(-1)されます。
・ (OUTｴﾝﾄﾞﾎﾟｲﾝﾄについては)、ﾎｽﾄによる毎ﾊﾞｲﾄ送信後に増加(+1)され、ｿﾌﾄｳｪｱによる毎ﾊﾞｲﾄ読み込み後に減少(-1)されます。
(訳注) UEBCHXとUEBCLXは原書での個別表記を統一表記に纏めました。

22.19.12. UEINT - ｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み要求ﾚｼﾞｽﾀ (USB Endpoint Interrupt Register)
ﾋﾞｯﾄ
($F4)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

EPINT6EPINT5EPINT4EPINT3EPINT2EPINT1EPINT0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

UEINT

● ﾋﾞｯﾄ7 - Res : 予約 (Reserved)

このﾋﾞｯﾄからの読み込み値は常に0です。このﾋﾞｯﾄを設定(1)してはいけません。
● ﾋﾞｯﾄ6～0 - EPINT6～EPINT0 : ｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み要求ﾌﾗｸﾞ (Endpoint Interrupts Bits)

ｴﾝﾄﾞﾎﾟｲﾝﾄX割り込み要求(UEINTX)ﾚｼﾞｽﾀに対応するｴﾝﾄﾞﾎﾟｲﾝﾄ割り込み許可ﾋﾞｯﾄが設定(1)され、UEINTXによって割り込みが起動されると、ﾊｰﾄﾞｳｪｱによって設定(1)されます。
その割り込み元が取り扱われる(処理される)と、ﾊｰﾄﾞｳｪｱによって解除(0)されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

191

23. ｱﾅﾛｸﾞ比較器
ｱﾅﾛｸﾞ比較器は非反転入力AIN+と反転入力AIN-の入力値を比較します。非反転入力AIN+の電圧が反転入力AIN-の電圧よりも高い時にACSRのｱﾅﾛｸﾞ比較器出力(ACO)ﾋﾞｯﾄが設定(1)されます。この比較器出力はﾀｲﾏ/ｶｳﾝﾀ1の捕獲機能を起動するように設定できます。加えて、この比較器はｱﾅﾛｸﾞ比較器専用の独立した割り込みを起動できます。使用者は比較器出力の上昇端、下降端、またはその両方で割り込み起動を選べます。この比較器とその周辺論理回路の構成図は図23-1.で示されます。
AIN+はAIN0(PE6)ﾋﾟﾝまたは内部(ﾊﾞﾝﾄﾞｷﾞｬｯﾌﾟ)基準電圧のどちらかに接続することができます。AIN-はA/D多重器だけに接続することができます。
ADC入力(A/D多重器出力)の使用を可能とするには、28頁の「PRR0 - 電力削減ﾚｼﾞｽﾀ」のPRADCﾋﾞｯﾄが論理0を書かれることで(電力削減を)禁止されなければなりません。
図23-1. ｱﾅﾛｸﾞ比較器部構成図
VCC

内部基準電圧
ACBG

ACIE

ACD
AIN+

AIN0

AIN-

+
-

ｱﾅﾛｸﾞ比較器割り込み

割り込み
選択

ACI

ACME
ADEN
(注1) A/D多重器出力

ACIS1 ACIS0 ACIC
ACO

ﾀｲﾏ/ｶｳﾝﾀ1捕獲起動選択へ

注1: A/D多重器出力については表23-1.をご覧ください。
注: ｱﾅﾛｸﾞ比較器ﾋﾟﾝ配置については2頁の「ﾋﾟﾝ配置」と50頁の表11-11.を参照してください。

23.1. ｱﾅﾛｸﾞ比較器入力選択
ｱﾅﾛｸﾞ比較器への反転入力を取り替えるのにADC13～0のどれかを選択することができます。A/D変換の多重器がこの入力選択に使われ、従ってこの機能を利用するためにA/D変換部がOFF(動作禁止)にされなければなりません。ADCSRBのｱﾅﾛｸﾞ比較器多重器許可(ACME)ﾋﾞｯﾄが設定(1)され、A/D変換部がOFF(ADCSRAのADENﾋﾞｯﾄが0)にされていれば、下表で示されるようにADMUXのﾁｬﾈﾙ選択(MUX2～0)ﾋﾞｯﾄがｱﾅﾛｸﾞ比較器への反転入力を取り替えるための入力ﾋﾟﾝを選びます。ACMEが解除(0)またはADENが設定(1)されると、内部(ﾊﾞﾝﾄﾞｷﾞｬｯﾌﾟ)基準電圧がｱﾅﾛｸﾞ比較器への反転入力に印加されます。
表23-1. ｱﾅﾛｸﾞ比較器反転入力選択
ACME
ADEN
0
x
1

1

MUX2～0
xxx
xxx
000
001
010
011
100
101
110
111

0

ｱﾅﾛｸﾞ比較器反転入力

備考

内部(ﾊﾞﾝﾄﾞｷﾞｬｯﾌﾟ)基準電圧
ADC0
ADC1
(利用不可)(利用不可)
ADC4
ADC5
ADC6
ADC7

23.2. ｱﾅﾛｸﾞ比較器用ﾚｼﾞｽﾀ
23.2.1. ADCSRB - A/D変換制御/状態ﾚｼﾞｽﾀB (ADC Control and Status Register B)
ﾋﾞｯﾄ
($7B)
Read/Write
初期値

7

6

5

4

3

2

1

0

ADHSM

ACME

MUX5

-

ADTS3

ADTS2

ADTS1

ADTS0

R/W
0

R/W
0

R/W
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

ADCSRB● ﾋﾞｯﾄ6 - ACME : ｱﾅﾛｸﾞ比較器多重器許可 (Analog Comparator Multiplexer Enable)

このﾋﾞｯﾄが論理1を書かれ、A/D変換部がOFF(ADCSRAのADENﾋﾞｯﾄが0)にされると、A/D変換の多重器がｱﾅﾛｸﾞ比較器への反転入力に接続されます。このﾋﾞｯﾄが論理0を書かれると、内部(ﾊﾞﾝﾄﾞｷﾞｬｯﾌﾟ)基準電圧がｱﾅﾛｸﾞ比較器の反転入力に接続されます(32頁の「内部基準電圧」をご覧ください)。このﾋﾞｯﾄの詳細な記述については「ｱﾅﾛｸﾞ比較器入力選択」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

192

23.2.2. ACSR - ｱﾅﾛｸﾞ比較器 制御/状態ﾚｼﾞｽﾀ (Analog Comparator Control and Status Register)ﾋﾞｯﾄ$30 ($50)
Read/Write
初期値

7

6

5

4

3

2

1

0

ACD

ACBG

ACO

ACI

ACIE

ACIC

ACIS1

ACIS0

R/W
0

R/W
0

R
不定

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

ACSR

● ﾋﾞｯﾄ7 - ACD : ｱﾅﾛｸﾞ比較器禁止 (Analog Comparator Disable)

このﾋﾞｯﾄが論理1を書かれると、ｱﾅﾛｸﾞ比較器への電力がOFFにされます。このﾋﾞｯﾄはｱﾅﾛｸﾞ比較器をOFFにするために何時でも設定(1)できます。これは活動動作やｱｲﾄﾞﾙ動作で電力消費を削減します。ACDﾋﾞｯﾄを変更する時にACSRのｱﾅﾛｸﾞ比較器割り込み許可(ACIE)ﾋﾞｯﾄを解除(0)することによってｱﾅﾛｸﾞ比較器割り込みが禁止されなければなりません。さもなければ、このﾋﾞｯﾄが変更される
時に割り込みが起こり得ます。
● ﾋﾞｯﾄ6 - ACBG : 基準電圧選択 (Analog Comparator Bandgap Select)

このﾋﾞｯﾄが設定(1)されると、内部基準電圧(公称1.1V)がｱﾅﾛｸﾞ比較器への非反転入力に置き換わります。本ﾋﾞｯﾄが解除(0)されると、AIN0がｱﾅﾛｸﾞ比較器の非反転入力に印加されます。32頁の「内部基準電圧」をご覧ください。
● ﾋﾞｯﾄ5 - ACO : ｱﾅﾛｸﾞ比較器出力 (Analog Comparator Output)

ｱﾅﾛｸﾞ比較器の出力は同期化され、その後に直接ACOへ接続されます。この同期化は1～2ｸﾛｯｸ周期の遅延をもたらします。
● ﾋﾞｯﾄ4 - ACI : ｱﾅﾛｸﾞ比較器割り込み要求ﾌﾗｸﾞ (Analog Comparator Interrupt Flag)

このﾋﾞｯﾄは比較器出力での出来事がACSRのｱﾅﾛｸﾞ比較器割り込み条件(ACIS1,0)ﾋﾞｯﾄによって定義した割り込み方法で起動する時に設定(1)されます。ACSRのｱﾅﾛｸﾞ比較器割り込み許可(ACIE)ﾋﾞｯﾄが設定(1)され、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されていると、ｱﾅﾛｸﾞ比較器割り込みﾙｰﾁﾝが実行されます。対応する割り込み処理ﾍﾞｸﾀを実行すると、ACIはﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにこのﾌﾗｸﾞへ論理1を書くことによってもACIは解除(0)されます。
● ﾋﾞｯﾄ3 - ACIE : ｱﾅﾛｸﾞ比較器割り込み許可 (Analog Comparator Interrupt Enable)

ACIEﾋﾞｯﾄが論理1を書かれ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されていると、ｱﾅﾛｸﾞ比較器割り込みが活性(有効)にされます。論理0を書かれると、この割り込みは禁止されます。
● ﾋﾞｯﾄ2 - ACIC : ｱﾅﾛｸﾞ比較器捕獲起動許可 (Analog Comparator Input Capture Enable)

論理1を書かれると、このﾋﾞｯﾄはｱﾅﾛｸﾞ比較器によって起動されるﾀｲﾏ/ｶｳﾝﾀ1の捕獲機能を許可します。この場合、比較器出力は比較器にﾀｲﾏ/ｶｳﾝﾀ1捕獲割り込みの雑音消去機能とｴｯｼﾞ選択機能を利用させる捕獲入力前置論理回路へ直接的に接続されます。
論理0を書かれると、ｱﾅﾛｸﾞ比較器と捕獲機能間の接続は存在しません。比較器がﾀｲﾏ/ｶｳﾝﾀ1捕獲割り込みを起動するには、ﾀｲﾏ/
ｶｳﾝﾀ1割り込み許可ﾚｼﾞｽﾀ(TIMSK1)の捕獲割り込み許可(ICIE1)ﾋﾞｯﾄが設定(1)されなければなりません。
● ﾋﾞｯﾄ1,0 - ACIS1,0 : ｱﾅﾛｸﾞ比較器割り込み条件 (Analog Comparator Interrupt Mode Select)

これらのﾋﾞｯﾄは比較器のどの事象がｱﾅﾛｸﾞ比較器割り込みを起動するのかを決めます。各種設定は右表で示されます。
ACIS1,ACIS0ﾋﾞｯﾄを変更する時にACSRのｱﾅﾛｸﾞ比較器割り込み許可(ACIE)ﾋﾞｯﾄを解除(0)することによってｱﾅﾛｸﾞ比較器割り込みが禁
止されなければなりません。さもなければ、これらのﾋﾞｯﾄが変更される時に割り込みが起き得ます。

表23-2. ｱﾅﾛｸﾞ比較器割り込み条件選択
ACIS1
ACIS0
割り込み発生条件0
比較器出力の変移 (ﾄｸﾞﾙ)
0
(予約)
0
1
1
比較器出力の下降端0比較器出力の上昇端
1123.2.3. DIDR1 - ﾃﾞｼﾞﾀﾙ入力禁止ﾚｼﾞｽﾀ1 (Digital Input Disable Register 1)
ﾋﾞｯﾄ
($7F)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

-

-

-

-

-

AIN0D

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R/W
0

DIDR1

● ﾋﾞｯﾄ7～1 - Res : 予約 (Reserved) (訳注:共通性から本項追加)

これらのﾋﾞｯﾄは使われず、常に0として読まれます。
● ﾋﾞｯﾄ0 - AIN0D : AIN0 ﾃﾞｼﾞﾀﾙ入力禁止 (AIN0 Digital Input Disable)

このﾋﾞｯﾄが論理1を書かれると、AIN0ﾋﾟﾝのﾃﾞｼﾞﾀﾙ入力緩衝部が禁止されます。このﾋﾞｯﾄが設定(1)されると、対応するﾎﾟｰﾄ入力ﾚｼﾞｽﾀのﾋﾞｯﾄ(PINx)は常に0として読みます。AIN0ﾋﾟﾝにｱﾅﾛｸﾞ信号が印加され、そのﾋﾟﾝからのﾃﾞｼﾞﾀﾙ入力が必要とされない時にﾃﾞｼﾞﾀﾙ入力緩衝部での消費電力を削減するため、このﾋﾞｯﾄは論理1を書かれるべきです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]193

24. A/D変換器
24.1. 特徴・ 10/8ﾋﾞｯﾄ分解能・ A/D変換結果読み出しに対する任意の左揃え・ 積分非直線性誤差0.5LSB
・ 0～VCC A/D変換入力電圧範囲
・ 絶対精度±2LSB・ 選択可能な2.56V A/D変換基準電圧・ 変換時間13～260µs (50kHz～1MHz変換ｸﾛｯｸ)・ 連続と単独の変換動作
・ 最大分解能で15kSPS(採取/s)まで
・ 割り込み元の自動起動によるA/D変換開始
・ 12ﾁｬﾈﾙのｼﾝｸﾞﾙ ｴﾝﾄﾞ入力多重器内蔵・ A/D変換完了割り込み・ 1,10,40,200倍の利得を提供する1つの差動増幅器
・ 休止形態雑音低減機能
・ 温度感知器
ATmega16U4/32U4は10ﾋﾞｯﾄ逐次比較A/D変換器が特徴です。このA/D変換器はﾎﾟｰﾄB,D,Fの多数のﾋﾟﾝﾋﾟﾝから構成されたｼﾝｸﾞﾙ
ｴﾝﾄﾞ電圧入力を許す12ﾁｬﾈﾙ ｱﾅﾛｸﾞ多重器に接続されます。このｼﾝｸﾞﾙ ｴﾝﾄﾞ電圧入力は0V(GND)が基準です。
差動増幅器はA/D変換前の差動入力電圧で0dB(×1),20dB(×10),32dB(×40),46dB(×200)の増幅段を提供する設定変更可能な利得段を装備することによって、ﾃﾞﾊﾞｲｽは32通りの差動電圧入力も支援します。2つの差動ｱﾅﾛｸﾞ入力が共通反転端子(ADC0/ADC
1)を共用し、一方他のADC入力が非反転入力端子として選択できます。利得×1,×10,×40が使われる場合は8ﾋﾞｯﾄ分解能が期待でき、利得×200が使われる場合は7ﾋﾞｯﾄ分解能が期待できます。
このA/D変換器はA/D変換器への入力電圧が変換中に一定の値で保持されることを保証する採取&保持(S/H)回路を含みます。
A/D変換部の構成図は図24-1.で示されます。
A/D変換部には分離されたｱﾅﾛｸﾞ電源供給ﾋﾟﾝ(AVCC)があります。AVCCはVCCから±0.3Vよりも多く違ってはなりません。このﾋﾟﾝの接続方法は200頁の「雑音低減技術」項をご覧ください。
公称2.56Vの内蔵基準電圧またはAVCCがﾁｯﾌﾟ上で提供されます。この基準電圧は雑音特性向上のため、ｺﾝﾃﾞﾝｻによってAREF ﾋﾟ
ﾝで外部的にﾃﾞｶｯﾌﾟ(雑音分離)できます。
28頁の「PRR0 - 電力削減ﾚｼﾞｽﾀ」のPRADCﾋﾞｯﾄはA/D変換部を許可するために0を書かれなければなりません。(訳注:本行追加)

図24-1. A/D変換器部構成図
ADIF
ADIE

AVCC

8 7

前置
分周器

GND
ADC13

START

MUX復号器ADC12

0A/D ﾃﾞｰﾀ ﾚｼﾞｽﾀ(ADCH/ADCL)

ADPS2
ADPS1
ADPS0

起動元
選択

A/D変換制御/状態ﾚｼﾞｽﾀA (ADCSRA)
ADEN
ADSC
ADATE
(ADIF)

ADTS3～0

温度感知器

A/D変換制御/状態ﾚｼﾞｽﾀB (ADCSRB)
MUX5

1.1V内部
基準電圧

15A/D多重器選択
ﾚｼﾞｽﾀ (ADMUX)MUX4～0

AREF

8-bit Data Bus

REFS1
REFS0
ADLAR

2.56V内部
基準電圧

A/D変換完了
割り込み

ADC9～0

各種割り込み要求ﾌﾗｸﾞ

変換制御回路

-

ADC11

ADC8
ADC7
ADC5
ADC4

反転入力
多重器

ADC6

非反転入力
多重器

ADC9

ｼﾝｸﾞﾙ ｴﾝﾄﾞ/差動選択
利得許可

+
利得増幅器

+
+

10ﾋﾞｯﾄDAC

ADC10

S&H比較器A/D多重器出力(ｱﾅﾛｸﾞ比較器へ)

ADC1
ADC0

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

194

24.2. 操作
A/D変換部は逐次比較を通してｱﾅﾛｸﾞ入力電圧を10ﾋﾞｯﾄのﾃﾞｼﾞﾀﾙ値に変換します。最小値はGNDを表し、最大値はAREFﾋﾟﾝの電圧-1LSBを表します。A/D多重器選択ﾚｼﾞｽﾀ(ADMUX)の基準電圧選択(REFS1,0)ﾋﾞｯﾄへの書き込みにより、任意でAVCCまたは内部
2.56V基準電圧がAREFﾋﾟﾝに接続できます。この内部基準電圧は雑音耐性を改善するためにAREFﾋﾟﾝで外部ｺﾝﾃﾞﾝｻによってﾃﾞｶｯﾌﾟ(雑音結合減少)のようにできます。
ｱﾅﾛｸﾞ入力ﾁｬﾈﾙと差動利得はA/D変換制御/状態ﾚｼﾞｽﾀB(ADCSRB)のﾁｬﾈﾙ選択(MUX5)ﾋﾞｯﾄとADMUXのﾁｬﾈﾙ選択(MUX4～0)
ﾋﾞｯﾄへの書き込みによって選択されます。GNDと固定基準電圧(1.1V内蔵基準電圧(VBG))だけでなく、どのADC入力ﾋﾟﾝ(ADC13～0)
もがA/D変換器のｼﾝｸﾞﾙ ｴﾝﾄﾞ入力として選択できます。ADC入力ﾋﾟﾝの選択は差動利得増幅器への反転と非反転入力として選択できます。
差動ﾁｬﾈﾙが選択されると、差動利得段は選択した入力ﾁｬﾈﾙ間の差電圧を選択した増幅率で増幅します。それからこの増幅した値
はA/D変換器の入力になります。ｼﾝｸﾞﾙ ｴﾝﾄﾞ ﾁｬﾈﾙが使われると、利得増幅器全体が迂回(無視)されます。(訳注:3行追加)
A/D変換部はA/D変換制御/状態ﾚｼﾞｽﾀA(ADCSRA)のA/D許可(ADEN)ﾋﾞｯﾄの設定(1)によって(動作が)許可されます。基準電圧と入力ﾁｬﾈﾙの選択はADENが設定(1)されるまで実施しません。ADENが解除(0)されているとA/D変換部は電力を消費しないので、節電をする休止形態へ移行する前にA/D変換部をOFFに切り替えることが推奨されます。
A/D変換部はA/Dﾃﾞｰﾀ ﾚｼﾞｽﾀ(ADCH,ADCL)で示される10ﾋﾞｯﾄの結果を生成します。既定では、この結果が右揃え(16ﾋﾞｯﾄのﾋﾞｯﾄ0
側10ﾋﾞｯﾄ)で表されますが、ADMUXで左揃え選択(ADLAR)ﾋﾞｯﾄを設定(1)することにより、任意で左揃え(16ﾋﾞｯﾄのﾋﾞｯﾄ15側10ﾋﾞｯﾄ)で表せます。
この結果が左揃え補正され、8ﾋﾞｯﾄを越える精度が必要とされない場合はADCHを読むことで足ります。さもなければﾃﾞｰﾀ ﾚｼﾞｽﾀの内容が同じ変換に属すこと(からの結果)を保証するため、ADCLが初めに、次にADCHが読まれなければなりません。一度ADCLが読まれると、A/D変換器からのA/Dﾃﾞｰﾀ ﾚｼﾞｽﾀ(ADCH,ADCL)ｱｸｾｽが阻止されます。これはADCLが読まれてしまい、ADCHが読まれる前に変換が完了すると、どちらのﾚｼﾞｽﾀ(ADCH,ADCL)も更新されず、その変換からの結果が失われることを意味します。ADCHが読まれると、ADCH,ADCLへのA/D変換器ｱｸｾｽが再び許可されます。
A/D変換部には変換完了時に起動できる自身の割り込みがあります。A/Dﾃﾞｰﾀ ﾚｼﾞｽﾀへのA/D変換器ｱｸｾｽがADCLとADCHの読み込み間で禁止されている場合、例えその変換結果が失われても割り込みは起動します。

24.3. 変換の開始～単独変換はADCSRAで変換開始(ADSC)ﾋﾞｯﾄに論理1を書くことによって開始されます。このﾋﾞｯﾄは変換が進行中である限り、1に留まり、変換が完了されるとﾊｰﾄﾞｳｪｱによって解除(0)されます。変換が進行中に違う入力ﾁｬﾈﾙが選択されると、A/D変換部はそのﾁｬﾈﾙ
変更を実行する前に現在の変換を済ませます。
また、変換は様々な起動元によって自動的に起動できま 図24-2. A/D変換自動起動回路
す。自動起動はA/D変換制御/状態ﾚｼﾞｽﾀA(ADCSRA)の
START
ADTS3～0
A/D変換自動起動許可(ADATE)ﾋﾞｯﾄの設定(1)によって許
前置分周器
ADATE
可されます。起動元はA/D変換制御/状態ﾚｼﾞｽﾀB(ADCS
CLKADCADIF
RB)のA/D変換起動元選択(ADTS3～0)ﾋﾞｯﾄの設定によっ1
割り込み元て選択されます(起動元の一覧についてはADTSﾋﾞｯﾄの記変換制御回路
述をご覧ください)。選択した起動信号上に上昇端が起きｴｯｼﾞ検出器
割り込み元nると、A/D変換用前置分周器がﾘｾｯﾄし、変換が開始されま
ADSC
す。これは一定間隔での変換開始の方法を提供します。
変換完了時、起動信号が未だ設定(1)されている場合、新規の変換は開始されません。変換中にこの起動信号上で別の上昇端が起きると、そのｴｯｼﾞは無視されます。指定した割り込みが禁止またはｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが解除(0)でも、割り込み要求ﾌﾗｸﾞが設定(1)されることに注意してください。
従って割り込みを起こさずに変換が起動できます。けれども次の割り込み要因で新規変換を起動するために、割り込み要求ﾌﾗｸﾞは解除(0)されなければなりません。
起動元としてA/D変換完了割り込み要求ﾌﾗｸﾞ(ADIF)を使うことは、A/D変換器に実行中の変換が完了されると直ぐに新規変換を開始させます。そのためA/D変換器は連続動作で動き、継続的な採取(変換)とA/Dﾃﾞｰﾀ ﾚｼﾞｽﾀを更新します。最初の変換はADCSRAでADSCﾋﾞｯﾄに論理1を書くことによって始めなければなりません。この動作でのA/D変換器はA/D変換完了割り込み要求ﾌﾗｸﾞ(ADIF)が解除(0)されるかどうかに拘らず、連続的な変換を実行します。
自動起動が許可されている場合、ADCSRAのADSCﾋﾞｯﾄに論理1を書くことによって単独変換を開始できます。ADSCは変換が進行中かを決めるためにも使えます。ADSCﾋﾞｯﾄは変換がどう開始されたかに拘らず、変換中は1として読めます。
変換はA/D変換雑音低減機能の使用によっても開始され得ます。この機能はｱｲﾄﾞﾙ休止動作とA/D変換雑音低減休止動作中に変換を許可します。詳細については200頁の「雑音低減機能」をご覧ください。(訳注:共通性から2行追加)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]195

24.4. 前置分周と変換ﾀｲﾐﾝｸﾞ

CK/2
CK/4
CK/8
CK/16
CK/32
CK/64
CK/128

既定での逐次比較回路は最大分解能を得るのに50～200kHzの入力ｸﾛｯｸ周波数を 図24-3. A/D変換前置分周器部構成
必要とします。10ﾋﾞｯﾄよりも低い分解能が必要とされるなら、A/D変換器への入力ｸﾛｯ
CK
ｸ周波数は200kHzよりも高くできます。また、A/D変換制御/状態ﾚｼﾞｽﾀB(ADCSRB)
ADEN
7ﾋﾞｯﾄ前置分周器
Rの高速A/D変換動作(ADHSM)ﾋﾞｯﾄの設定(1)が、より高い電力消費の犠牲でA/D変START
換ｸﾛｯｸ周波数の増加を許します。
A/D変換部は100kHz以上のどんなCPUｸﾛｯｸからも受け入れ可能なA/D変換ｸﾛｯｸ
周波数を生成する前置分周器を含みます。この前置分周はA/D変換制御/状態ﾚｼﾞ
ｽﾀA(ADCSRA)のA/Dｸﾛｯｸ選択(ADPS2～0)ﾋﾞｯﾄによって設定されます。前置分周器
ADPS0
A/D変換器用
はADCSRAでA/D許可(ADEN)ﾋﾞｯﾄの設定(1)によってA/D変換部がONにされた瞬
ADPS1
選択器
ADPS2
間から計数を始めます。前置分周器はADENﾋﾞｯﾄが設定(1)される限り走行を保ち、ADENが0の時は継続的にﾘｾｯﾄします。
ADCSRAのA/D変換開始(ADSC)ﾋﾞｯﾄの設定(1)によってｼﾝｸﾞﾙ ｴﾝﾄﾞ入力の変換を
A/D変換ｸﾛｯｸ起動すると、その変換は直後の変換ｸﾛｯｸの上昇端で始まります。差動変換ﾀｲﾐﾝｸﾞでの詳細については次頁の「差動増幅ﾁｬﾈﾙ」をご覧ください。
通常の変換は13変換ｸﾛｯｸ周期で行われます。A/D変換部がONされる(ADCSRAのADEN=1)後の最初の変換はｱﾅﾛｸﾞ回路を初期化するために25変換ｸﾛｯｸ周期で行われます。
実際の採取&保持(保持開始点)は通常変換の開始後1.5変換ｸﾛｯｸ周期、初回変換の開始後13.5変換ｸﾛｯｸ周期で行われます。変
換が完了すると、結果がA/Dﾃﾞｰﾀ ﾚｼﾞｽﾀ(ADCH,ADCL)に書かれ、ADCSRAのA/D変換完了割り込み要求ﾌﾗｸﾞ(ADIF)が設定(1)されます。単独変換動作(ADATE=0)では同時にADCSRAのA/D変換開始(ADSC)ﾋﾞｯﾄが解除(0)されます。その後にｿﾌﾄｳｪｱは再び
ADSCを設定(1)でき、新規変換は変換ｸﾛｯｸの最初の上昇端で開始されます。
自動起動が使われると、前置分周器は起動要因発生時にﾘｾｯﾄされます。これは起動要因から変換開始までの一定の遅延を保証します。この動作での採取&保持は起動要因となる信号の上昇後、2変換ｸﾛｯｸ周期で採取が行われます。同期化論理回路(ｴｯｼﾞ検出器)に対して、追加の3CPUｸﾛｯｸ周期が費やされます。
連続変換動作(ADATE=1)では変換完了後直ちに新規変換が開始され、一方ADSCは1に留まります。変換時間の概要については次頁の表24-1.をご覧ください。
図24-4. 初回変換ﾀｲﾐﾝｸﾞ (単独変換動作)
変換周期番号

1

2

12

13

初回変換
14 15 16

22

23

24

25

次の変換
1
2
3

変換ｸﾛｯｸ
ADEN
ADSC

変換完了

ADIF
ADCH,ADCL
基準電圧･
多重器確定

以前の変換値

今回の変換値

基準電圧･
多重器確定

保持点

H
L
1
0
1
0
1
0
1
0

図24-5. 通常変換ﾀｲﾐﾝｸﾞ (単独変換動作)
変換周期番号

1

2

3

4

5

通常変換
6
7
8

9

10

11

12

13

次の変換
1
2
3

変換ｸﾛｯｸ
ADSC

変換完了

ADIF
ADCH,ADCL
基準電圧･
多重器確定

以前の変換値

保持点

今回の変換値

H
L
1
0
1
0
1
0

基準電圧･
多重器確定

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

196

図24-6. 通常変換ﾀｲﾐﾝｸﾞ (自動起動変換動作)
変換周期番号

1

2

4

3

通常変換
6
7
8

5

9

10

11

12

次の変換
1
2

13

変換ｸﾛｯｸ
起動要因
ADATE

変換完了
保持点

ADIF
ADCH,ADCL
前置分周器
ﾘｾｯﾄ

以前の変換値

前置分周器
ﾘｾｯﾄ

図24-7. 連続変換動作ﾀｲﾐﾝｸﾞ
通常変換
変換周期番号 11 12 13

次の変換
1
2
3

変換ｸﾛｯｸADSC 変換完了
ADIF
ADCH,ADCL 以前の変換値
基準電圧･多重器確定

今回の変換値

基準電圧･
多重器確定

今回の変換値

H
L
1
0
1
0
1
0
1
0

H
L
1
0
1
0
1
0

表24-1. A/D変換時間
変換種別
初回変換
ｼﾝｸﾞﾙ ｴﾝﾄﾞ入力通常変換
差動入力通常変換
自動起動変換

保持点
13.5
1.5
1.5/2.5 (注1)
1.5 (2)

変換時間
25
13
13/14 (注1)
13.5

注: 変換時間を除く各値は変換開始からの変換ｸﾛｯｸ数です。
注1: CKADC2の状態に依存(訳注:共通性から追加)。

保持点

24.4.1. 差動増幅ﾁｬﾈﾙ
差動増幅ﾁｬﾈﾙを使う時は変換の±方向を考慮に入れる必要があります。
差動変換は変換ｸﾛｯｸの半分に等しい内部ｸﾛｯｸCKADC2に同期化されます。この同期化は採取&保持がCKADC2の特定位相で起きるというような方法でA/D変換器ｲﾝﾀｰﾌｪｰｽによって自動的に行われます。CKADC2がLowの時に使用者によって変換が開始されると(即ち全ての単独変換と連続変換の最初)、ｼﾝｸﾞﾙ ｴﾝﾄﾞ入力変換(次の前置分周したｸﾛｯｸ周期から13変換ｸﾛｯｸ周期)と同じ変換時
間になります。CKADC2がHighの時に使用者によって変換が開始されると、同期化機構のために14変換ｸﾛｯｸ周期になります。連続変換動作では直前の変換完了後、直ちに次の変換が開始され、この時にCKADC2がHighのため、自動的に開始される全ての連続変換(即ち、初回を除く全て)は14変換ｸﾛｯｸ周期になります。
差増増幅ﾁｬﾈﾙが使われ、自動起動によって変換が開始される場合、A/D変換部は変換の間、OFFに切り替えられなければなりません。自動起動が使われるとき、A/D用前置分周器は変換が開始される前にﾘｾｯﾄされます。利得段は変換以前の安定したA/D変換ｸﾛｯｸに関係するため、この変換は有効ではありません。各変換間のA/D変換部の動作禁止とその後の許可(ADCSRAのADENへの0書き込み後の1書き込み)では、延長した変換(初回変換)だけが実行されます。この延長した変換からの結果は有効です。詳細ﾀｲﾐﾝｸﾞについては196頁の「前置分周と変換ﾀｲﾐﾝｸﾞ」をご覧ください。
利得段は全利得設定に於いて帯域幅4kHzで最適化されています。より高い周波数は非直線増幅に陥るかもしれません。利得段帯
域幅よりも高い周波数成分を含む入力信号の場合、外部低域通過濾波器(ﾛｰﾊﾟｽ ﾌｨﾙﾀ)が使われるべきです。A/D変換ｸﾛｯｸ周波数が利得段帯域幅制限と無関係なことに注意してください。例えばA/D変換ｸﾛｯｸ周期が6µsでは、このﾁｬﾈﾙの帯域幅とは無関係に12k採取/sでの採取をﾁｬﾈﾙに許せます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]197

24.5. ﾁｬﾈﾙ変更と基準電圧選択
A/D多重器選択ﾚｼﾞｽﾀ(ADMUX)のﾁｬﾈﾙ選択(MUX4～0)ﾋﾞｯﾄと基準電圧選択(REFS1,0)ﾋﾞｯﾄ及びA/D変換制御/状態ﾚｼﾞｽﾀB(ADCSRB)のﾁｬﾈﾙ選択(MUX5)ﾋﾞｯﾄはCPUが乱順にｱｸｾｽするための一時ﾚｼﾞｽﾀを通して単緩衝されます。これはﾁｬﾈﾙと基準電圧の選択が変換中の安全なところでだけ行うのを保証します。ﾁｬﾈﾙと基準電圧の選択は変換が開始されるまで継続的に更新されます。一
旦変換が始まると、A/D変換器に対して充分な採取/変換時間を保証するためにﾁｬﾈﾙと基準電圧の選択は固定されます。継続的な更新は変換完了(A/D変換制御/状態ﾚｼﾞｽﾀA(ADCSRA)のADIF=1)前の最後の変換ｸﾛｯｸ周期で再開します。ADCSRAの変換開始(ADSC)ﾋﾞｯﾄが書かれた後の次の変換ｸﾛｯｸの上昇端で変換が始まることに注意してください。従って、使用者はADSC書き込み
後、1変換ｸﾛｯｸ周期(経過)まで新しいﾁｬﾈﾙまたは基準電圧選択値をADCSRBとADMUXに書かないことが推奨されます。
自動起動が使われる場合、起動要因の正確な時間は確定できません。変換が新規設定によって影響されるように制御するには
ADMUXﾚｼﾞｽﾀの更新時に特別な注意が祓われなければなりません。
ADCSRAのA/D許可(ADEN)とA/D変換自動起動許可(ADATE)の両方が1を書かれると、何時でも割り込みが起き得ます。この期間
でADMUXが変更されると、使用者は次の変換が旧設定または新設定どちらが基準にされるかを知ることができません。ADMUXは次の方法で安全に更新できます。
● ADENまたはADATEが解除(0)されているとき。
● 変換開始後、最低1変換ｸﾛｯｸ周期経過後の変換中。
● 変換後から、変換起動元として使った割り込みﾌﾗｸﾞが解除(0)される直前まで。
これら条件の1つでADMUXを更新すると、新設定は次のA/D変換に影響を及ぼします。
差動入力ﾁｬﾈﾙを変更する時に特別な注意が祓われるべきです。一旦差動入力ﾁｬﾈﾙが選択されてしまうと、利得段は新しい値に安定するのに125µs程度かかるかもしれません。従って変換は新規差動入力ﾁｬﾈﾙ選択後の最初の125µs内に開始されるべきではありません。または、この期間内に得た変換結果は破棄されるべきです。
(ADMUXのREFS1,0ﾋﾞｯﾄの変更による)A/D変換器基準電圧変更後の最初の差動入力変換に対して、同じ設定(安定)時間が厳守されるべきです。
(入力信号の)設定時間と利得段帯域は高速A/D変換動作(ADHSM)ﾋﾞｯﾄ設定と無関係です。
JTAGｲﾝﾀｰﾌｪｰｽ許可の場合、PORTF7～4のADC入力ﾁｬﾈﾙ機能が無効にされます(51頁の表11-13.を参照)。(訳注:本行追加)

24.5.1. A/D入力ﾁｬﾈﾙ
ﾁｬﾈﾙ選択を変更する時に使用者は正しいﾁｬﾈﾙが選択されることを保証するために次の指針を守るべきです。
● 単独変換動作では常に変換を始める前にﾁｬﾈﾙを選択してください。ﾁｬﾈﾙ選択はADSCへの1書き込み後、1変換ｸﾛｯｸ周期で変更されるかもしれません。とは言え、最も簡単な方法はﾁｬﾈﾙ選択を変更する前に変換が完了するまで待つことです。
● 連続変換動作では常に最初の変換を始める前にﾁｬﾈﾙを選択してください。ﾁｬﾈﾙ選択はADSCへの1書き込み後、1変換ｸﾛｯｸ周期で変更されるかもしれません。とは言え、最も簡単な方法は最初の変換が完了するまで待ち、その後にﾁｬﾈﾙ選択を変更することです。既に次の変換が自動的に開始されているので、次の結果は直前のﾁｬﾈﾙ選択を反映します。それに続く変換は新しいﾁｬﾈﾙ選択を反映します。
差動増幅ﾁｬﾈﾙへ切り替える時に自動ｵﾌｾｯﾄ消去回路用の設定時間が必要なので、最初の変換結果は貧弱な正確さとなってしまう
かもしれません。使用者は最初の変換結果をなるべくなら無視すべきです。

24.5.2. A/D変換基準電圧
このA/D変換用の基準電圧(VREF)はA/D変換に対する変換範囲を示します。VREFを越えるｼﾝｸﾞﾙ ｴﾝﾄﾞ入力ﾁｬﾈﾙは$3FFで打ち切
るｺｰﾄﾞに帰着します。VREFはAVCC、内部2.56V基準電圧、外部AREFﾋﾟﾝのどれかとして選択できます。
AVCCは受動型ｽｨｯﾁを通してA/D変換部に接続されます。内部2.56V基準電圧は内蔵基準(ﾊﾞﾝﾄﾞｷﾞｬｯﾌﾟ)電圧(VBG)から内部増幅器を通して生成されます。どちらの場合でも外部AREFﾋﾟﾝは直接的にA/D変換部へ接続され、AREFﾋﾟﾝとGND間にｺﾝﾃﾞﾝｻを接続することにより、基準電圧は雑音耐性をより高められます。VREF(電圧)は高入力ｲﾝﾋﾟｰﾀﾞﾝｽ電圧計とAREFﾋﾟﾝで測定することもできます。VREFは高ｲﾝﾋﾟｰﾀﾞﾝｽ出力で、容量性負荷のみがｼｽﾃﾑ内で接続されるべきであることに注意してださい。
使用者がAREFﾋﾟﾝに接続された固定電圧源にするなら、この外部電圧がその他の内部基準電圧と短絡してしまうため、使用者はこの応用内で他の基準電圧選択を使ってはなりません。外部電圧がAREFﾋﾟﾝに印加されないなら、使用者は基準電圧選択として
AVCCと2.56V内部基準電圧間の切り替えができます。基準電圧源切り替え後の最初のA/D変換結果は不正確かもしれず、使用者はこの結果を破棄することが推奨されます。
差動入力ﾁｬﾈﾙが使われる場合、選択した基準電圧は253頁の表29-7.で示されるよりもAVCCに近くすべきではありません。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]198

24.6. 温度感知器
ATmega16U4/32U4はA/D変換器を通して値を読むことができるﾁｯﾌﾟ上の温度感知器を含みます。
温度測定はA/D変換器のｼﾝｸﾞﾙ ｴﾝﾄﾞ入力と対にされたﾁｯﾌﾟ上の温度感知器に基きます。A/D変換制御/状態ﾚｼﾞｽﾀB(ADCSRB)とA/D多重器選択ﾚｼﾞｽﾀ(ADMUX)のﾁｬﾈﾙ選択(MUX5～0)ﾋﾞｯﾄがこの温度感知器を許可します。温度感知器測定ではA/D変換基準元に対して2.56V内部基準電圧も選択されなければなりません。温度感知器が許可されると、A/D変換器は温度感知器上の電圧を測定するのに単独変換動作(ADATE=0)で使うことができます。
温度感知器とその駆動部はADCSRBとADMUXの値がA/D変換入力として温度感知器を選択する時に許可されます。この駆動部の伝播遅延は概ね2µsです。従って2回の逐次比較が必要とされます。正しい温度測定は2回目のそれです。
直前の変換中にADCSRBとADMUXを設定することにより、1変換に対してこのﾀｲﾐﾝｸﾞを減らすこともできます。実際に直前の変換開
始事象の開始直後にADCSRBとADMUXは温度感知器を選択するために設定することができ、その後、駆動部は温度感知器測定の採取/保持段階の2µs前には許可されます。

24.6.1. 感知器校正
感知器初期公差は大きい(±10℃)けれど、その特性は直線です。従って、応用が精度を必要とするなら、ﾌｧｰﾑｳｪｱは直接温度測定にこの感知器を使うのに校正段階を含めなければなりません。
この感知器の他の応用はOSCCALﾚｼﾞｽﾀ(20頁の「OSCCAL - 発振校正ﾚｼﾞｽﾀ」参照)を通して使用者によって周波数を調整することができる校正付き内蔵RC発振器に関係するかもしれません。製造中に2つの温度(許容誤差±10℃(注1)で+25℃と+85℃)で校正が行われます。各々の温度に於いて、温度感知器値(Ti)が測定されてEEPROM内に格納され(注2)、そしてOSCCAL校正値Oi (換言すると、正確な8MHz出力を持つためにこの温度でOSCCALﾚｼﾞｽﾀに設定されるべき値)が別のﾒﾓﾘ領域に格納されます。
これら4つの値と温度感知器の直線特性と内蔵RC発振器により、ﾌｧｰﾑｳｪｱは実行中に温度感知器測定の関数でRC発振器を容易に再校正することができます(注3)(応用記述がこの操作を記述します)。
図24-8. A/D変換でのT°測定の関数でのOSCCAL直線特性
OSCCAL
O2
O1

T1

T2

T(ADC)

注1: 製造中の校正温度が正確でない(±10℃)ので、温度感知器校正値は正確な温度測定を行うのに使うことができません。
注2: EESAVEﾋｭｰｽﾞが非ﾌﾟﾛｸﾞﾗﾑ(1)のままの場合、どのﾁｯﾌﾟ消去操作もEEPROM内に含まれる温度感知器校正値を解除することに注意してください。
注3: 温度の関数でのOSCCALのｿﾌﾄｳｪｱ再校正後の正確な結果は特性付けによって与えられます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

199

24.7. 雑音低減機能
このA/D変換部はCPUｺｱと他の周辺I/Oが誘導した雑音を削減するために休止形態中の変換を可能にする雑音低減機能が特徴です。この機能はA/D変換雑音低減動作とｱｲﾄﾞﾙ動作で使えます。この機能を使うには次の手順が使われるべきです。
1. A/D変換部が許可(ADEN=1)され、変換中でない(ADSC=0)ことを確認してください。単独変換動作が選択(ADATE=0)され、且つA/D変換完了割り込みが許可(ADIE=1)されていなければなりません。
2. A/D変換雑音低減(またはｱｲﾄﾞﾙ)動作に移行してください。一旦CPUが停止されてしまうと、A/D変換部は変換を始めます。
3. A/D変換完了前に他の割り込みが起こらなければ、A/D変換完了割り込みはCPUを起動してA/D変換完了割り込みﾙｰﾁﾝを実行します。A/D変換完了前に他の割り込みがCPUを起動すると、その割り込みが実行され、A/D変換完了割り込み要求はA/D変換完了時に生成されます。CPUは新規SLEEP命令が実行されるまで活動動作に留まります。
ｱｲﾄﾞﾙ動作とA/D変換雑音低減動作を除く他の休止形態へ移行する時にA/D変換部が自動的にOFFへ切り替えられないことに注意してください。使用者は余分な消費電力を避けるため、このような休止形態へ移行する前にADENへ0を書くことが推奨されます。
このような休止形態でA/D変換が許可され、使用者が差動変換の実行を欲する場合、使用者は有効な結果を得るための延長した(初回)変換を指示するために、休止形態から起動後にA/D変換部をOFF→ON(ADEN=0→1)に切り替えることが推奨されます。

24.7.1. ｱﾅﾛｸﾞ入力回路
ｼﾝｸﾞﾙ ｴﾝﾄﾞ入力ﾁｬﾈﾙのｱﾅﾛｸﾞ回路は図24-9.で図示されます。ADCnに印加したｱﾅﾛｸﾞ(信号)源はそのﾁｬﾈﾙがADC入力として選択されているかどうかに拘らず、ﾋﾟﾝ容量とそのﾋﾟﾝの漏れ電流に左右されます。そのﾁｬﾈﾙが選択されると、(ｱﾅﾛｸﾞ信号)源は直列抵抗(入力経路の合成抵抗)を通してS/Hｺﾝﾃﾞﾝｻを駆動しなければなりません。
A/D変換部は概ね10kΩ若しくはそれ以下の出力ｲﾝﾋﾟｰﾀﾞﾝｽのｱﾅﾛｸﾞ信号用に最適化 図24-9. ｱﾅﾛｸﾞ入力回路
されています。このような(ｱﾅﾛｸﾞ信号)源が使われるなら、採取時間は無視してもよいで
VCC
しょう。より高いｲﾝﾋﾟｰﾀﾞﾝｽの(ｱﾅﾛｸﾞ信号)源が使われる場合、採取時間は広範囲に変化し得るS/Hｺﾝﾃﾞﾝｻを充電するために(ｱﾅﾛｸﾞ信号)源がどれくらいの時間を必要とする
IIH
かに依存します。必要とされるS/Hｺﾝﾃﾞﾝｻへの充放電を最小とするため、使用者は緩1～100kΩ
やかに変化する低ｲﾝﾋﾟｰﾀﾞﾝｽ(ｱﾅﾛｸﾞ信号)源だけを使うことが推奨されます。
ADCn
差動増幅ﾁｬﾈﾙが使われる場合、この入力回路は多少違って見えるので、数100kΩまCS/H=14pF
たはそれ以下の供給元ｲﾝﾋﾟｰﾀﾞﾝｽが推奨されます。
IIL
特定できない信号の渦からの歪を避けるために、どのﾁｬﾈﾙに対してもﾅｲｷｽﾄ周波数
VCC/2( fADC/2)よりも高い信号成分が存在すべきではありません。使用者はADC入力として信号を印加する前に低域通過濾波器(ﾛｰﾊﾟｽ ﾌｨﾙﾀ)で高い周波数成分を取り除くことが推奨されます。

24.7.2. ｱﾅﾛｸﾞ雑音低減技術

44

43

AVCC
GND

42 AREF

41 ADC0 (PF0)40 ADC1 (PF1)39 ADC4 (PF4)38 ADC5 (PF5)37 ADC6 (PF6)

GND
VCC

36 ADC7 (PF7)3534

ﾃﾞﾊﾞｲｽ内外のﾃﾞｼﾞﾀﾙ回路がｱﾅﾛｸﾞ測定の精度に影響を及ぼすかもしれないEMIを発生します。精密な変換精度が必要な場合、次の技法を適用することによも雑音ﾚﾍﾞﾙを低減できます。
1. ｱﾅﾛｸﾞ信号経路を可能な限り最短にしてください。ｱﾅﾛｸﾞ信号線 図24-10. A/D変換部電源接続
がｱﾅﾛｸﾞGND面上を走ることに注意し、高速切り替えﾃﾞｼﾞﾀﾙ信ATmega16U4/32U4号線から充分離すことを守ってください。
33
1 PE6 (AIN0)
ｱﾅﾛｸﾞ ｸﾞﾗﾝﾄﾞ面
2. ﾃﾞﾊﾞｲｽのAVCCﾋﾟﾝは図24-10.で示されるようにLC濾波器経由
でﾃﾞｼﾞﾀﾙ供給電圧(VCC)に接続されるべきです。
3. CPUからの誘導雑音を低減するためにA/D変換の雑音低減機
能を使ってください。
4. どれかのADCﾎﾟｰﾄ ﾋﾟﾝがﾃﾞｼﾞﾀﾙ出力として使われる場合、これらが変換進行中、切り替わらない事が重要です。
0.1
10µH(訳注) 図24-10.のﾋﾟﾝ名が一部省略されています。
注: 同じ回路がADC13～8側のAVCC濾波に使われるべきです。

24.7.3. ｵﾌｾｯﾄ補償の仕組み
利得段には差動測定のｵﾌｾｯﾄをできるだけ無効にする組み込みｵﾌｾｯﾄ補正回路があります。ｱﾅﾛｸﾞ経路内の残留ｵﾌｾｯﾄは両差動入力に対して同じﾁｬﾈﾙを選択することによって直接的に計測できます。その後にこの残留ｵﾌｾｯﾄは計測結果からｿﾌﾄｳｪｱで減算できます。このｵﾌｾｯﾄ補正に基いたｿﾌﾄｳｪｱ手法の使用はどのﾁｬﾈﾙのｵﾌｾｯﾄも1LSB以下に減少できます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]200

24.7.4. A/D変換の精度定義

換

果

果

結

換

結

換

変

の
変

の

想

際

理

果
結
換
の
変
想

INL
果

結

果

結

換

理

果
結
換
の
変
想
理

図24-14. 微分非直線性誤差
変換結果コード

絶対精度
補正しない全ての遷移点に於いて理想遷移点と比較した最大偏差です。これは、ｵﾌｾｯﾄ誤差、利得誤差、差動誤差、非直線誤差の影響の合成です。理想値は±0.5LSBです。
●

実

ｵﾌ 理
ｾｯ 想
ﾄ誤 の
実 差 変
換
際
結
の
果
変
換
結
果

図24-13. 積分非直線性誤差
変換結果コード

実際のｺｰﾄﾞの幅(隣接する2つの遷移点間)に於いて理想ｺｰ
ﾄﾞ幅(1LSB)と比較した最大偏差です。理想値は0LSBです。
● 量子化誤差
有限数のｺｰﾄﾞで入力電圧を量子化するため、1LSB幅となる
入力電圧範囲は同じ値のｺｰﾄﾞになります。この値は常に±0.5LSBです。

変換結果コード

変換結果コード

ｼﾝｸﾞﾙ ｴﾝﾄﾞ入力電圧のnﾋﾞｯﾄA/D変換はGNDとVREF間を2nで直線的に変換します。最低値ｺｰﾄﾞは0として読み、最高値ｺｰﾄﾞは2n-1として読みます。以下の各種ﾊﾟﾗﾒｰﾀは理想状態からの偏差を表します。
● ｵﾌｾｯﾄ誤差 - 図24-11.
図24-12. 利得誤差
図24-11. ｵﾌｾｯﾄ誤差
最初の遷移点($000から$001)に於いて理想遷移点(差0.5
利得誤差LSB)と比較した偏差です。理想値は0LSBです。
● 利得誤差 - 図24-12.
ｵﾌｾｯﾄ誤差補正後の最後の遷移点($3FEから$3FF)に於いて理想遷移点(最大差1.5LSB以下)と比較した偏差です。理
想値は0LSBです。
● 積分非直線性誤差 (INL) - 図24-13.
ｵﾌｾｯﾄ誤差と利得誤差補正後の全ての遷移点に於いて理想遷移点と比較した最大偏差です。理想値は0LSBです。
ｱﾅﾛｸﾞ
VREF
ｱﾅﾛｸﾞ
VREF
● 微分非直線性誤差 (DNL) - 図24-14.
入力電圧
入力電圧

変

1LSB

の変

際
実
ｱﾅﾛｸﾞ入力電圧 VREF

の

際

実

DNL
ｱﾅﾛｸﾞ入力電圧24.8. A/D変換の結果
変換完了(ADIF=1)後、変換結果はA/Dﾃﾞｰﾀ ﾚｼﾞｽﾀ(ADCH, ADCL)で得られます。
ｼﾝｸﾞﾙ ｴﾝﾄﾞ入力変換の結果は右式で示されます。V INは選択した入力ﾋﾟﾝの電圧で、VIN×1023
ADC =VREFは選択した基準電圧です(202頁の表24-3.と表24-4.をご覧ください)。$000はｱﾅﾛ
VREF
ｸﾞGNDを表し、$3FFは選択した基準電圧-1LSBを表します。
差動ﾁｬﾈﾙが使われると、その結果は右式で示されます。V POSは非反転入力ﾋﾟﾝの電(VPOS－VNEG)×GAIN×512
圧、VNEGは反転入力ﾋﾟﾝの電圧、GAINは選択した倍率、VREFは選択した基準電圧で ADC =VREF
す。この結果は-512($200)～+511 ($1FF)の2の補数形式で示されます。使用者が結果の符号を素早く検査したいなら、結果のMSB(ADCHのADC9)を読むことで充分なことに注目してください。このﾋﾞｯﾄが1ならばその結
果は－、0ならばその結果は＋です。図24-15.は差動入力範囲のｺｰﾄﾞ化を示します。
表24-2.は差動入力ﾁｬﾈﾙの組(ADCn-ADCm)が基準電圧(VREF)で選択された場合の出力ｺｰﾄﾞの結果を示します。
図24-15. 差動入力計測範囲

～
1
0
-1
～

$001
$000
$3FF
～

VADCm+(1/512)VREF/GAIN
VADCm
VADCm-(1/512)VREF/GAIN～～

対応する10進値
511
511
510

～

表24-2. 入力電圧と出力ｺｰﾄﾞの関係
VADCn
読み出しｺｰﾄﾞ
VADCm+VREF/GAIN$1FF
511
VADCm+( /512)VREF/GAIN$1FF
VADCm+(510/512)VREF/GAIN$1FE

VADCm-(511/512)VREF/GAIN
VADCm-VREF/GAIN

$201
$200

-511
-512

$1FF

変換
結果
-VREF/GAIN ｺｰﾄﾞ
差動入力
$000
0 $3FF
電圧(V)
VREF/GAIN$200

例: ADMUX=$E9,MUX5=0(ADC1とADC0差動10倍入力、VREF=2.56V、左揃え)で、ADC1が300mV、ADC0が500mVの場合、
A/D変換値= 512×10×(300-500)÷2560=-400=$270
従って、ADCH=$9C, ADCL=$00、ADLAR=0なら、ADCH=$02, ADCL=$70。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]201

24.9. A/D変換用ﾚｼﾞｽﾀ
24.9.1. ADMUX - A/D多重器選択ﾚｼﾞｽﾀ (ADC Multiplexer Select Register)
ﾋﾞｯﾄ
($7C)
Read/Write
初期値

7

6

5

4

3

2

1

0

REFS1

REFS0

ADLAR

MUX4

MUX3

MUX2

MUX1

MUX0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

ADMUX

● ﾋﾞｯﾄ7,6 - REFS1,0 : 基準電圧選択 (Reference Select Bits 1, 0)

これらのﾋﾞｯﾄは表24-3.で示されるようにA/D変換器の基準電圧を選びます。これらのﾋﾞｯﾄが変換中に変更されると、その変更は変換が完了する(ADCSRAのADIF=1)まで実施しません。AREFﾋﾟﾝに外部基準電圧が印加される場合、内部の基準電圧が使われてはな
りません。
表24-3. A/D変換部の基準電圧選択
REFS1
REFS0
基準電圧
AREFﾋﾟﾝの外部基準電圧 (AVCCと内部基準電圧は切り離されます。)
0001
AVCC (内部基準電圧は切り離され、AREFにﾃﾞｶｯﾌﾟ用ｺﾝﾃﾞﾝｻが接続できます。)
1
0
(予約)
1
1
内部2.56V基準電圧 (AVCCは切り離され、AREFにﾃﾞｶｯﾌﾟ用ｺﾝﾃﾞﾝｻが接続できます。)● ﾋﾞｯﾄ5 - ADLAR : 左揃え選択 (ADC Left Adjust Result)

ADLARﾋﾞｯﾄはA/Dﾃﾞｰﾀ ﾚｼﾞｽﾀ内の変換結果の配置に影響を及ぼします。結果を左揃えにするにはADLARに1を書いてください。さもなければ結果は右揃えです。ADLARﾋﾞｯﾄの変更はどんな進行中の変換にも拘らず、直ちにA/Dﾃﾞｰﾀ ﾚｼﾞｽﾀの内容に影響を及ぼします。このﾋﾞｯﾄの完全な記述については204頁の「A/Dﾃﾞｰﾀ ﾚｼﾞｽﾀ」をご覧ください。
● ﾋﾞｯﾄ4～0 - MUX4～0 : A/Dﾁｬﾈﾙ選択 (Analog Channel Select Bits 4～0)

これらのﾋﾞｯﾄの値はA/D変換制御/状態ﾚｼﾞｽﾀB(ADCSRB)のMUX5と組み合わされ、A/D変換器にどのｱﾅﾛｸﾞ入力の組み合わせが接続されるかを選びます。これらのﾋﾞｯﾄは表で示されるように差動ﾁｬﾈﾙに対する利得も選びます。これらのﾋﾞｯﾄが変換中に変更される場合、その変更は変換が完了する(ADCSR AのADIF=1)まで実施しません。

差動入力

シングルエンド入力

差動入力

S
S
差動入力時
/ MUX5～0/
非反転 反転利得 D
D
1 01100 ADC4 ADC1 ×10
1 01101 ADC5 ADC1 ×10
1 01110 ADC6 ADC1 ×10
1 01111 ADC7 ADC1 ×10
1 10000 ADC4 ADC0 ×40
1 10001 ADC5 ADC0 ×40
1 10010 ADC6 ADC0 ×40
1 10011 ADC7 ADC0 ×40
1 10100 ADC4 ADC1 ×40
1 10101 ADC5 ADC1 ×40
1 10110 ADC6 ADC1 ×40
1 10111 ADC7 ADC1 ×40
1 11000 ADC4 ADC0 ×200
1 11001 ADC5 ADC0 ×200
1 11010 ADC6 ADC0 ×200
1 11011 ADC7 ADC0 ×200
D 1 11100 ADC4 ADC1 ×200
S 1 11101 ADC5 ADC1 ×200
1 11110 ADC6 ADC1 ×200
1 11111 ADC7 ADC1 ×200
差動入力

シングルエンド入力

差動入力

表24-4. ｱﾅﾛｸﾞ入力ﾁｬﾈﾙと利得の選択
S
差動入力時
差動入力時
/ MUX5～0
MUX5～0
非反転 反転非反転 反転利得
利得 D
0 00000
ADC0
0 10110 ADC6 ADC1
×1
0 00001
ADC1
0 10111 ADC7 ADC1
×1
0 00010(利用不可)
0 11000(利用不可)
0 00011(利用不可)
0 11001(利用不可)
0 00100
ADC4
0 11010(利用不可)
0 00101
ADC5
0 11011(利用不可)
0 00110ADC60 11100(利用不可)
0 00111ADC7
0 11101(利用不可)
1.1V(VBG)
0 01000(利用不可)
0 111100 01001 ADC1 ADC0 ×10
0 111110V(GND)
0 01010(利用不可)
1 00000
ADC8
0 01011 ADC1 ADC0 ×200
1 00001
ADC9
0 01100(利用不可)
1 00010ADC100 01101(利用不可)
1 00011ADC110 01110(利用不可)
1 00100
ADC12
0 01111(利用不可)
1 00101
ADC13
0 10000 ADC0 ADC1×1
1 00110 ADC1 ADC0 ×40
0 10001(利用不可)
1 00111
温度感知器
0 10010(利用不可)
1 01000 ADC4 ADC0 ×10
0 10011(利用不可)
1 01001 ADC5 ADC0 ×10
0 10100 ADC4 ADC1
×1
1 01010 ADC6 ADC0 ×10
0 10101 ADC5 ADC1
×1
1 01011 ADC7 ADC0 ×10
注: MUX5ﾋﾞｯﾄはADCSRBﾚｼﾞｽﾀの一部になります。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]202

24.9.2. ADCSRA - A/D変換 制御/状態ﾚｼﾞｽﾀA (ADC Control and Status Register A)
ﾋﾞｯﾄ
($7A)
Read/Write
初期値

7

6

5

4

3

2

1

0

ADEN

ADSC

ADATE

ADIF

ADIE

ADPS2

ADPS1

ADPS0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

ADCSRA● ﾋﾞｯﾄ7 - ADEN : A/D許可 (ADC Enable)

このﾋﾞｯﾄに1を書くことがA/D変換部(動作)を許可します。0を書くことによってA/D変換部は(電源が)OFFにされます。変換が進行中にA/D変換部をOFFにすることはその変換を(途中)終了します。
● ﾋﾞｯﾄ6 - ADSC : A/D変換開始 (ADC Start Conversion)

単独変換動作で各変換を始めるにはこのﾋﾞｯﾄへ1を書いてください。連続変換動作で最初の変換を始めるにはこのﾋﾞｯﾄへ1を書いてください。A/D変換部が許可される(ADEN=1)と同時にADSCが書かれるか、またはA/D変換部が許可されてしまった後にADSCが書かれた後の初回変換は、通常の13に代わって25変換ｸﾛｯｸ周期で行います。この初回変換はA/D変換部の初期化を実行します。
ADSCは変換が進行中である限り1として読めます。変換が完了すると0に戻ります。このﾋﾞｯﾄへの0書き込みは無効です。
● ﾋﾞｯﾄ5 - ADATE : A/D変換自動起動許可 (ADC Auto Trigger Enable)

このﾋﾞｯﾄが1を書かれると、A/D変換の自動起動が許可されます。A/D変換器は選択した起動信号の上昇端で変換を開始します。この起動元はA/D変換制御/状態ﾚｼﾞｽﾀB(ADCSRB)のA/D変換起動要因選択(ADTS3～0)ﾋﾞｯﾄ設定によって選択されます。
● ﾋﾞｯﾄ4 - ADIF : A/D変換完了割り込み要求ﾌﾗｸﾞ (ADC Interrupt Flag)

A/D変換が完了し、A/Dﾃﾞｰﾀ ﾚｼﾞｽﾀが更新されると、このﾌﾗｸﾞが設定(1)されます。ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄとA/D変換完了割り込み許可(ADIE)ﾋﾞｯﾄが設定(1)されていれば、A/D変換完了割り込みが実行されます。対応する割り込み処理ﾍﾞｸ
ﾀを実行する時にADIFはﾊｰﾄﾞｳｪｱによって解除(0)されます。代わりにこのﾌﾗｸﾞに論理1を書くことによってもADIFは解除(0)されます。
ADCSRAで読み-変更-書き(ﾘｰﾄﾞ ﾓﾃﾞｨﾌｧｲ ﾗｲﾄ)を行うと、保留中の割り込みが禁止され得ることに注意してください。これはSBI,CBI命令が使われる場合にも適用されます(訳注:ｱﾄﾞﾚｽ範囲外のため、本行は不適切です)。
● ﾋﾞｯﾄ3 - ADIE : A/D変換完了割り込み許可 (ADC Interrupt Enable)

このﾋﾞｯﾄが1を書かれ、SREGの全割り込み許可(I)ﾋﾞｯﾄが設定(1)されていると、A/D変換完了割り込みが活性に(許可)されます。このﾋﾞｯﾄが解除(0)されると、この割り込みは禁止されます(訳注:共通性のため本行追加)。
● ﾋﾞｯﾄ2～0 - ADPS2～0 : A/D変換ｸﾛｯｸ選択 (ADC Prescaler Select Bits)

これらのﾋﾞｯﾄはXTAL(ｼｽﾃﾑ)周波数とA/D変換部への入力ｸﾛｯｸ間の分周値を決めます。

表24-5. A/D変換ｸﾛｯｸ選択 (CK=ｼｽﾃﾑ ｸﾛｯｸ)
ADPS2
0
0
ADPS1
0
0
ADPS0
0
1
CK/2
A/D変換ｸﾛｯｸ
CK/2

0
1
0
CK/4

0
1
1
CK/8

1
0
0
CK/16

1
0
1
CK/32

1
1
0
CK/64

1
1
1
CK/12824.9.3. ADCSRB - A/D変換 制御/状態ﾚｼﾞｽﾀB (ADC Control and Status Register B)
ﾋﾞｯﾄ
($7B)
Read/Write
初期値

7

6

5

4

3

2

1

0

ADHSM

ACME

MUX5

-

ADTS3

ADTS2

ADTS1

ADTS0

R/W
0

R/W
0

R/W
0

R
0

R/W
0

R/W
0

R/W
0

R/W
0

ADCSRB● ﾋﾞｯﾄ7 - ADHSM : 高速A/D変換動作 (ADC High Speed Mode)

このﾋﾞｯﾄへの1書き込みは高速A/D変換動作を許可します。この動作は、より高い電力消費の犠牲で、より高い変換速度を可能にします。
● ﾋﾞｯﾄ5 - MUX5 : ｱﾅﾛｸﾞ ﾁｬﾈﾙ追加選択ﾋﾞｯﾄ (Analog Channel Additional Selection Bit)

このﾋﾞｯﾄはA/D変換器へ接続されるｱﾅﾛｸﾞ入力の(差動増幅器構成設定を含む)組み合わせを選択する、ADCSRBとA/D多重器選
択(ADMUX)ﾚｼﾞｽﾀのMUX5～0ﾋﾞｯﾄの一部になります。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]203

● ﾋﾞｯﾄ3～0 - ADTS3～0 : A/D変換自動起動要因選択 (ADC Auto Trigger Source)

A/D変換制御/状態ﾚｼﾞｽﾀA(ADCSRA)のA/D変換自動起動許可(ADATE)ﾋﾞｯﾄが1を書かれると、これらのﾋﾞｯﾄ値はどの起動元がA/D変換を起動するのかを選択します。ADATEが解除(0)されると、ADTS3～0設定は無効です。変換は選択した割り込みﾌﾗｸﾞの上昇端によって起動されます。解除(0)されている起動元から設定(1)されている起動元への切り替えが、起動信号上に上昇端を生成することに注意してください。ADCSRAのA/D許可(ADEN)ﾋﾞｯﾄが設定(1)されているなら、これが変換を開始させます。連続変換動作(ADTS3～0=0)への切り替えは、例えA/D変換完了割り込み要求ﾌﾗｸﾞが設定(1)されていても、起動事象を引き起こしません。
表24-6. A/D変換自動起動元選択
ADTS3 ADTS2 ADTS1 ADTS0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1

起動元
連続変換動作
ｱﾅﾛｸﾞ比較器
外部割り込み要求0
ﾀｲﾏ/ｶｳﾝﾀ0比較A一致
ﾀｲﾏ/ｶｳﾝﾀ0溢れ
ﾀｲﾏ/ｶｳﾝﾀ1比較B一致
ﾀｲﾏ/ｶｳﾝﾀ1溢れ
ﾀｲﾏ/ｶｳﾝﾀ1捕獲要求
ﾀｲﾏ/ｶｳﾝﾀ4溢れ
ﾀｲﾏ/ｶｳﾝﾀ4比較A一致
ﾀｲﾏ/ｶｳﾝﾀ4比較B一致
ﾀｲﾏ/ｶｳﾝﾀ4比較D一致

24.9.4. ADCH,ADCL - A/Dﾃﾞｰﾀ ﾚｼﾞｽﾀ (ADC Data Register)
ADLAR=0時
ﾋﾞｯﾄ($79)
Read/Write
初期値
ﾋﾞｯﾄ
($78)
Read/Write
初期値

15

14

13

12

11

10

9

8

-

-

-

-

-

-

ADC9

ADC8

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

7

6

5

4

3

2

1

0

ADC7

ADC6

ADC5

ADC4

ADC3

ADC2

ADC1

ADC0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

ADLAR=1時
15

14

13

12

11

10

9

8

ADC9

ADC8

ADC7

ADC6

ADC5

ADC4

ADC3

ADC2

7

6

5

4

3

2

1

0

ADC1

ADC0

-

-

-

-

-

-

ADCH

ADCL

ADCH
ADCL

A/D変換が完了すると、その結果がこれらの2ﾚｼﾞｽﾀで得られます。差動ﾁｬﾈﾙが使われると、結果は2の補数形式で表されます。
ADCLが読まれると、A/Dﾃﾞｰﾀ ﾚｼﾞｽﾀはADCHが読まれるまで更新されません。従ってこの結果が左揃えで、且つ8ﾋﾞｯﾄ(差動入力ﾁｬ
ﾈﾙについては符号+7ﾋﾞｯﾄ)を越える精度が必要とされないなら、ADCHを読むことで用が足ります。さもなければADCLが初めに、その後にADCHが読まれなければなりません。
A/D多重器選択ﾚｼﾞｽﾀ(ADMUX)の左揃え選択(ADLAR)ﾋﾞｯﾄとA/Dﾁｬﾈﾙ選択(MUX4～0)ﾋﾞｯﾄとA/D制御/状態ﾚｼﾞｽﾀB(ADCSRB)のMUX5ﾋﾞｯﾄはこのﾚｼﾞｽﾀから結果を読む方法に影響を及ぼします。ADLARが設定(1)ならば結果は左揃えにされます。ADLARが解除(0:既定)ならば結果は右揃えにされます。
● ADC9～0 : A/D変換結果 (ADC Conversion result)

これらのﾋﾞｯﾄは201頁の「A/D変換の結果」で詳述されるように変換での結果を表します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]204

24.9.5. DIDR0 - ﾃﾞｼﾞﾀﾙ入力禁止ﾚｼﾞｽﾀ0 (Digital Input Disable Register 0)
ﾋﾞｯﾄ
($7E)
Read/Write
初期値

7

6

5

4

3

2

1

0

ADC7D

ADC6D

ADC5D

ADC4D

-

-

ADC1D

ADC0D

R/W
0

R/W
0

R/W
0

R/W
0

R
0

R
0

R/W
0

R/W
0

DIDR0

● ﾋﾞｯﾄ7～4,1,0 - ADC7D～ADC4D,ADC1D,ADC0D : ADC7～4,1,0 ﾃﾞｼﾞﾀﾙ入力禁止 (ADC7～4,1,0 Digital Input Disable)

このﾋﾞｯﾄが論理1を書かれると、対応するADCnﾋﾟﾝのﾃﾞｼﾞﾀﾙ入力緩衝部が禁止されます。このﾋﾞｯﾄが設定(1)されると、対応するﾎﾟｰﾄ
入力ﾚｼﾞｽﾀのﾋﾞｯﾄ(PINx)は常に0として読みます。ｱﾅﾛｸﾞ信号がADC7～4,1,0ﾋﾟﾝに印加され、そのﾋﾟﾝからのﾃﾞｼﾞﾀﾙ入力が必要とされない時にﾃﾞｼﾞﾀﾙ入力緩衝部での消費電力を削減するため、そのﾋﾞｯﾄは論理1を書かれるべきです。

24.9.6. DIDR2 - ﾃﾞｼﾞﾀﾙ入力禁止ﾚｼﾞｽﾀ2 (Digital Input Disable Register 2)
ﾋﾞｯﾄ
($7D)
Read/Write
初期値

7

6

-

-

R
0

R
0

5

4

ADC13D ADC12D
R/W
0

R/W
0

3

2

1

0

ADC1D

ADC10D

ADC9D

ADC8D

R/W
0

R/W
0

R/W
0

R/W
0

DIDR2

● ﾋﾞｯﾄ5～0 - ADC13D～ADC8D : ADC13～8 ﾃﾞｼﾞﾀﾙ入力禁止 (ADC13～8 Digital Input Disable)

このﾋﾞｯﾄが論理1を書かれると、対応するADCnﾋﾟﾝのﾃﾞｼﾞﾀﾙ入力緩衝部が禁止されます。このﾋﾞｯﾄが設定(1)されると、対応するﾎﾟｰﾄ
入力ﾚｼﾞｽﾀのﾋﾞｯﾄ(PINx)は常に0として読みます。ｱﾅﾛｸﾞ信号がADC13～8ﾋﾟﾝに印加され、そのﾋﾟﾝからのﾃﾞｼﾞﾀﾙ入力が必要とされない時にﾃﾞｼﾞﾀﾙ入力緩衝部での消費電力を削減するため、そのﾋﾞｯﾄは論理1を書かれるべきです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

205

25. JTAGｲﾝﾀｰﾌｪｰｽと内蔵ﾃﾞﾊﾞｯｸﾞ機能
25.1. 特徴
・ JTAGｲﾝﾀｰﾌｪｰｽ (IEEE標準1149.1準拠)
・ JTAG規格に従った境界走査(Boundary-Scan)能力・ ﾃﾞﾊﾞｯｶﾞは各部のｱｸｾｽが可能- 全ての内蔵周辺機能- 内部及び外部RAM- 内蔵ﾚｼﾞｽﾀ ﾌｧｲﾙ- ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ
- EEPROM及びﾌﾗｯｼｭ ﾒﾓﾘ
・ 中断(BREAK)によって支援される広範囲な内蔵ﾃﾞﾊﾞｯｸﾞ機能- AVRのBREAK命令- ﾌﾟﾛｸﾞﾗﾑの流れ変更での停止- 1命令実行(ｼﾝｸﾞﾙ ｽﾃｯﾌﾟ)停止- ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ上の単一ｱﾄﾞﾚｽまたはｱﾄﾞﾚｽ範囲による中断点(ﾌﾞﾚｰｸﾎﾟｲﾝﾄ)- ﾃﾞｰﾀ ﾒﾓﾘ上の単一ｱﾄﾞﾚｽまたはｱﾄﾞﾚｽ範囲による中断点
・ JTAGｲﾝﾀｰﾌｪｰｽを介してのﾌﾗｯｼｭ ﾒﾓﾘ、EEPROM、ﾋｭｰｽﾞ ﾋﾞｯﾄ、施錠ﾋﾞｯﾄの読み書き(ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ)・ AVR Studioによる内蔵ﾃﾞﾊﾞｯｸﾞ機能の支援

25.2. 概要
AVRのIEEE標準1149.1準拠JTAGｲﾝﾀｰﾌｪｰｽは以下について使えます。
● JTAG境界走査(Boudary-Scan)能力による基板などの試験● 不揮発性ﾒﾓﾘ、ﾋｭｰｽﾞ ﾋﾞｯﾄ、施錠ﾋﾞｯﾄの読み書き(ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ)● 内蔵ﾃﾞﾊﾞｯｸﾞ機能による実装ﾃﾞﾊﾞｯｸﾞ
簡単な記述は次節で与えられます。JTAGｲﾝﾀｰﾌｪｰｽ経由のﾌﾟﾛｸﾞﾗﾐﾝｸﾞと境界走査(Boundary-Scan)ﾁｪｰﾝに関する詳細な記述は、各々241頁の「JTAGｲﾝﾀｰﾌｪｰｽ経由のﾌﾟﾛｸﾞﾗﾐﾝｸﾞ」と210頁の「IEEE 1149.1(JTAG)境界走査(Boundary-Scan)」で得られます。内蔵ﾃﾞﾊﾞｯｸﾞ機能の支援は独自JTAG命令で考慮されており、Atmelと選ばれた業者のみに配布されます。
図27-1.はJTAGｲﾝﾀｰﾌｪｰｽと内蔵ﾃﾞﾊﾞｯｸﾞ機能の構成図を示します。TAP(検査入出力ﾎﾟｰﾄ)制御器はTMSとTCKによって制御される順次回路です。TAP制御器はTDI入力とTDO出力間の走査ﾁｪｰﾝ(移動ﾚｼﾞｽﾀ接続)として、JTAG命令ﾚｼﾞｽﾀまたは各種ﾃﾞｰﾀ ﾚｼﾞｽﾀの1つのどれかを選びます。JTAG命令ﾚｼﾞｽﾀはﾃﾞｰﾀ ﾚｼﾞｽﾀの動きを制御するJTAG命令を保持します。
ﾃﾞﾊﾞｲｽ識別(Identification)ﾚｼﾞｽﾀ、迂回(Bypass)ﾚｼﾞｽﾀ、境界走査ﾁｪｰﾝ(Boundary-Scan chain)の各ﾃﾞｰﾀ ﾚｼﾞｽﾀは基板段階の試験に使われます。(実際には現実と仮想の各種ﾃﾞｰﾀ ﾚｼﾞｽﾀで構成する)JTAGﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ｲﾝﾀｰﾌｪｰｽはJTAGｲﾝﾀｰﾌｪｰｽ経由での直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞに使われます。内部走査ﾁｪｰﾝ(Scan chain)と中断点(ﾌﾞﾚｰｸﾎﾟｲﾝﾄ)走査ﾁｪｰﾝは内部ﾃﾞﾊﾞｯｸﾞ機能だけで使われます。
図25-1. JTAGｲﾝﾀｰﾌｪｰｽと内蔵ﾃﾞﾊﾞｯｸﾞ機能の構成図
ﾎﾟｰﾄA

～

ﾃﾞﾊﾞｲｽ範囲
境界走査ﾁｪｰﾝ(Boundary-Scan chain)
TDI
TDO
TCK
TMS

TAP
制御器

JTAG
ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
ｲﾝﾀｰﾌｪｰｽ

AVR CPU
命令ﾚｼﾞｽﾀﾃﾞﾊﾞｲｽ識別ﾚｼﾞｽﾀ
多重器

迂回ﾚｼﾞｽﾀ

ﾌﾗｯｼｭ
ﾒﾓﾘ

ｱﾄﾞﾚｽ
ﾃﾞｰﾀ

中断点部

内部走査
ﾁｪｰﾝ

ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ
命令

順序制御部
ﾃﾞｼﾞﾀﾙ周辺部

中断点
走査ﾁｪｰﾝ

内蔵
ﾃﾞﾊﾞｯｸﾞ機能
制御/状態

JTAG/AVRｺｱ
間通信
ｲﾝﾀｰﾌｪｰｽ

ｱﾅﾛｸﾞ
周辺部

ｱﾄﾞﾚｽ復号器
制御/ｸﾛｯｸ信号
ﾎﾟｰﾄB～

ｱﾅﾛｸﾞ入力

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]206

25.3. 検査入出力ﾎﾟｰﾄ (TAP:Test Access Port)
JTAGｲﾝﾀｰﾌｪｰｽはAVRの4つのﾋﾟﾝを通してｱｸｾｽされます。JTAG用語ではこれらのﾋﾟﾝが検査入出力ﾎﾟｰﾄ(TAP)を構成します。
● TMS : 検査種別選択。このﾋﾟﾝはTAP制御器順次回路を通しての指示に使われます。
● TCK : 検査ｸﾛｯｸ。JTAG操作はTCKに同期します。
● TDI: 検査ﾃﾞｰﾀ入力。命令ﾚｼﾞｽﾀまたはﾃﾞｰﾀ ﾚｼﾞｽﾀ(走査ﾁｪｰﾝ)内に移されるべき直列入力ﾃﾞｰﾀです。
● TDO : 検査ﾃﾞｰﾀ出力。命令ﾚｼﾞｽﾀまたはﾃﾞｰﾀ ﾚｼﾞｽﾀからの直列出力ﾃﾞｰﾀです。
IEEE標準1149.1では任意TAP信号の検査ﾘｾｯﾄ(TRST)も記載されていますが、この信号は提供されません。
JTAGENﾋｭｰｽﾞが非ﾌﾟﾛｸﾞﾗﾑ(1)の時にこれら4つのTAPﾋﾟﾝは標準ﾎﾟｰﾄ ﾋﾟﾝで、TAP制御器はﾘｾｯﾄです。ﾌﾟﾛｸﾞﾗﾑ(0)され、MCU制御ﾚ
ｼﾞｽﾀ(MCUCR)のJTAGｲﾝﾀｰﾌｪｰｽ禁止(JTD)ﾋﾞｯﾄが解除(0)されると、TAP信号入力は内部的にHighへ引かれ、JTAGは境界走査(Boundary-Scan)とﾌﾟﾛｸﾞﾗﾐﾝｸﾞに関して許可されます。このﾃﾞﾊﾞｲｽはこのﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されて出荷されます。
内蔵ﾃﾞﾊﾞｯｸﾞ機能ではJTAGｲﾝﾀｰﾌｪｰｽ ﾋﾟﾝに加え、外部ﾘｾｯﾄ元が検知できるため、RESETﾋﾟﾝがﾃﾞﾊﾞｯｶﾞによって監視されます。応用でﾘｾｯﾄ信号線にｵｰﾌﾟﾝ ｺﾚｸﾀ(ﾄﾞﾚｲﾝ)だけが使われるとすれば、ﾃﾞﾊﾞｯｶﾞは全ｼｽﾃﾑをﾘｾｯﾄするためにRESETﾋﾟﾝをLowにすることもできます。

25.4. TAP制御器
TAP制御器は境界走査(Boundary-Scan)回路、JTAGﾌﾟﾛｸﾞﾗﾐﾝｸﾞ回路、内蔵ﾃﾞﾊﾞｯｸﾞ機能の働きを制御する16段の無限順次回路です。図25-2.に描かれた状態遷移はTCKｸﾛｯｸの上昇時の(各状態遷移付近で示される)TMS上に存在する信号に依存します。電源投入ﾘｾｯﾄ後の初期状態は検査回
路ﾘｾｯﾄです。
この資料内の定義として、全ての移動ﾚｼﾞｽﾀに関して入出力ともLSBが最初に移動されます。
検査実行/ｱｲﾄﾞﾙ状態が現在の状態と仮定した、JTAGｲﾝﾀｰﾌｪｰｽを使うための典型的な手順を次に示します。

図25-2. TAP制御器状態遷移図1

検査回路ﾘｾｯﾄ01
0 検査実行/ｱｲﾄﾞﾙ

DR : ﾃﾞｰﾀ ﾚｼﾞｽﾀ1
DR走査選択
0
1
DR捕獲
0
DR移動
0
1
1
DR終了1
0
DR一時停止 0
1
0
DR終了2
1
DR更新
1
0

IR : 命令ﾚｼﾞｽﾀ1
IR走査選択
0
1
IR捕獲
0
IR移動
0
1
1
IR終了1
0
IR一時停止 0
1
0
IR終了2
1
IR更新
1
0

命令ﾚｼﾞｽﾀ(IR)移動状態へ移行するためにTC
Kの上昇でTMSへ順次1,1,0,0を与えます。この状態中、TCKの上昇端でTDI入力からJTAG
命令ﾚｼﾞｽﾀ内に4ﾋﾞｯﾄのJTAG命令を移動します。TMS入力はIR移動状態に留まるために3LSBの入力中、Lowに保持されなければなりません。命令のMSBはTMS入力のHigh設定によってこの状態を抜ける時に移動入力されます。命令がTDIﾋﾟﾝから移されている間、捕獲されたIRの状態($01)がTDOﾋﾟﾝへ移動出力されます。
JTAG命令はTDIとTDO間に通す(接続する)特定のﾃﾞｰﾀ ﾚｼﾞｽﾀを選択し、選択したﾃﾞｰﾀ ﾚｼﾞｽﾀ周辺回路を制御します。
● 検査実行/ｱｲﾄﾞﾙ状態へ再度移行するためにTMSへ順次1,1,0を与えます。この(JTAG)命令はIR更新状態通過で移動ﾚｼﾞｽﾀから並列出力にﾗｯﾁされます。IR終了1、IR一時停止、IR終了2の各状態は順次回路の誘導操作のためだけに使われます。
● ﾃﾞｰﾀ ﾚｼﾞｽﾀ移動(DR移動)状態へ移行するためにTCKの上昇端でTMSへ順次1,0,0を与えます。この状態中、TCKの上昇端でTDI入力から(JTAG命令ﾚｼﾞｽﾀ内の現在のJTAG命令で)選択したﾃﾞｰﾀ ﾚｼﾞｽﾀに値を移動入力します。DR移動状態に留まるためにMSBを除く全ﾋﾞｯﾄの入力中、TMS入力はLowに保持されなければなりません。ﾃﾞｰﾀのMSBはTMS入力のHigh設定によってこの状態を抜ける時に移動入力されます。ﾃﾞｰﾀ ﾚｼﾞｽﾀがTDIﾋﾟﾝから移動入力される間、DR捕獲状態(1,0)でﾃﾞｰﾀ ﾚｼﾞｽﾀに捕獲した並列入力がTDOﾋﾟﾝへ移動出力されます。
● 検査実行/ｱｲﾄﾞﾙ状態へ再移行するためにTMSへ順次1,1,0を与えます。選択したﾃﾞｰﾀ ﾚｼﾞｽﾀがﾗｯﾁした並列出力を持つ場合、DR更新状態でﾗｯﾁを行います。DR終了1、DR一時停止、DR終了2の各状態は順次回路の誘導操作のためだけに使われます。
状態遷移図で示されるように検査実行/ｱｲﾄﾞﾙ状態はJTAG命令の選択とﾃﾞｰﾀ ﾚｼﾞｽﾀの使用間で移行される必要はなく、また、いく
つかのJTAG命令は検査実行/ｱｲﾄﾞﾙ状態で実行されるべき必然的な機能を選択するかもしれず、それはｱｲﾄﾞﾙ状態として不適当になります。
注: TAP制御器の初期状態に関係なく、5 TCKｸﾛｯｸ周期に対してTMSをHighに保持することにより、常に検査回路ﾘｾｯﾄ状態へ移行することができます。
JTAG仕様の詳細情報については209頁の「参考文献」に記載された文献を参照してください。
●

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]207

25.5. 境界走査ﾁｪｰﾝ(Boundary-Scan Chain)の使用
境界走査能力の完全な説明は210頁の「IEEE 1149.1(JTAG)境界走査(Boundary-Scan)」項で与えられます。

25.6. 内蔵ﾃﾞﾊﾞｯｸﾞ機能の使用
図25-1.で示されるように内蔵ﾃﾞﾊﾞｯｸﾞに関するﾊｰﾄﾞｳｪｱ支援は主に次の部分から成ります。
● 内部AVR CPUｺｱと内部周辺機能部間ｲﾝﾀｰﾌｪｰｽの走査ﾁｪｰﾝ(Scan chain)● 中断点(ﾌﾞﾚｰｸﾎﾟｲﾝﾄ)部● CPUとJTAGｼｽﾃﾑ間の通信ｲﾝﾀｰﾌｪｰｽ
ﾃﾞﾊﾞｯｶﾞの実行で必要とされる全ての読み込みまたは変更/書き込みは内部AVR CPU走査ﾁｪｰﾝ(Scan chain)経由のAVR命令によって行われます。CPUはCPUとJTAGｼｽﾃﾑ間の通信ｲﾝﾀｰﾌｪｰｽ部分が配置されるI/Oﾒﾓﾘ位置に結果を送ります。
中断点部はﾌﾟﾛｸﾞﾗﾑの流れ変更での一時停止(Break)、1命令実行(Single Step Break)、2つのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ用中断点、2つの複合中断点を実行します。合わせて4つ中断点は次のどれかとして設定ができます。
● 4つのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ単一中断点● 3つのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ単一中断点 ＋ 1つのﾃﾞｰﾀ ﾒﾓﾘ単一中断点● 2つのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ単一中断点 ＋ 2つのﾃﾞｰﾀ ﾒﾓﾘ単一中断点● 2つのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ単一中断点 ＋ 1つのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ範囲中断点 (中断点と遮蔽)● 2つのﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ単一中断点 ＋ 1つのﾃﾞｰﾀ ﾒﾓﾘ範囲中断点 (中断点と遮蔽)
けれどもAVR Studio®のようなﾃﾞﾊﾞｯｶﾞは最終使用者への柔軟性をより少なくする内部目的にこれら資源の1つまたはそれ以上を使うかもしれません。
内蔵ﾃﾞﾊﾞｯｸﾞ特殊JTAG命令の一覧は「内蔵ﾃﾞﾊﾞｯｸﾞ特殊JTAG命令」で与えられます。
JTAG検査入出力ﾎﾟｰﾄ(TAP)を許可するにはJTAGENﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されなければなりません。加えて内蔵ﾃﾞﾊﾞｯｸﾞ機能で作業するには更にOCDENﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)され、施錠ﾋﾞｯﾄが施錠なしに設定されなければなりません。何れかの施錠ﾋﾞｯﾄが設定(0)されると、保護機能で内蔵ﾃﾞﾊﾞｯｸﾞ機能が禁止されます。そうでなければ内蔵ﾃﾞﾊﾞｯｸﾞ機能が保護されたﾃﾞﾊﾞｲｽへの裏口を提供することになっていたでしょう(訳補:保護の意味がなくなるの意)。
AVR Studioは使用者にﾁｯﾌﾟ内蔵ﾃﾞﾊﾞｯｸﾞ能力(機能)、AVRｲﾝｻｰｷｯﾄ ｴﾐｭﾚｰﾀ、または(AVR Studio)組み込みAVR命令一式ｼﾐｭﾚｰﾀ
でAVRﾃﾞﾊﾞｲｽのﾌﾟﾛｸﾞﾗﾑ実行を完全に制御することを可能にします。AVR StudioはAtmel AVRｱｾﾝﾌﾞﾗでｱｾﾝﾌﾞﾙしたｱｾﾝﾌﾞﾘ言語ﾌﾟ
ﾛｸﾞﾗﾑと他業者製ｺﾝﾊﾟｲﾗでｺﾝﾊﾟｲﾙしたC言語ﾌﾟﾛｸﾞﾗﾑのｿｰｽ ﾚﾍﾞﾙ実行を支援します。
AVR StudioはMicrosoft Windows® 98/2000、Windows NT®、Windows XP®、Windows Vista®下で走行します。
AVR Studioの完全な記述についてはAVR Studio使用者の手引きを参照してください。要点だけが本資料で示されます。
全ての必要な実行指令はAVR Studio内のｿｰｽ ﾚﾍﾞﾙと逆ｱｾﾝﾌﾞﾘ ﾚﾍﾞﾙの両方で利用できます。使用者はﾌﾟﾛｸﾞﾗﾑの実行、1命令実
行(Single Step)、内側(関数内)実行、外側(関数外)実行、命令行へのｶｰｿﾙ配置と命令行が(ｶｰｿﾙ行へ)到達されるまでの実行、一時停止、実行対象のﾘｾｯﾄができます。加えて使用者は無制限数のｺｰﾄﾞの中断点(BREAK命令使用)と、2つまでのﾃﾞｰﾀ ﾒﾓﾘの中断
点か、代わりに遮蔽による範囲指定(複合)中断点を持てます。

25.7. 内蔵ﾃﾞﾊﾞｯｸﾞ特殊JTAG命令
内蔵ﾃﾞﾊﾞｯｸﾞの支援は独自JTAG命令で考慮され、Atmelと選ばれた業者だけに配布されます。参考のため、命令ｺｰﾄﾞの一覧が示されます。
● 独自命令0 : $8 (内蔵ﾃﾞﾊﾞｯｸﾞ機能ｱｸｾｽ用独自JTAG命令)● 独自命令2 : $A (内蔵ﾃﾞﾊﾞｯｸﾞ機能ｱｸｾｽ用独自JTAG命令)● 独自命令1 : $9 (内蔵ﾃﾞﾊﾞｯｸﾞ機能ｱｸｾｽ用独自JTAG命令)● 独自命令3 : $B (内蔵ﾃﾞﾊﾞｯｸﾞ機能ｱｸｾｽ用独自JTAG命令)

25.8. 内蔵ﾃﾞﾊﾞｯｸﾞに関連するI/Oﾒﾓﾘ内のﾚｼﾞｽﾀ
25.8.1. 内蔵ﾃﾞﾊﾞｯｸﾞ ﾚｼﾞｽﾀ (On-chip Debug Register) OCDR
ﾋﾞｯﾄ
$31 ($51)
Read/Write
初期値

7

6

5

4

3

2

1

IDRD/MSB
R/W
0

0

LSB
R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

R/W
0

OCDR

R/W
0

OCDRはﾏｲｸﾛ ｺﾝﾄﾛｰﾗ内の実行ﾌﾟﾛｸﾞﾗﾑからﾃﾞﾊﾞｯｶﾞへの通信ﾁｬﾈﾙを提供します。CPUはこの位置へ書くことによってﾃﾞﾊﾞｯｶﾞへﾊﾞｲﾄを転送できます。このﾚｼﾞｽﾀが書かれてしまっているのをﾃﾞﾊﾞｯｶﾞに示すため、同時に内部ﾌﾗｸﾞIDRD(I/Oﾃﾞﾊﾞｯｸﾞ ﾚｼﾞｽﾀ更新)が設
定(1)されます。CPUがOCDRを読むとき、LSB 7ﾋﾞｯﾄがOCDRからで、一方MSBはIDRDﾋﾞｯﾄです。ﾃﾞﾊﾞｯｶﾞはこの情報を読む時に
IDRDﾋﾞｯﾄを解除(0)します。
いくつかのAVRﾃﾞﾊﾞｲｽに於いてこのﾚｼﾞｽﾀは標準I/O位置で共用されます。この場合、OCDRは内蔵ﾃﾞﾊﾞｯｸﾞ許可(OCDEN)ﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)された場合にだけｱｸｾｽでき、ﾃﾞﾊﾞｯｶﾞがOCDRへｱｸｾｽできます。他の全ての場合、標準I/O位置がｱｸｾｽされます。
このﾚｼﾞｽﾀの使用法のより多くの情報はﾃﾞﾊﾞｯｶﾞの資料を参照してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]208

25.9. JTAGﾌﾟﾛｸﾞﾗﾐﾝｸﾞ能力の使用
JTAG経由AVRﾃﾞﾊﾞｲｽ ﾌﾟﾛｸﾞﾗﾐﾝｸﾞは4ﾋﾟﾝのJTAGﾎﾟｰﾄ、TCK,TMS,TDI,TDO経由で実行されます。これらはJTAGﾌﾟﾛｸﾞﾗﾐﾝｸﾞ実行のために(電源ﾋﾟﾝに加えて)制御/監視される必要があるﾋﾟﾝだけです。外部的な12V印加は必要とされません。JTAG検査入出力ﾎﾟｰﾄ(TAP)を許可するにはJTAGENﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)され、MCU制御ﾚｼﾞｽﾀ(MCUCR)のJTAGｲﾝﾀｰﾌｪｰｽ禁止(JTD)ﾋﾞｯﾄが解除(0)されなければなりません。
JTAGﾌﾟﾛｸﾞﾗﾐﾝｸﾞ能力は以下を支援します。
● ﾌﾗｯｼｭ ﾒﾓﾘのﾌﾟﾛｸﾞﾗﾐﾝｸﾞと照合● EEPROMのﾌﾟﾛｸﾞﾗﾐﾝｸﾞと照合● ﾋｭｰｽﾞ ﾋﾞｯﾄのﾌﾟﾛｸﾞﾗﾐﾝｸﾞと照合● 施錠ﾋﾞｯﾄのﾌﾟﾛｸﾞﾗﾐﾝｸﾞと照合
施錠ﾋﾞｯﾄ保護は丁度並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作でのようです。施錠ﾋﾞｯﾄLB1またはLB2がﾌﾟﾛｸﾞﾗﾑ(0)されると、先にﾁｯﾌﾟ消去を行わない限
り、OCDENﾋｭｰｽﾞはﾌﾟﾛｸﾞﾗﾑ(0)できません。これは保護されたﾃﾞﾊﾞｲｽの内容を読み出す裏口が存在しないことを保証する保護機能です。
JTAGｲﾝﾀｰﾌｪｰｽを通すﾌﾟﾛｸﾞﾗﾐﾝｸﾞとﾌﾟﾛｸﾞﾗﾐﾝｸﾞ特殊JTAG命令の記述は241頁の「JTAGｲﾝﾀｰﾌｪｰｽ経由のﾌﾟﾛｸﾞﾗﾐﾝｸﾞ」項で与えられます。

25.10. 参考文献
一般的な境界走査(Boudary-Scan)についての詳細は次の文献を参照してください。
● IEEE : IEEE Std 1149.1-1990. IEEE Standard Test Access Port and Boundary-Scan Architecture, IEEE, 1993
● Colin Maunder : The Board Designers Guide to Testable Logic Circuits, Addison Wesley, 1992

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]209

26. IEEE 1149.1 (JTAG) 境界走査(Boundary-Scan)
26.1. 特徴
・ JTAGｲﾝﾀｰﾌｪｰｽ (IEEE標準1149.1準拠)
・ JTAG規格に従った境界走査(Boundary-Scan)能力・ ﾁｯﾌﾟ外接続を持つｱﾅﾛｸﾞ回路は勿論、全てのﾎﾟｰﾄ機能の完全な走査(Scan)
・ 任意IDCODE命令の支援
・ AVRﾘｾｯﾄ用公開AVR_RESET命令の追加

26.2. 概要
境界走査ﾁｪｰﾝ(Boundary-Scan chain)にはﾃﾞｼﾞﾀﾙI/Oﾋﾟﾝは勿論、ﾁｯﾌﾟ外接続を持つｱﾅﾛｸﾞ回路のｱﾅﾛｸﾞとﾃﾞｼﾞﾀﾙ間境界の論理値を駆動、監視する能力があります。ｼｽﾃﾑ上ではJTAG能力を持つ全てのICがTDIとTDOの接続により長い移動ﾚｼﾞｽﾀの形態で接続されます。外部制御器がこれらの出力ﾋﾟﾝで値を駆動するようにﾃﾞﾊﾞｲｽを設定し、他のﾃﾞﾊﾞｲｽから受け取った入力値を監視します。この制御器は予測される結果と受信した値を比較します。この方法で境界走査(Boundary-Scan)は4つのTAP信号だけを使うことにより、基板上の部品全般と内部結線の検査機構を提供します。
IEEE 1149.1で定義された4つの必須JTAG命令、IDCODE, BYPASS, SAMPLE/PRELOAD, EXTESTだけでなく、AVR特殊公開
JTAG命令のAVR_RESETも基板検査に使えます。既定JTAG命令がIDCODEなので、ﾃﾞｰﾀ ﾚｼﾞｽﾀ経路の初期走査はﾃﾞﾊﾞｲｽの識別ｺｰﾄﾞ(ID-code)を示します。検査動作中にﾘｾｯﾄ(状態)のAVRﾃﾞﾊﾞｲｽがあることは好都合かもしれません。ﾘｾｯﾄでない場合、ﾃﾞﾊﾞｲｽの入力は走査動作によって決定されるかもしれず、検査動作を終了する時に内部ｿﾌﾄｳｪｱが未確定状態になってしまうかもしれません。ﾘｾｯﾄへの移行で、どのﾎﾟｰﾄ ﾋﾟﾝの出力も直ちにHi-Z状態に移行し、HIGHZ命令が不要になります。必要とされるなら、ﾃﾞﾊﾞｲｽを通過する走査ﾁｪｰﾝを可能な限り最短とするのにBYPASS命令が発行できます。外部RESETﾋﾟﾝをLowに引き込むか、またはﾘｾｯﾄ
ﾃﾞｰﾀ ﾚｼﾞｽﾀの適切な設定によるAVR_RESET命令の発行でﾃﾞﾊﾞｲｽをﾘｾｯﾄ状態に設定できます。
EXTEST命令は外部ﾋﾟﾝの採取と出力ﾋﾟﾝの値設定に使われます。EXTEST命令がJTAG命令ﾚｼﾞｽﾀ(IR)に設定されると、直ちに出力ﾗｯﾁからの値がﾋﾟﾝで出力駆動されます。このため、最初にEXTEST命令を発行する時に基板の損傷を避けるため、走査ﾁｪｰﾝ内に初期値を設定するのにSAMPLE/PRELOAD命令も使われるべきです。SAMPLE/PRELOAD命令は通常動作中ﾃﾞﾊﾞｲｽの外部ﾋﾟﾝの高速監視にも使えます。
JTAG検査入出力ﾎﾟｰﾄ(TAP)を許可するにはJTAGENﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)され、MCU制御ﾚｼﾞｽﾀ(MCUCR)のJTAGｲﾝﾀｰﾌｪｰｽ禁止(JTD)ﾋﾞｯﾄが解除(0)されなければなりません。
境界走査(Boundary-Scan)にJTAGｲﾝﾀｰﾌｪｰｽを使う場合、内部ﾁｯﾌﾟ周波数よりも高いJTAG TCKｸﾛｯｸ周波数の使用が可能です。
ﾁｯﾌﾟのｸﾛｯｸは走行に必要とされません。

26.3. ﾃﾞｰﾀ ﾚｼﾞｽﾀ
境界走査(Boundary-Scan)に関連するﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)を次に示します。
● 迂回(Bypass)ﾚｼﾞｽﾀ ● ﾃﾞﾊﾞｲｽ識別(Device Identification)ﾚｼﾞｽﾀ ● ﾘｾｯﾄ(Reset)ﾚｼﾞｽﾀ ● 境界走査ﾁｪｰﾝ(Boundary-Scan chain)

26.3.1. 迂回 (Bypass) ﾚｼﾞｽﾀ
迂回ﾚｼﾞｽﾀは1段の移動ﾚｼﾞｽﾀから成ります。TDIとTDO間の経路として迂回ﾚｼﾞｽﾀが選択されると、このﾚｼﾞｽﾀはTAP制御器がﾃﾞｰﾀﾚｼﾞｽﾀ(DR)捕獲状態を抜ける時に0へﾘｾｯﾄされます。迂回ﾚｼﾞｽﾀは他のﾃﾞﾊﾞｲｽが検査される時にｼｽﾃﾑ上の走査ﾁｪｰﾝ(Scan chain)を短くするのに使えます。

26.3.2. ﾃﾞﾊﾞｲｽ識別 (Device Identification) ﾚｼﾞｽﾀ
図26-1.はﾃﾞﾊﾞｲｽ識別ﾚｼﾞｽﾀの構造を示します。

図26-1. ﾃﾞﾊﾞｲｽ識別ﾚｼﾞｽﾀの形式
ﾋﾞｯﾄ
31
28 27
12 11
1 0
部品番号
製造者識別 1
ﾃﾞﾊﾞｲｽ識別 版番号
4
16
11
1
ﾋﾞｯﾄ数

版番号

版番号は部品(ﾃﾞﾊﾞｲｽ)の改訂を示す4ﾋﾞｯﾄです。JTAG版番号はﾃﾞﾊﾞｲｽの改訂版に従います。改訂Aは$00, 改訂Bは
$01, 以下同様です。

部品番号

部品番号は部品(名)を示す16ﾋﾞｯﾄです。ATmega16
U4/32U4のJTAG部品番号は右表で一覧されます。

製造者識別 製造者識別は製造業者を示す11ﾋﾞｯﾄです。AtmelのJTAG製造者識別は右で示されます。

表26-1. AVR JTAG 部品番号
部品番号
JTAG部品番号(16進数)
ATmega16U4$9488
ATmega32U4$9587
表26-2. 製造者ID
製造業者
Atmel

JTAG製造者ID番号(16進数)$01F

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]210

26.3.3. ﾘｾｯﾄ (Reset) ﾚｼﾞｽﾀ
ﾘｾｯﾄ ﾚｼﾞｽﾀはﾃﾞﾊﾞｲｽのﾘｾｯﾄに使われる検査ﾃﾞｰﾀ ﾚｼﾞｽﾀです。ﾘｾｯﾄによってAVRのﾎﾟｰﾄ ﾋﾟﾝがHi-Z状態となるので、未実装の任意
JTAG命令HIGHZ機能の代わりにできます。
図26-2. ﾘｾｯﾄ ﾚｼﾞｽﾀ
ﾘｾｯﾄ ﾚｼﾞｽﾀ内の値1は外部RESETﾋﾟﾝをLowに引っ張るのと同じで内部/外部のす。ﾃﾞﾊﾞｲｽはﾘｾｯﾄ ﾚｼﾞｽﾀ内の値が1である限り、ﾘｾｯﾄです。ﾘｾｯﾄ ﾚ
他ﾘｾｯﾄ元から
内部ﾘｾｯﾄｼﾞｽﾀの開放後、ﾃﾞﾊﾞｲｽはｸﾛｯｸ選択用ﾋｭｰｽﾞ ﾋﾞｯﾄの設定に従ってﾘ
D Q
TDIから
ｾｯﾄ起動遅延時間(18頁の「ｸﾛｯｸ元」参照)、ﾘｾｯﾄに留まります。図
AVR_RESET命令下のTDOへ
23-2.で示されるようにこのﾃﾞｰﾀ ﾚｼﾞｽﾀからの出力はﾗｯﾁされず、直ﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)ｸﾛｯｸ
ちにﾘｾｯﾄが行われます。

26.3.4. 境界走査ﾁｪｰﾝ(Boundary-Scan Chain)
境界走査ﾁｪｰﾝにはﾃﾞｼﾞﾀﾙI/Oﾋﾟﾝは勿論、ﾁｯﾌﾟ外の接続を持つｱﾅﾛｸﾞ回路のｱﾅﾛｸﾞとﾃﾞｼﾞﾀﾙ間境界の論理値上の設定と監視能力があります。
完全な記述については213頁の「境界走査ﾁｪｰﾝ(Boundary-Scan chain)」をご覧ください。

26.4. 境界走査(Boundary-Scan)用JTAG命令
命令ﾚｼﾞｽﾀ(IR)は16種までの命令を支援する4ﾋﾞｯﾄ幅です。以下に示した一覧は境界走査(Boundary-Scan)操作に有用なJTAG命令です。全ﾎﾟｰﾄ ﾋﾟﾝをHi-Z状態にするための任意HIGHZ命令は実装されませんが、AVR_RESET命令を使うことによって全出力がHi-Z状態に設定できることに注目してください。
このﾃﾞｰﾀｼｰﾄ内の定義として、全ての移動ﾚｼﾞｽﾀに関して入出力ともLSBが最初に移されます。
各命令の命令ｺｰﾄﾞは命令名下の16進形式で示されます。本文は各命令についてTDIとTDO間の経路として選択されるﾃﾞｰﾀ ﾚｼﾞｽﾀを記述します。(訳注:配置構成変更により、内容を一部変更)

26.4.1. EXTEST - $0
AVRﾃﾞﾊﾞｲｽに外部回路的検査を行うためにﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)として境界走査ﾁｪｰﾝ(Boundary-Scan chain)を選択するための必須JT
AG命令です。ﾎﾟｰﾄ ﾋﾟﾝは方向、ﾌﾟﾙｱｯﾌﾟ、出力値、入力値は走査ﾁｪｰﾝ(Scan chain)内で全てｱｸｾｽ可能です。ﾁｯﾌﾟ外接続を持つｱﾅﾛｸﾞ回路についてはｱﾅﾛｸﾞとﾃﾞｼﾞﾀﾙ論理間のｲﾝﾀｰﾌｪｰｽが走査ﾁｪｰﾝ内になります。境界走査ﾁｪｰﾝのﾗｯﾁした出力値はJTAG命令ﾚｼﾞｽﾀ(IR)にEXTEST命令が設定されると直ぐに駆動されます。 本命令が有効な状態を次に示します。
● DR捕獲 : 外部ﾋﾟﾝ上の値が境界走査ﾁｪｰﾝ内に採取されます。
● DR移動 : 内部走査ﾁｪｰﾝがTCKｸﾛｯｸ入力によって移されます。
● DR更新 : 走査ﾁｪｰﾝからの値が出力ﾋﾟﾝに印加(出力)されます。

26.4.2. IDCODE - $1
ﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)として32ﾋﾞｯﾄのﾃﾞﾊﾞｲｽ識別(ID)ﾚｼﾞｽﾀを選択する任意JTAG命令です。ﾃﾞﾊﾞｲｽ識別ﾚｼﾞｽﾀは版番号、ﾃﾞﾊﾞｲｽ番号と、JEDECによって決めれた製造者符号から成ります。これは電源投入後の既定命令です。 本命令が有効な状態を次に示します。
● DR捕獲 : ﾃﾞﾊﾞｲｽ識別ﾚｼﾞｽﾀ内の値が境界走査ﾁｪｰﾝ内に採取されます。
● DR移動 : 内部走査ﾁｪｰﾝ(ﾃﾞﾊﾞｲｽ識別ﾚｼﾞｽﾀ値)がTCKｸﾛｯｸ入力によって移されます。

26.4.3. SAMPLE_PRELOAD - $2
ｼｽﾃﾑ動作に影響を与えずに入出力ﾋﾟﾝの状態採取、出力ﾗｯﾁの事前設定を行うための必須JTAG命令です。けれども出力ﾗｯﾁはﾋﾟﾝに接続されません。ﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)として境界走査ﾁｪｰﾝ(Boundary-Scan chain)が選ばれます。 本命令が有効な状態を次に示します。
● DR捕獲 : 外部ﾋﾟﾝ上の値が境界走査ﾁｪｰﾝ内に採取されます。
● DR移動 : 境界走査ﾁｪｰﾝがTCKｸﾛｯｸ入力によって移されます。
● DR更新 : 境界走査ﾁｪｰﾝからの値が出力ﾗｯﾁに印加(設定)されます。けれども出力ﾗｯﾁはﾋﾟﾝに接続されません。

26.4.4. AVR_RESET - $C
AVRﾃﾞﾊﾞｲｽを強制的にﾘｾｯﾄ状態、またはJTAGﾘｾｯﾄ元から開放するためのAVR特殊公開JTAG命令です。この命令で検査入出力
ﾎﾟｰﾄ(TAP)制御器はﾘｾｯﾄされません。ﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)として1ﾋﾞｯﾄのﾘｾｯﾄ ﾚｼﾞｽﾀが選ばれます。ﾘｾｯﾄ ﾁｪｰﾝ(ﾚｼﾞｽﾀ)が論理1である
限り、ﾘｾｯﾄが活性(有効)なことに注意してください。このﾁｪｰﾝからの出力はﾗｯﾁされません。 本命令が有効な状態を次に示します。
● DR移動 : 走査ﾁｪｰﾝ(ﾘｾｯﾄ ﾚｼﾞｽﾀ)がTCKｸﾛｯｸ入力によって移されます。

26.4.5. BYPASS - $F
ﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)に迂回(Bypass)ﾚｼﾞｽﾀを選択する必須JTAG命令です。 本命令が有効な状態を次に示します。
● DR捕獲 : 迂回ﾚｼﾞｽﾀに論理0を設定します。
● DR移動 : TDIとTDO間の迂回ﾚｼﾞｽﾀ(ｾﾙ)が移されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]211

26.5. 境界走査(Boundary-Scan)に関連するI/Oﾒﾓﾘ内のﾚｼﾞｽﾀ
26.5.1. MCUCR - MCU制御ﾚｼﾞｽﾀ (MCU Control Register)
MCU制御ﾚｼﾞｽﾀは一般MCU機能制御ﾋﾞｯﾄを含みます。
ﾋﾞｯﾄ$35 ($55)
Read/Write
初期値

7

6

5

4

3

2

1

0

JTD

-

-

PUD

-

-

IVSEL

IVCE

R/W
0

R
0

R
0

R/W
0

R
0

R
0

R/W
0

R/W
0

MCUCR

● ﾋﾞｯﾄ7 - JTD : JTAGｲﾝﾀｰﾌｪｰｽ禁止 (JTAG interface disable)

このﾋﾞｯﾄが0の時にJTAGENﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されていれば、JTAGｲﾝﾀｰﾌｪｰｽが許可されます。このﾋﾞｯﾄが1の場合、JTAGｲﾝﾀｰ
ﾌｪｰｽは禁止されます。JTAGｲﾝﾀｰﾌｪｰｽの予期せぬ許可や禁止を避けるためにこのﾋﾞｯﾄを変更する時は時間制限手順に従わなけ
ればなりません。この値を変更するために応用ｿﾌﾄｳｪｱは4周期以内に希望する値をこのﾋﾞｯﾄへ2回書かなければなりません。内蔵ﾃﾞﾊﾞｯｸﾞ ｼｽﾃﾑ使用時、このﾋﾞｯﾄが切り替えられてはならないことに注意してください。
JTAGｲﾝﾀﾌｪｰｽが他のJTAG回路に接続されないままにされる場合、このJTDﾋﾞｯﾄは1に設定されるべきです。この理由はJTAGｲﾝﾀｰ
ﾌｪｰｽのTDOﾋﾟﾝの静止時電流を避けるためです。 (訳注:共通性から前2行追加)

26.5.2. MCUSR - MCU状態ﾚｼﾞｽﾀ (MCU Status Register)
MCU状態ﾚｼﾞｽﾀはMCUﾘｾｯﾄを起こしたﾘｾｯﾄ元の情報を提供します。
ﾋﾞｯﾄ$34 ($54)
Read/Write
初期値

7

6

5

4

3

2

1

0

-

-

USBRF

JTRF

WDRF

BORF

EXTRF

PORF

R
0

R
0

R/W
内容参照

R/W
内容参照

R/W
内容参照

R/W
内容参照

R/W
内容参照

R/W
内容参照

MCUSR

● ﾋﾞｯﾄ4 - JTRF : JTAG ﾘｾｯﾄ ﾌﾗｸﾞ (JTAG Reset Flag)

このﾋﾞｯﾄはJTAG命令AVR_RESETによって選択したJTAG ﾘｾｯﾄ ﾚｼﾞｽﾀ内の論理1でﾘｾｯﾄが起こされると設定(1)されます。このﾋﾞｯﾄは電源ONﾘｾｯﾄまたはこのﾌﾗｸﾞへの論理0書き込みによってﾘｾｯﾄ(0)されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]212

26.6. 境界走査ﾁｪｰﾝ(Boundary-Scan Chain)
境界走査ﾁｪｰﾝにはﾃﾞｼﾞﾀﾙI/Oﾋﾟﾝは勿論、ﾁｯﾌﾟ外の接続を持つｱﾅﾛｸﾞ回路のｱﾅﾛｸﾞとﾃﾞｼﾞﾀﾙ間境界の論理値の設定と監視の能力があります。

26.6.1. ﾃﾞｼﾞﾀﾙ ﾎﾟｰﾄ ﾋﾟﾝの走査
図26-3.はﾌﾟﾙｱｯﾌﾟ機能付き双方向ﾎﾟｰﾄ ﾋﾟﾝ 図26-3. ﾌﾟﾙｱｯﾌﾟ機能付き双方向ﾎﾟｰﾄ用境界走査(Boundary-Scan)ｾﾙ構成図
用境界走査(Boundary-Scan)ｾﾙを示します。
DR移動
次ｾﾙへ
EXTEST
このｾﾙはﾌﾟﾙｱｯﾌﾟ許可(PUExn)用標準境界走
ﾌﾟﾙｱｯﾌﾟ
VCC
査(Boundary-Scan)ｾﾙと3つの信号、出力(方許可向)制御(OCxn)、出力ﾃﾞｰﾀ(ODxn)、入力ﾃﾞｰﾀ
(PUE)
FF2
LD2
0
(IDxn)の組み合わせの双方向ﾋﾟﾝ用ｾﾙの2段
0
1
D
Q
D
Q
1
の移動ﾚｼﾞｽﾀだけから成ります。ﾎﾟｰﾄとﾋﾟﾝのG
添え字は続く記述で使われません。
境界走査(Boundary-Scan)論理回路はﾃﾞｰﾀ出力制御
ｼｰﾄ内の図に含まれません。図26-4.は41頁
(OC)
LD1
FF1
の「入出力ﾎﾟｰﾄ」章で記載される単純なﾃﾞｼﾞﾀ00
ﾙ ﾎﾟｰﾄ ﾋﾟﾝを示します。図26-3.からの境界走
1
D Q
D Q
1
査ｾﾙの詳細が図26-4.上の破線内に置き換Gわります。
交換ﾎﾟｰﾄ機能が存在しない場合、入力ﾃﾞｰﾀ(ID)はPINxnﾚｼﾞｽﾀ値(けれどもIDは同期化回
出力ﾃﾞｰﾀ
ﾎﾟｰﾄ
(OD)
ﾋﾟﾝ
路を持ず)、出力ﾃﾞｰﾀ(OD)はPORTxnﾚｼﾞｽﾀ、
LD0
FF0
0
0
出力制御(OC)は、DDxn方向ﾚｼﾞｽﾀ、ﾌﾟﾙｱｯﾌﾟ
Pxn
0
1
1
D Q
D Q
許可(PUE)は、論理合成値(PUD AND DDxn
1
AND PORTxn)に各々対応します。
G
ﾃﾞｼﾞﾀﾙ交換ﾎﾟｰﾄ(ﾋﾟﾝ)機能は走査ﾁｪｰﾝ(Scan
入力ﾃﾞｰﾀchain)が実際のﾋﾟﾝ値を読むために図26-4.内(ID)の破線外側に接続されます。ｱﾅﾛｸﾞ機能につ前ｾﾙから DRｸﾛｯｸ
DR更新
いて、それらは外部ﾋﾟﾝからｱﾅﾛｸﾞ回路へ直結
で、走査ﾁｪｰﾝはｱﾅﾛｸﾞ回路とﾃﾞｼﾞﾀﾙ論理回路間のｲﾝﾀｰﾌｪｰｽに挿入されます。
JTAG IRがEXTESTまたはSAMPLE_PRELOADを内包すると、ｸﾛｯｸは例えCKOUTﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されていてもﾎﾟｰﾄ ﾋﾟﾝに送出されません。例えｸﾛｯｸが出力でも、JTAG IRがSAMPLE_PRELOADを内包するとき、ｸﾛｯｸは境界走査によって採取されません。
図26-4. 標準ﾎﾟｰﾄ ﾋﾟﾝ構成図

RDx:DDRx読み

8-bit Data Bus

DDxn:方向ﾗｯﾁ
WDx:DDRx書き

PUExn

PUD:ﾌﾟﾙｱｯﾌﾟ禁止
D

VCC

Q
R

RESET:ﾘｾｯﾄ
RRx:ﾎﾟｰﾄxﾗｯﾁ読み
OCxn
1
0

D

WPx:PINx書き

Q

ODxn
PORTxn:出力ﾗｯﾁ

Pxn

R

IDxn
SLEEP:休止制御

WRx:PORTx書きRESET:ﾘｾｯﾄ
RPx:ﾎﾟｰﾄxﾋﾟﾝ読み

同期化回路
Q

D

PINxn:入力ﾚｼﾞｽﾀ

Q

D
E

clkI/O:I/Oｸﾛｯｸ
注: 詳細については境界走査(Boundary-Scan)をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]213

26.6.2. RESETﾋﾟﾝの走査
RESETﾋﾟﾝは標準ﾘｾｯﾄ動作について5V負論理(Low有効)、高電圧並列ﾌﾟﾛｸﾞﾗﾐﾝ
ｸﾞについて12V正論理(High有効)を受け入れます。図26-5.で示される監視専用
ｾﾙが5Vﾘｾｯﾄ信号(RSTT)と12Vﾘｾｯﾄ信号(RSTHV)の両方に挿入されます。

図26-5. 監視専用境界走査ｾﾙ構成図
DR移動
次ｾﾙへ
ｼｽﾃﾑ
ﾋﾟﾝから

FF1
0
1

D

ｼｽﾃﾑ
回路へ

Q

前ｾﾙから DRｸﾛｯｸ

26.7. ATmega16U4/32U4の境界走査(Boundary-Scan)順
下表は境界走査ﾁｪｰﾝがﾃﾞｰﾀ経路として選択される時のTDIとTDO間の走査順を示します。ﾋﾞｯﾄ0が最下位ﾋﾞｯﾄで走査の最初に入出力されます。走査順は可能な限りﾋﾟﾝ配置順に従います。この規則の例外はｱﾅﾛｸﾞ回路が接続される物理ﾋﾟﾝに関係なく走査ﾁｪｰ
ﾝの最上位を構成するｱﾅﾛｸﾞ回路用走査ﾁｪｰﾝです。図26-3.上で、Pxn出力はFF0、Pxn制御はFF1、Pxnﾌﾟﾙｱｯﾌﾟ許可はFF2に各々対応します。ﾎﾟｰﾄFのﾋﾞｯﾄ4,5,6,7はJTAG許可時にTAPﾋﾟﾝを構成するので走査ﾁｪｰﾝには存在しません。
表26-3. ATmega16U4/32U4境界走査(Boundary-Scan)順
ﾋﾞｯﾄ
信号名
基本単位
ﾋﾞｯﾄ
信号名
88
87
86
85
84
83
82
81
80
79
78
77
76
75
74
73
72
71
70
69
68
67
66
65
64
63
62
61
60
59

PE6.Data
PE6.Control
(予約)
(予約)
(予約)
(予約)
PB0.Data
PB0.Control
PB1.Data
PB1.Control
PB2.Data
PB2.Control
PB3.Data
PB3.Control
PB4.Data
PB4.Control
PB5.Data
PB5.Control
PB6.Data
PB6.Control
PB7.Data
PB7.Control
(予約)
(予約)
(予約)
(予約)
RSTT
PD0.Data
PD0.Control
PD1.Data

ﾎﾟｰﾄE

ﾎﾟｰﾄB

ﾎﾟｰﾄE
ﾘｾｯﾄ(監視専用)
ﾎﾟｰﾄD

58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29

PD1.Control
PD2.Data
PD2.Control
PD3.Data
PD3.Control
PD4.Data
PD4.Control
PD5.Data
PD5.Control
PD6.Data
PD6.Control
PD7.Data
PD7.Control
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)

基本単位

ﾎﾟｰﾄD

(予約)

(予約)

ﾋﾞｯﾄ

信号名

28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

(予約)
(予約)
(予約)
PE2.Data
PE2.Control
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
(予約)
PF2.Control
PF1.Data
PF1.Control
PF0.Data
PF0.Control

基本単位
(予約)
ﾎﾟｰﾄE

(予約)

ﾎﾟｰﾄF

26.8. 境界走査記述言語(Boundary-Scan Description Language)ﾌｧｲﾙ
境界走査記述言語(BSDL)ﾌｧｲﾙは境界走査が可能なﾃﾞﾊﾞｲｽを自動検査生成ｿﾌﾄｳｪｱによって使われる標準形式で記述します。境
界走査ﾃﾞｰﾀ ﾚｼﾞｽﾀ内のﾋﾞｯﾄの順番と機能がこの記述内に含まれます。ATmega16U4/32U4用のBSDLﾌｧｲﾙは入手可能です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]214

27. ﾌﾞｰﾄ ﾛｰﾀﾞ支援 - 書き込み中読み出し可能な自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
ﾌﾞｰﾄ ﾛｰﾀﾞ支援はMCU自身によるﾌﾟﾛｸﾞﾗﾑ ｺｰﾄﾞのﾀﾞｳﾝﾛｰﾄﾞとｱｯﾌﾟﾛｰﾄﾞ用の真の書き込み中の読み出しが可能な自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ機構を提供します。この特徴はﾌﾗｯｼｭ ﾒﾓﾘに常駐するﾌﾞｰﾄ ﾛｰﾀﾞ ﾌﾟﾛｸﾞﾗﾑを使うMCUによって制御される柔軟な応用ｿﾌﾄｳｪｱ更新を可能にします。ﾌﾞｰﾄ ﾛｰﾀﾞ ﾌﾟﾛｸﾞﾗﾑはﾌﾗｯｼｭ ﾒﾓﾘ内にｺｰﾄﾞを書き(ﾌﾟﾛｸﾞﾗﾑ)、ｺｰﾄﾞを読み、またはﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘからｺｰﾄﾞを読むのに、利用可能なﾃﾞｰﾀ ｲﾝﾀｰﾌｪｰｽと関連する規約のどれもが使えます。ﾌﾞｰﾄ ﾛｰﾀﾞ領域内のﾌﾟﾛｸﾞﾗﾑ ｺｰﾄﾞはﾌﾞｰﾄ ﾛｰﾀﾞ ﾒﾓﾘを含むﾌﾗｯｼｭ ﾒ
ﾓﾘ全体を書く能力を持ちます。従ってﾌﾞｰﾄ ﾛｰﾀﾞは自身をも変更でき、この機能がそれ以上必要とされないなら、そのｺｰﾄﾞから自身を消去することもできます。ﾌﾞｰﾄ ﾛｰﾀﾞ ﾒﾓﾘの容量はﾋｭｰｽﾞで設定可能で、ﾌﾞｰﾄ ﾛｰﾀﾞは個別に設定可能な2組の独立したﾌﾞｰﾄ施錠
ﾋﾞｯﾄを持ちます。これは異なる保護ﾚﾍﾞﾙを選択する独特な柔軟性を使用者に与えます。SPMとLPMの一般情報は6頁の「AVR CPUｺｱ」で提供されます。

27.1. 特徴
・ 書き込み中読める(Read-While-Write)自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
・ 柔軟性のあるﾌﾞｰﾄ ﾛｰﾀﾞ ﾒﾓﾘ容量・ 高い安全性 (柔軟な保護用の独立したﾌﾞｰﾄ施錠ﾋﾞｯﾄ)・ ﾘｾｯﾄ ﾍﾞｸﾀ選択用の独立したﾋｭｰｽﾞ
・ 最適化されたﾍﾟｰｼﾞ容量 (注1)
・ 効率的なｺｰﾄﾞ手法
・ 効率的な読み-変更-書き(ﾘｰﾄﾞ ﾓﾃﾞﾌｧｲ ﾗｲﾄ)支援
注1: ﾍﾟｰｼﾞはﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中に使われる多数のﾊﾞｲﾄから成るﾌﾗｯｼｭ ﾒﾓﾘの区画です(230頁の表28-11.参照)。このﾍﾟｰｼﾞ構成は通常動作に影響を及ぼしません。

27.2. ﾌﾗｯｼｭ ﾒﾓﾘの応用領域とﾌﾞｰﾄ ﾛｰﾀﾞ領域
ﾌﾗｯｼｭ ﾒﾓﾘは応用領域とﾌﾞｰﾄ ﾛｰﾀﾞ領域の2つの主な領域で構成されます(図27-2.参照)。各領域の容量は225頁の表27-8.と図27-2.で示されるようにBOOTSZﾋｭｰｽﾞによって設定されます。これら2つの領域は個別の施錠ﾋﾞｯﾄの組を持つため、異なる保護ﾚﾍﾞﾙを持てます。

27.2.1. 応用領域
応用領域は応用ｺｰﾄﾞを格納するのに使われるﾌﾗｯｼｭ ﾒﾓﾘの領域です。応用領域用保護ﾚﾍﾞﾙは応用ﾌﾞｰﾄ施錠ﾋﾞｯﾄ(ﾌﾞｰﾄ施錠ﾋﾞｯﾄ0)
によって選択できます。応用領域から実行される時にSPM命令が禁止されるので、応用領域はどんなﾌﾞｰﾄ ﾛｰﾀﾞ ｺｰﾄﾞも決して格納し得ません。217頁の表27-2.参照してください。

27.2.2. ﾌﾞｰﾄ ﾛｰﾀﾞ領域 (BLS)
応用領域が応用ｺｰﾄﾞ格納用に使われるのに対して、SPM命令はBLSから実行する時にだけﾌﾟﾛｸﾞﾗﾐﾝｸﾞを始められるので、ﾌﾞｰﾄ ﾛｰ
ﾀﾞ ｿﾌﾄｳｪｱはBLSに格納されなければなりません。SPM命令はBLS自身を含む全てのﾌﾗｯｼｭ ﾒﾓﾘをｱｸｾｽできます。ﾌﾞｰﾄ ﾛｰﾀﾞ領域
用保護ﾚﾍﾞﾙはﾌﾞｰﾄ ﾛｰﾀﾞ施錠ﾋﾞｯﾄ(ﾌﾞｰﾄ施錠ﾋﾞｯﾄ1)によって選択できます。217頁の表27-3.参照してください。

27.3. ﾌﾗｯｼｭ ﾒﾓﾘの書き込み中に読み出し可能な領域と不能な領域
どちらのｱﾄﾞﾚｽがﾌﾟﾛｸﾞﾗﾐﾝｸﾞされるかによって、CPUが書き込み中の読み出しを支援するか、ﾌﾞｰﾄ ﾛｰﾀﾞ ｿﾌﾄｳｪｱが更新中にCPUが停止されるかのどちらです。上で記述されるようなBOOTSZﾋｭｰｽﾞによって設定可能な2つの領域に加え、ﾌﾗｯｼｭ ﾒﾓﾘは書き込み中読み出し可能な(RWW)領域と書き込み中読み出し不能な(NRWW)領域の2つの固定領域にも分けられます。RWWとNRWW領域間の境界は216頁の図27-2.と225頁の表27-9.で与えられます。この2つの領域間の主な違いを次に示します。
● RWW領域側に配置されたﾍﾟｰｼﾞを消去または書くとき、NRWW領域はその動作中に読むことができます。
● NRWW領域側に配置されたﾍﾟｰｼﾞを消去または書くとき、その全ての動作中にCPUは停止されます。
ﾌﾞｰﾄ ﾛｰﾀﾞ ｿﾌﾄｳｪｱ動作中、使用者ｿﾌﾄｳｪｱがRWW領域側に配置されるどのｺｰﾄﾞも決して読めないことに注意してください。「書き込
み中読み出し可能領域」という記述はﾌﾟﾛｸﾞﾗﾐﾝｸﾞ(消去または書き込み)される領域としての引用で、ﾌﾞｰﾄ ﾛｰﾀﾞ ｿﾌﾄｳｪｱが更新中に実際に読まれる領域ではありません。
訳補: 上の記述はNRWW領域からRWW領域をﾌﾟﾛｸﾞﾗﾐﾝｸﾞするという前提で、消去または書き込みを行う側ではなく、行われる側でこの名称が定義されていることを意味します。即ち、NRWW領域からRWW領域をﾌﾟﾛｸﾞﾗﾐﾝｸﾞすると、NRWW領域のﾌﾟﾛｸﾞﾗﾑは通常通り動作する(即ち読める)ので、ﾌﾟﾛｸﾞﾗﾐﾝｸﾞされる側はRWW領域と名付けられ、この逆ではCPUが停止する(即ち読めない)
ので、NRWW領域と名付けられているという意味です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]215

27.3.1. RWW - 書き込み中読み出し可能領域
ﾌﾞｰﾄ ﾛｰﾀﾞ ｿﾌﾄｳｪｱ更新がRWW領域側のﾍﾟｰｼﾞをﾌﾟﾛｸﾞﾗﾐﾝｸﾞする場合、ﾌﾗｯｼｭ ﾒﾓﾘからｺｰﾄﾞを読むことが可能ですが、NRWW領域に配置されるｺｰﾄﾞだけです。ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ実行中、そのｿﾌﾄｳｪｱはRWW領域が決して読まれないことを保証しなければなりません。使
用者ｿﾌﾄｳｪｱがﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中に(例えば、CALL,JMP,LPM系命令または割り込みによって)RWW領域側に配置されるｺｰﾄﾞを読もうとすると、そのｿﾌﾄｳｪｱは未知の状態へ行き着くかもしれません。これを避けるために割り込みは禁止またはﾌﾞｰﾄ ﾛｰﾀﾞ領域へ移動のどちらかにされるべきです。ﾌﾞｰﾄ ﾛｰﾀﾞ領域は常にNRWW領域に配置されます。RWW領域が読み出しに対して妨げられている限り、SPM
命令制御/状態ﾚｼﾞｽﾀ(SPMCSR)のRWW領域多忙(RWWSB)ﾋﾞｯﾄが論理1として読めます。ﾌﾟﾛｸﾞﾗﾐﾝｸﾞが完了した後、RWW領域に配置したｺｰﾄﾞを読む前にRWWSBはｿﾌﾄｳｪｱによって解除(0)されなければなりません。
RWWSBを解除(0)する方法の詳細については219頁の「SPMCSR - SPM命令制御/状態ﾚｼﾞｽﾀ」を参照してください。

27.3.2. NRWW - 書き込み中読み出し不能領域
NRWW領域に配置したｺｰﾄﾞはﾌﾞｰﾄ ﾛｰﾀﾞ ｿﾌﾄｳｪｱがRWW領域内のﾍﾟｰｼﾞを更新する時に読めます。ﾌﾞｰﾄ ﾛｰﾀﾞ ｺｰﾄﾞがNRWW領域を更新するとき、全てのﾍﾟｰｼﾞ消去またはﾍﾟｰｼﾞ書き込み動作中にCPUが停止されます。
表27-1. 書き込み中読み出し可能機能
ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中にZﾎﾟｲﾝﾀで指定される領域
RWW領域
NRWW領域ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中に読める領域
NRWW領域
なし

CPU動作
通常動作
停止

RWW機能支援ありなし

図27-1. RWW領域とNRWW領域の関係
書き込み中読み出し
可能 (RWW) 領域
ZﾎﾟｲﾝﾀRWW領域指定
ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中の命令読み込み可能

書き込み中読み出し
不能 (NRWW) 領域

ZﾎﾟｲﾝﾀNRWW領域指定
ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中の命令読み込み不能(CPU停止)

図27-2. 選択によるﾌﾟﾛｸﾞﾗﾑ用ﾌﾗｯｼｭ ﾒﾓﾘの領域分割
BOOTSZ=11

BOOTSZ=10

BOOTSZ=01

BOOTSZ=00$0000

応用ﾌﾟﾛｸﾞﾗﾑ領域

応用ﾌﾟﾛｸﾞﾗﾑ領域

応用ﾌﾟﾛｸﾞﾗﾑ領域

応用ﾌﾟﾛｸﾞﾗﾑ RWW
領域
領域

RWW領域最終位置
NRWW領域開始位置
応用領域最終位置
ﾌﾞｰﾄ ﾛｰﾀﾞ領域開始位置
ﾌﾗｯｼｭ ﾒﾓﾘ最終位置

ﾌﾞｰﾄ ﾛｰﾀﾞ
領域

ﾌﾞｰﾄ ﾛｰﾀﾞ
領域

ﾌﾞｰﾄ ﾛｰﾀﾞ
領域

ﾌﾞｰﾄ ﾛｰﾀﾞ
領域

NRWW
領域

注: 図内の各ﾊﾟﾗﾒｰﾀについては225頁の表27-8.で与えられます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]216

27.4. ﾌﾞｰﾄ ﾛｰﾀﾞ施錠ﾋﾞｯﾄ
ﾌﾞｰﾄ ﾛｰﾀﾞ能力が必要とされないなら、ﾌﾗｯｼｭ ﾒﾓﾘ全体が応用ｺｰﾄﾞ用に利用可能です。ﾌﾞｰﾄ ﾛｰﾀﾞは個別に設定可能な独立した2組のﾌﾞｰﾄ施錠ﾋﾞｯﾄを持ちます。これは異なる保護ﾚﾍﾞﾙを選択する独特な柔軟性を使用者に与えます。
使用者は以下を選択できます。
● MCUによって更新するｿﾌﾄｳｪｱからﾌﾗｯｼｭ ﾒﾓﾘ全体を保護● MCUによって更新するｿﾌﾄｳｪｱからﾌﾗｯｼｭ ﾒﾓﾘのﾌﾞｰﾄ ﾛｰﾀﾞ領域だけを保護● MCUによって更新するｿﾌﾄｳｪｱからﾌﾗｯｼｭ ﾒﾓﾘの応用領域だけを保護● ﾌﾗｯｼｭ ﾒﾓﾘ全体で更新するｿﾌﾄｳｪｱを許可
より多くの詳細については以下の2つの表をご覧ください。ﾌﾞｰﾄ施錠ﾋﾞｯﾄはｿﾌﾄｳｪｱと直列または並列のﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作で設定(0)できますが、これらのﾋﾞｯﾄはﾁｯﾌﾟ消去指令によってのみ解除(1)できます。一般書き込み禁止(LB動作種別2)はSPM命令によるﾌﾗｯ ｼｭ
ﾒﾓﾘのﾌﾟﾛｸﾞﾗﾐﾝｸﾞを制御しません。同様に、試みられたなら、一般読み書き禁止(LB動作種別3)はLPM命令とSPM命令による読み込
みも書き込みも制御しません。(訳補:一般LBはLPM/SPM命令に関して無関係の意)
表27-2. 応用領域に対する保護種別 (0=ﾌﾟﾛｸﾞﾗﾑ、1=非ﾌﾟﾛｸﾞﾗﾑ)
BLB0 動作種別 BLB02 BLB01
保護種別
1
1
LPM, SPM命令が応用領域をｱｸｾｽすることに対して制限はありません。
1
2
1
SPM命令は応用領域に書くことを許されません。
0
SPM命令による応用領域への書き込みと、ﾌﾞｰﾄ ﾛｰﾀﾞ領域でのLPM命令による応用領域
300からの読み込みが許されません。 (注)40ﾌﾞｰﾄ ﾛｰﾀﾞ領域でのLPM命令による応用領域からの読み込みが許されません。 (注)1
注: BLB02=0で、割り込みﾍﾞｸﾀがﾌﾞｰﾄ ﾛｰﾀﾞ領域に配置されていると、応用領域での実行時に割り込みが禁止されます。
表27-3. ﾌﾞｰﾄ ﾛｰﾀﾞ領域に対する保護種別 (0=ﾌﾟﾛｸﾞﾗﾑ、1=非ﾌﾟﾛｸﾞﾗﾑ)
BLB1 動作種別 BLB12 BLB11
保護種別
1
1
LPM, SPM命令がﾌﾞｰﾄ ﾛｰﾀﾞ領域をｱｸｾｽすることに対して制限はありません。
1
1
0
2
SPM命令はﾌﾞｰﾄ ﾛｰﾀﾞ領域に書くことを許されません。
SPM命令によるﾌﾞｰﾄ ﾛｰﾀﾞ領域への書き込みと、応用領域でのLPM命令によるﾌﾞｰﾄ ﾛｰﾀﾞ
003
領域からの読み込みが許されません。 (注)104
応用領域でのLPM命令によるﾌﾞｰﾄ ﾛｰﾀﾞ領域からの読み込みが許されません。 (注)注: BLB12=0で、割り込みﾍﾞｸﾀが応用領域に配置されていると、ﾌﾞｰﾄ ﾛｰﾀﾞ領域での実行時に割り込みが禁止されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]217

27.5. ﾌﾞｰﾄ ﾛｰﾀﾞ ﾌﾟﾛｸﾞﾗﾑへの移行
ﾌﾞｰﾄ ﾛｰﾀﾞは3つの異なる状況で実行できます。

27.5.1. 通常応用状況
応用ﾌﾟﾛｸﾞﾗﾑから無条件分岐(Jump)またはｻﾌﾞﾙｰﾁﾝ呼び出し(Call)を行ってください。これはUSART、SPIまたはUSB経由で受信した
指令のような起点によって始められるかもしれません。

27.5.2. ﾌﾞｰﾄ ﾘｾｯﾄ ﾋｭｰｽﾞ
ﾘｾｯﾄ後にﾘｾｯﾄ ﾍﾞｸﾀがﾌﾞｰﾄ ﾛｰﾀﾞ領域開始ｱﾄﾞﾚｽを指示するようにﾌﾞｰﾄ ﾘｾｯﾄ(BOOTRST)ﾋｭｰｽﾞをﾌﾟﾛｸﾞﾗﾑ(0)できます。この場合、ﾌﾞｰﾄ ﾛｰﾀﾞがﾘｾｯﾄ後に開始されます。応用ｺｰﾄﾞが設定された(書かれた)後、そのﾌﾟﾛｸﾞﾗﾑ(ﾌﾞｰﾄ ﾛｰﾀﾞ)は応用ｺｰﾄﾞの実行を開始する
ことができます。このﾋｭｰｽﾞがMCU自身によって変更できないことに注意してください。これは一旦ﾌﾞｰﾄ ﾘｾｯﾄ ﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されると、ﾘｾｯﾄ ﾍﾞｸﾀは常にﾌﾞｰﾄ ﾛｰﾀﾞ ﾘｾｯﾄを指示し、このﾋｭｰｽﾞが直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞまたは並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞまたはJTAGｲﾝﾀｰﾌｪｰｽを通してのみ変更できることを意味します。
表27-4. ﾌﾞｰﾄ ﾘｾｯﾄ ﾋｭｰｽﾞ (0=ﾌﾟﾛｸﾞﾗﾑ、1=非ﾌﾟﾛｸﾞﾗﾑ)
ﾘｾｯﾄ後実行開始ｱﾄﾞﾚｽ (ﾘｾｯﾄ ﾍﾞｸﾀ)
BOOTRST0
ﾌﾞｰﾄ ﾛｰﾀﾞ ﾘｾｯﾄ
ﾌﾞｰﾄ ﾛｰﾀﾞ開始ｱﾄﾞﾚｽ (225頁の表27-8.参照)
1
応用ﾘｾｯﾄ$0000

27.5.3. 外部ﾊｰﾄﾞｳｪｱ状況
ﾘｾｯﾄ下の特別なﾊｰﾄﾞｳｪｱ条件でﾌﾞｰﾄ ﾛｰﾀﾞの実行がﾘｾｯﾄ後に強制されるようにﾊｰﾄﾞｳｪｱ ﾌﾞｰﾄ許可(HWBE)ﾋｭｰｽﾞをﾌﾟﾛｸﾞﾗﾑ(0)にすることができます(下表をご覧ください)。
HWBEﾋｭｰｽﾞ許可時、PE2/HWBﾋﾟﾝはﾘｾｯﾄ間に入力として設定され、ﾘｾｯﾄの上昇端中に採取されます。ﾘｾｯﾄの上昇端の間中でPE2/HWBﾋﾟﾝが0のとき、ﾘｾｯﾄ ﾍﾞｸﾀはﾌﾞｰﾄ ﾛｰﾀﾞ ﾘｾｯﾄ ｱﾄﾞﾚｽとして設定され、ﾌﾞｰﾄ ﾛｰﾀﾞが実行されます(図27-3.をご覧ください)。
表27-5. ﾊｰﾄﾞｳｪｱ ﾌﾞｰﾄ許可ﾋｭｰｽﾞ (0=ﾌﾟﾛｸﾞﾗﾑ、1=非ﾌﾟﾛｸﾞﾗﾑ)
ﾘｾｯﾄ後実行開始ｱﾄﾞﾚｽ (ﾘｾｯﾄ ﾍﾞｸﾀ)
HWBE
0
PE2/HWBﾋﾟﾝはﾘｾｯﾄ後の強制ﾌﾞｰﾄ ﾛｰﾀﾞ実行に使えません。
1
PE2/HWBﾋﾟﾝはﾘｾｯﾄ後の強制ﾌﾞｰﾄ ﾛｰﾀﾞ実行のために、ﾘｾｯﾄの間に使われます。
図27-3. ﾌﾞｰﾄ処理内容
ﾘｾｯﾄ開始

RESET

tSHRH
HWBE ?
1
BOOTRST ?
1
ﾘｾｯﾄ ﾍﾞｸﾀ=応用ﾘｾｯﾄ

0
不成立
0

tHHRH

HWB
外部ﾊｰﾄﾞｳｪｱ条件 ?
成立

ﾘｾｯﾄ ﾍﾞｸﾀ=ﾌﾞｰﾄ ﾛｰﾀﾞ ﾘｾｯﾄ

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]218

27.5.4. SPMCSR - SPM命令制御/状態ﾚｼﾞｽﾀ (Store Program Memory Control and Status Register)
このﾚｼﾞｽﾀはﾌﾞｰﾄ ﾛｰﾀﾞ動作を制御するために必要とされる制御ﾋﾞｯﾄを含みます。
ﾋﾞｯﾄ$37 ($57)
Read/Write
初期値

7

6

5

SPMIE

RWWSB

SIGRD

R/W
0

R
0

R/W
0

4

3

RWWSRE BLBSET
R/W
0

R/W
0

2

1

0

PGWRT

PGERS

SPMEN

R/W
0

R/W
0

R/W
0

SPMCSR● ﾋﾞｯﾄ7 - SPMIE : SPM操作可割り込み許可 (SPM Interrupt Enable)

SPMIEﾋﾞｯﾄが1を書かれ、ｽﾃｰﾀｽ ﾚｼﾞｽﾀ(SREG)の全割り込み許可(I)ﾋﾞｯﾄが設定(1)されているなら、SPM操作可割り込みが許可されます。SPM操作可割り込みはSPMCSRのSPM操作許可(SPMEN)ﾋﾞｯﾄが解除(0)されている限り実行されます。
● ﾋﾞｯﾄ6 - RWWSB : RWW領域多忙 (Read-While-Write Section Busy)

RWW領域に自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ(ﾍﾟｰｼﾞ消去またはﾍﾟｰｼﾞ書き込み)操作が開始されると、RWWSBがﾊｰﾄﾞｳｪｱによって設定(1)されます。
RWWSBﾋﾞｯﾄが設定(1)されると、RWW領域はｱｸｾｽできません。自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞが完了された後にRWWSREﾋﾞｯﾄが1を書かれると、このRWWSBﾋﾞｯﾄは解除(0)されます。同様に、ﾍﾟｰｼﾞ設定操作が開始されると、RWWSBﾋﾞｯﾄは自動的に解除(0)されます。
● ﾋﾞｯﾄ5 - SIGRD : 識票列読み出し (Signature Row Read)

このﾋﾞｯﾄがSPMENと同時に1を書かれると、次の3ｸﾛｯｸ周期内のLPM命令は識票列からﾊﾞｲﾄを転送先ﾚｼﾞｽﾀに読みます。詳細については222頁の「ｿﾌﾄｳｪｱからの識票列読み出し」をご覧ください。SIGRDとSPMENが設定(1)された後の4ｸﾛｯｸ周期内のSPM命令は無効です。この操作は将来の使用に対して予約されており、使われるべきではありません。
● ﾋﾞｯﾄ4 - RWWSRE : RWW領域読み出し許可 (Read-While-Write Section Read Enable)

RWW領域にﾌﾟﾛｸﾞﾗﾐﾝｸﾞ(ﾍﾟｰｼﾞ消去またはﾍﾟｰｼﾞ書き込み)すると、RWW領域は(RWWSBがﾊｰﾄﾞｳｪｱによって設定(1)され)読み出しに対して防がれます。RWW領域を再許可するために使用者ｿﾌﾄｳｪｱはﾌﾟﾛｸﾞﾗﾐﾝｸﾞが完了(SPMENが解除(0))されるまで待たねばなりません。その後、RWWSREﾋﾞｯﾄがSPMENと同時に1を書かれると、次の4ｸﾛｯｸ周期内のSPM命令がRWW領域を再許可します。ﾍﾟｰｼﾞ消去またはﾍﾟｰｼﾞ書き込みでﾌﾗｯｼｭ ﾒﾓﾘが多忙(SPMEN=1)の間、RWW領域は再許可できません。ﾌﾗｯｼｭ ﾒﾓﾘが設定されている間に
RWWSREﾋﾞｯﾄが書かれると、ﾌﾗｯｼｭ ﾒﾓﾘ設定操作は失敗し、設定したﾃﾞｰﾀが失われます。
● ﾋﾞｯﾄ3 - BLBSET : ﾌﾞｰﾄ施錠ﾋﾞｯﾄ設定 (Boot Lock Bits Set)

このﾋﾞｯﾄがSPMENと同時に1を書かれると、次の4ｸﾛｯｸ周期内のSPM命令はR0のﾃﾞｰﾀに従ったﾌﾞｰﾄ施錠ﾋﾞｯﾄを設定します。R1のﾃﾞｰ
ﾀとZﾎﾟｲﾝﾀのｱﾄﾞﾚｽは無視されます。BLBSETﾋﾞｯﾄは施錠ﾋﾞｯﾄの設定完了で、または4ｸﾛｯｸ周期内にSPM命令が実行されない場合、自動的に解除(0)されます。
SPMCSRでBLBSETとSPMENが設定(1)された後の3ｸﾛｯｸ周期内のLPM命令は(ZﾎﾟｲﾝﾀのZ0によって)ﾋｭｰｽﾞ ﾋﾞｯﾄまたは施錠ﾋﾞｯﾄのどちらかを転送先ﾚｼﾞｽﾀに読みます。詳細については222頁の「ｿﾌﾄｳｪｱからのﾋｭｰｽﾞ ﾋﾞｯﾄと施錠ﾋﾞｯﾄの読み出し」をご覧ください。
● ﾋﾞｯﾄ2 - PGWRT : ﾍﾟｰｼﾞ書き込み (Page Write)

このﾋﾞｯﾄがSPMENと同時に1を書かれると、次の4ｸﾛｯｸ周期内のSPM命令は一時緩衝部に格納したﾃﾞｰﾀでﾍﾟｰｼﾞ書き込みを実行します。ﾍﾟｰｼﾞ ｱﾄﾞﾚｽはZﾎﾟｲﾝﾀの上位部から取得されます。R1とR0のﾃﾞｰﾀは無視されます。PGWRTﾋﾞｯﾄはﾍﾟｰｼﾞ書き込みの完了で、または4ｸﾛｯｸ周期内にSPM命令が実行されない場合、自動的に解除(0)されます。NRWW領域がｱﾄﾞﾚｽ指定されると、ﾍﾟｰｼﾞ全体の書き込み動作中にCPUは停止されます。
● ﾋﾞｯﾄ1 - PGERS : ﾍﾟｰｼﾞ消去 (Page Erase)

このﾋﾞｯﾄがSPMENと同時に1を書かれると、次の4ｸﾛｯｸ周期内のSPM命令はﾍﾟｰｼﾞ消去を実行します。ﾍﾟｰｼﾞ ｱﾄﾞﾚｽはZﾎﾟｲﾝﾀの上位部から取得されます。R1とR0のﾃﾞｰﾀは無視されます。PGERSﾋﾞｯﾄはﾍﾟｰｼﾞ消去の完了で、または4ｸﾛｯｸ周期内にSPM命令が実行されない場合、自動的に解除(0)されます。NRWW領域がｱﾄﾞﾚｽ指定されると、ﾍﾟｰｼﾞ全体の消去中にCPUは停止されます。
● ﾋﾞｯﾄ0 - SPMEN : SPM操作許可 (Store Program Memory Enable)

このﾋﾞｯﾄは次の4ｸﾛｯｸ周期間のSPM命令を許可します。このﾋﾞｯﾄがRWWSRE, BLBSET, PGWRT, PGERSのどれかと共に1を書かれると、続くSPM命令は特別な意味を持ちます(上の記述をご覧ください)。SPMENだけが書かれると、続くSPM命令はZﾎﾟｲﾝﾀによってｱ
ﾄﾞﾚｽ指定したﾍﾟｰｼﾞ一時緩衝部へR1:R0の値を格納します。Zﾚｼﾞｽﾀの最下位ﾋﾞｯﾄは無視されます。SPMENﾋﾞｯﾄはSPM命令の完了
で、または4ｸﾛｯｸ周期内にSPM命令が実行されない場合、自動的に解除(0)されます。ﾍﾟｰｼﾞ消去とﾍﾟｰｼﾞ書き込み中、SPMENﾋﾞｯﾄはその動作が完了されるまで1に留まります。
下位6ﾋﾞｯﾄに100001, 010001, 001001, 000101, 000011, 000001以外のどんな組み合わせを書いても無効です。
注: 常に1つのSPM命令だけが活動すべきです。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]219

27.6. 自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中のﾌﾗｯｼｭ ﾒﾓﾘのｱﾄﾞﾚｽ指定
Zﾎﾟｲﾝﾀ(ﾚｼﾞｽﾀ)はSPM命令でのｱﾄﾞﾚｽ指定に使われます。
ﾋﾞｯﾄ
ZH (R31)ﾋﾞｯﾄ
ZL (R30)

15

14

13

12

11

10

9

8

Z15

Z14

Z13

Z12

Z11

Z10

Z9

Z8

7

6

5

4

3

2

1

0

Z7

Z6

Z5

Z4

Z3

Z2

Z1

Z0

ﾌﾗｯｼｭ ﾒﾓﾘがﾍﾟｰｼﾞで構成されるため、ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ(ｱﾄﾞﾚｽ ﾎﾟｲﾝﾀ)は2つの違う領域を持つように扱われます。1つの領域は下位側ﾋﾞｯﾄから成り、ﾍﾟｰｼﾞ内の語(ﾜｰﾄﾞ)をｱﾄﾞﾚｽ指定し、一方上位側ﾋﾞｯﾄはそのﾍﾟｰｼﾞをｱﾄﾞﾚｽ指定します。これは図27-4.で示されます。
ﾍﾟｰｼﾞ消去とﾍﾟｰｼﾞ書き込み操作が個別にｱﾄﾞﾚｽ指定されることに注意してください。従ってﾌﾞｰﾄ ﾛｰﾀﾞ ｿﾌﾄｳｪｱはﾍﾟｰｼﾞ消去とﾍﾟｰｼﾞ
書き込み操作の両方で同じﾍﾟｰｼﾞをｱﾄﾞﾚｽ指定することが最も重要です。一旦ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ操作が開始されると、このｱﾄﾞﾚｽはﾗｯﾁされ、Zﾎﾟｲﾝﾀは他の操作に使えます。
Zﾎﾟｲﾝﾀを使わないSPM操作はﾌﾞｰﾄ ﾛｰﾀﾞ施錠ﾋﾞｯﾄ設定だけです。この操作でZﾚｼﾞｽﾀの内容は無視され、無効です。LPM命令もｱﾄﾞﾚｽを格納するのにZﾎﾟｲﾝﾀを使います。この命令はﾌﾗｯｼｭ ﾒﾓﾘのﾊﾞｲﾄ単位をｱﾄﾞﾚｽ指定するので、Zﾎﾟｲﾝﾀの最下位ﾋﾞｯﾄ(Z0)も使われます。
図27-4. SPM操作中のﾌﾗｯｼｭ ﾒﾓﾘのｱﾄﾞﾚｽ指定
ﾋﾞｯﾄ 15ZPCMSBZPAGEMSB
ZﾚｼﾞｽﾀPCMSBPCPAGE
ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ
ﾌﾗｯｼｭ ﾒﾓﾘ内のﾍﾟｰｼﾞ ｱﾄﾞﾚｽ
ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ

0

PAGEMSB
PCWORDﾍﾟｰｼﾞ内の語(ﾜｰﾄﾞ)ｱﾄﾞﾚｽ
ﾍﾟｰｼﾞ
PCWORD (PAGEMSB～0)$00
命令語(ﾜｰﾄﾞ)
$01
$02
～

ﾍﾟｰｼﾞ

1 0

PAGEEND

注: 図内で使った各変数は225頁の表27-10.で一覧されます。
PCPAGEとPCWORDは230頁の表28-11.で一覧されます。 (訳注:共通性から追加)

27.7. ﾌﾗｯｼｭ ﾒﾓﾘの自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘはﾍﾟｰｼﾞ単位形式で更新されます。ﾍﾟｰｼﾞ一時緩衝部へ格納したﾃﾞｰﾀでﾍﾟｰｼﾞを書く前にそのﾍﾟｰｼﾞが消去されなければなりません。ﾍﾟｰｼﾞ一時緩衝部はSPM命令使用時毎の1語(ﾜｰﾄﾞ)で満たされ、この緩衝部はﾍﾟｰｼﾞ消去命令前、またはﾍﾟｰｼﾞ消去とﾍﾟｰｼﾞ書き込み操作間のどちらかで満たすことができます。
手段1 (ﾍﾟｰｼﾞ消去前の一時緩衝部格納)・ ﾍﾟｰｼﾞ一時緩衝部を満たしてください。
・ ﾍﾟｰｼﾞ消去を実行してください。
・ ﾍﾟｰｼﾞ書き込みを実行してください。
手段2 (ﾍﾟｰｼﾞ消去後の一時緩衝部格納)・ ﾍﾟｰｼﾞ消去を実行してください。
・ ﾍﾟｰｼﾞ一時緩衝部を満たしてください。
・ ﾍﾟｰｼﾞ書き込みを実行してください。
ﾍﾟｰｼﾞの一部の変更だけが必要な場合、消去前にﾍﾟｰｼﾞの残す部分は(例えばﾍﾟｰｼﾞ一時緩衝部に)保存されなければならず、その後に改めて書かれます。手段1.を使う場合、初めにﾍﾟｰｼﾞを読んで必要な変更を行い、その後に変更したﾃﾞｰﾀを書き戻すことを使用
者ｿﾌﾄｳｪｱに許す効率的な読み-修正-書き(ﾘｰﾄﾞ ﾓﾃﾞﾌｧｲ ﾗｲﾄ)機能をﾌﾞｰﾄ ﾛｰﾀﾞが提供します。手段2.が使われる場合、ﾍﾟｰｼﾞが既に消去されているため、格納中の旧ﾃﾞｰﾀを読むことができません。ﾍﾟｰｼﾞ一時緩衝部は乱順でｱｸｾｽできます。ﾍﾟｰｼﾞ消去とﾍﾟｰｼﾞ書
き込み操作の両方で使われるﾍﾟｰｼﾞ ｱﾄﾞﾚｽは同じﾍﾟｰｼﾞをｱﾄﾞﾚｽ指定することが非常に重要です。ｱｾﾝﾌﾞﾘ言語でのｺｰﾄﾞ例について
は224頁の「ｱｾﾝﾌﾞﾘ言語による簡単なﾌﾞｰﾄ ﾛｰﾀﾞ例」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

220

27.7.1. SPM命令によるﾍﾟｰｼﾞ消去の実行
ﾍﾟｰｼﾞ消去を実行するにはZﾎﾟｲﾝﾀにｱﾄﾞﾚｽを設定してSPM命令制御/状態ﾚｼﾞｽﾀ(SPMCSR)に'X0000011'を書き、SPMCSR書き込み
後4ｸﾛｯｸ周期内にSPM命令を実行してください。R1とR0のﾃﾞｰﾀは無視されます。ﾍﾟｰｼﾞ ｱﾄﾞﾚｽはZﾎﾟｲﾝﾀのPCPAGEに書かれなければなりません。この操作中、Zﾎﾟｲﾝﾀの他のﾋﾞｯﾄは無視されます。
● RWW領域のﾍﾟｰｼﾞ消去: ﾍﾟｰｼﾞ消去中、NRWW領域は読めます。
● NRWW領域のﾍﾟｰｼﾞ消去 : ﾍﾟｰｼﾞ消去中、CPUは停止されます。

27.7.2. ﾍﾟｰｼﾞ一時緩衝部の設定 (ﾍﾟｰｼﾞ設定)
命令語(ﾜｰﾄﾞ)を(ﾍﾟｰｼﾞ一時緩衝部に)書くにはZﾎﾟｲﾝﾀにｱﾄﾞﾚｽ、R1:R0にﾃﾞｰﾀを設定してSPMCSRに'00000001'を書き、SPMCSR書き
込み後4ｸﾛｯｸ周期内にSPM命令を実行してください。ZﾎﾟｲﾝﾀのPCWORDの内容は一時緩衝部のﾃﾞｰﾀのｱﾄﾞﾚｽに使われます。一時
緩衝部はﾍﾟｰｼﾞ書き込み操作後、またはSPMCSRのRWWSREﾋﾞｯﾄ書き込みによって自動的に消去されます。ｼｽﾃﾑ ﾘｾｯﾄ後も消去されています。一時緩衝部を消去せずに各ｱﾄﾞﾚｽへ複数回書くことができないことに注意してください。
注: SPMﾍﾟｰｼﾞ設定操作の途中でEEPROMが書かれると、設定した全ﾃﾞｰﾀが失われます。

27.7.3. ﾍﾟｰｼﾞ書き込みの実行
ﾍﾟｰｼﾞ書き込みを行うにはZﾎﾟｲﾝﾀにｱﾄﾞﾚｽを設定してSPMCSRに'X0000101'を書き、SPMCSR書き込み後4ｸﾛｯｸ周期内にSPM命令を実行してください。R1とR0のﾃﾞｰﾀは無視されます。ﾍﾟｰｼﾞ ｱﾄﾞﾚｽはZﾎﾟｲﾝﾀのPCPAGEに書かれなければなりません。この操作中、Zﾎﾟ
ｲﾝﾀの他のﾋﾞｯﾄは0を書かれなければなりません。
● RWW領域のﾍﾟｰｼﾞ書き込み: ﾍﾟｰｼﾞ書き込み中、NRWW領域は読めます。
● NRWW領域のﾍﾟｰｼﾞ書き込み : ﾍﾟｰｼﾞ書き込み中、CPUは停止されます。

27.7.4. SPM操作可割り込みの使用法
SPM操作可割り込みが許可されると、SPMCSRのSPMENﾋﾞｯﾄが解除(0)されている時にSPM操作可割り込みが継続的に発生します。
これはｿﾌﾄｳｪｱでSPMCSRをﾎﾟｰﾘﾝｸﾞする代わりにこの割り込みが使えることを意味します。SPM操作可割り込みを使うとき、割り込みが読み出しに対して防がれる時にRWW領域をｱｸｾｽするのを避けるために、割り込みﾍﾞｸﾀはﾌﾞｰﾄ ﾛｰﾀﾞ領域(BLS)へ移動されるべきです。割り込み(ﾍﾞｸﾀ)の移動法は36頁の「割り込み」で記述されます。

27.7.5. ﾌﾞｰﾄ ﾛｰﾀﾞ領域更新中の考慮
ﾌﾞｰﾄ施錠ﾋﾞｯﾄ11(BLB11)が非ﾌﾟﾛｸﾞﾗﾑ(1)にされたままとすることによって使用者がﾌﾞｰﾄ ﾛｰﾀﾞ領域に更新を許す場合、特別な注意が祓われなければなりません。ﾌﾞｰﾄ ﾛｰﾀﾞ自身への予期せぬ書き込みはﾌﾞｰﾄ ﾛｰﾀﾞ全体を不正にし得て、更にｿﾌﾄｳｪｱの更新が不可能になるかもしれません。ﾌﾞｰﾄ ﾛｰﾀﾞ自体の変更が必要ないなら、内部ｿﾌﾄｳｪｱのどんな変更からもﾌﾞｰﾄ ﾛｰﾀﾞを保護するためにﾌﾞｰﾄ施
錠ﾋﾞｯﾄ11(BLB11)をﾌﾟﾛｸﾞﾗﾑ(0)することが推奨されます。

27.7.6. 自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中のRWW領域読み込みの防止
自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中(ﾍﾟｰｼﾞ消去もﾍﾟｰｼﾞ書き込みも)、RWW領域は読み出しに対して常に防がれます。使用者ｿﾌﾄｳｪｱそれ自身が自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ操作中にこの領域がｱﾄﾞﾚｽ指定されるのを防止しなければなりません。SPMCSRのRWWSBはRWW領域が多忙である限り
設定(1)されます。自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中の割り込みﾍﾞｸﾀ表は36頁の「割り込み」で記述されるようにﾌﾞｰﾄ ﾛｰﾀﾞ領域(BLS)へ移動されるべ
きか、または割り込みが禁止されなければなりません。ﾌﾟﾛｸﾞﾗﾐﾝｸﾞが完了した後にRWW領域をｱﾄﾞﾚｽ指定する前に、使用者ｿﾌﾄｳｪｱ
はRWWSREの書き込みによってRWWSBを解除(0)しなければなりません。例については224頁の「ｱｾﾝﾌﾞﾘ言語による簡単なﾌﾞｰﾄ ﾛｰ
ﾀﾞ例」をご覧ください。

27.7.7. SPM命令によるﾌﾞｰﾄ ﾛｰﾀﾞ施錠ﾋﾞｯﾄの設定
ﾌﾞｰﾄ ﾛｰﾀﾞ施錠ﾋﾞｯﾄを解除(0)するには希望したﾃﾞｰﾀをR0に設定してSPMCSRに'X0001001'を書き、SPMCSR書き込み後4ｸﾛｯｸ周期
内にSPM命令を実行してください。ｱｸｾｽ可能な施錠ﾋﾞｯﾄはMCUによるどのｿﾌﾄｳｪｱ更新からも応用とﾌﾞｰﾄ ﾛｰﾀﾞ領域を保護できる
ﾌﾞｰﾄ施錠ﾋﾞｯﾄだけです。
ﾋﾞｯﾄ
R0

7

6

5

4

3

2

1

0

1

1

BLB12

BLB11

BLB02

BLB01

1

1

ﾌﾗｯｼｭ ﾒﾓﾘのｱｸｾｽに影響を及ぼすﾌﾞｰﾄ ﾛｰﾀﾞ施錠ﾋﾞｯﾄの各種設定法については表27-2.と表27-3.をご覧ください。
R0のﾋﾞｯﾄ5～2が解除(0)される場合、SPMCSRでSPMENとﾌﾞｰﾄ施錠ﾋﾞｯﾄ設定(BLBSET)ﾋﾞｯﾄが設定(1)された後4ｸﾛｯｸ周期内にSPM命令が実行されると、対応するﾌﾞｰﾄ施錠ﾋﾞｯﾄがﾌﾟﾛｸﾞﾗﾑ(0)されます。この操作中、Zﾎﾟｲﾝﾀは関係ありませんが、将来との共通性のために、(施錠ﾋﾞｯﾄ読み出しに使われるのと同じ)$0001でZﾎﾟｲﾝﾀを設定することが推奨されます。将来との共通性のため、施錠ﾋﾞｯﾄ書き込
み時、R0のﾋﾞｯﾄ7,6,1,0は1に設定することも推奨されます。施錠ﾋﾞｯﾄをﾌﾟﾛｸﾞﾗﾐﾝｸﾞするとき、この操作中に全てのﾌﾗｯｼｭ ﾒﾓﾘは読むことができます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]221

27.7.8. SPM命令での書き込み時のEEPROM書き込みによる妨害
EEPROM書き込み動作がﾌﾗｯｼｭ ﾒﾓﾘへの全ｿﾌﾄｳｪｱ ﾌﾟﾛｸﾞﾗﾐﾝｸﾞを妨げることに注意してください。ｿﾌﾄｳｪｱからのﾋｭｰｽﾞと施錠ﾋﾞｯﾄ読
み出しもEEPROM書き込み動作中、妨げられます。使用者はEEPROM制御ﾚｼﾞｽﾀ(EECR)のEEPROMﾌﾟﾛｸﾞﾗﾑ許可(EEPE)ﾋﾞｯﾄを検査し、SPM命令制御/状態ﾚｼﾞｽﾀ(SPMCSR)へ書く前にこのﾋﾞｯﾄが解除(0)されているのを確認することが推奨されます。

27.7.9. ｿﾌﾄｳｪｱからのﾋｭｰｽﾞ ﾋﾞｯﾄと施錠ﾋﾞｯﾄの読み出し
ｿﾌﾄｳｪｱからﾋｭｰｽﾞと施錠ﾋﾞｯﾄの両方を読めます。施錠ﾋﾞｯﾄを読むにはZﾎﾟｲﾝﾀに$0001を設定してSPMCSRのSPMENとﾌﾞｰﾄ施錠ﾋﾞｯﾄ
設定(BLBSET)ﾋﾞｯﾄを設定(1)してください。SPMENとBLBSETﾋﾞｯﾄがSPMCSRに設定された後、3CPU周期内にLPM命令が実行されると、施錠ﾋﾞｯﾄの値が転送先ﾚｼﾞｽﾀに格納されます。SPMENとBLBSETﾋﾞｯﾄは施錠ﾋﾞｯﾄ読み出しの完了で、または3CPU周期内にLPM命令が実行されないか、または4CPU周期内にSPM命令が実行されない場合、自動的に解除(0)されます。SPMENとBLBSETﾋﾞｯﾄが解除(0)されると、LPMは命令一式手引書で記述されるように動作します。
ﾋﾞｯﾄ
Rd

7

6

5

4

3

2

1

0

-

-

BLB12

BLB11

BLB02

BLB01

LB2

LB1

ﾋｭｰｽﾞ下位ﾋﾞｯﾄを読む手順は上記の施錠ﾋﾞｯﾄ読み出しと同様です。ﾋｭｰｽﾞ下位ﾋﾞｯﾄを読み出すにはZﾎﾟｲﾝﾀに$0000を設定してSPM
CSRのSPMENとBLBSETﾋﾞｯﾄを設定(1)してください。SPMENとBLBSETﾋﾞｯﾄがSPMCSRに設定された後3CPU周期内にLPM命令が実行されると、以下で示されるようにﾋｭｰｽﾞ下位ﾋﾞｯﾄ(FLB)の値が転送先ﾚｼﾞｽﾀに格納されます。ﾋｭｰｽﾞ下位ﾋﾞｯﾄの配置と詳細な記述については227頁の表28-5.を参照してください。
ﾋﾞｯﾄ
Rd

7

6

5

4

3

2

1

0

FLB7

FLB6

FLB5

FLB4

FLB3

FLB2

FLB1

FLB0

同様に、ﾋｭｰｽﾞ上位ﾋﾞｯﾄを読むにはZﾎﾟｲﾝﾀに$0003を設定してください。SPMENとBLBSETﾋﾞｯﾄがSPMCSRで設定(1)された後3周期内にLPM命令が実行されると、以下で示されるようにﾋｭｰｽﾞ上位ﾋﾞｯﾄ(FHB)の値が転送先ﾚｼﾞｽﾀに格納されます。ﾋｭｰｽﾞ上位ﾋﾞｯﾄの配置と詳細な記述については227頁の表28-4.を参照してください。
ﾋﾞｯﾄ
Rd

7

6

5

4

3

2

1

0

FHB7

FHB6

FHB5

FHB4

FHB3

FHB2

FHB1

FHB0

拡張ﾋｭｰｽﾞ ﾋﾞｯﾄを読む時はZﾎﾟｲﾝﾀに$0002を設定してください。SPMENとBLBSETﾋﾞｯﾄがSPMCSRで設定(1)された後3周期内にLPM命令が実行されると、以下で示されるように拡張ﾋｭｰｽﾞ ﾋﾞｯﾄ(EFB)の値が転送先ﾚｼﾞｽﾀに格納されます。拡張ﾋｭｰｽﾞ ﾋﾞｯﾄの配置と詳細な記述については227頁の表28-3.を参照してください。
ﾋﾞｯﾄ
Rd

7

6

5

4

3

2

1

0

-

-

-

-

EFB3

EFB2

EFB1

EFB0

ﾌﾟﾛｸﾞﾗﾑ(0)されたﾋｭｰｽﾞと施錠ﾋﾞｯﾄは0として読めます。非ﾌﾟﾛｸﾞﾗﾑ(1)にされたﾋｭｰｽﾞと施錠ﾋﾞｯﾄは1として読めます。

27.7.10. ｿﾌﾄｳｪｱからの識票列読み出し
ｿﾌﾄｳｪｱから識票列を読むには右表で与えられる識票ﾊﾞｲﾄ ｱﾄﾞﾚｽをZﾎﾟｲﾝﾀに設定してSPMCSRのSPMENと識票列読み出し(SIGRD)ﾋﾞｯﾄを設定(1)してください。SPMENとSIG
RDﾋﾞｯﾄがSPMCSRに設定された後3CPU周期内にLPM命令が実行されると、識票ﾊﾞｲﾄ値
が転送先ﾚｼﾞｽﾀに格納されます。SPMENとSIGRDﾋﾞｯﾄは識票ﾊﾞｲﾄ読み出しの完了で、または3CPU周期内にLPM命令が実行されない場合、自動的に解除(0)されます。SPMENとSIGRDﾋﾞｯﾄが解除(0)されると、LPMはAVR命令一式説明で記述されるように動作します。

表27-6. 識票列ｱﾄﾞﾚｽ一覧
識票ﾊﾞｲﾄZﾎﾟｲﾝﾀ ｱﾄﾞﾚｽ
ﾃﾞﾊﾞｲｽ識票ﾊﾞｲﾄ 1$0000
ﾃﾞﾊﾞｲｽ識票ﾊﾞｲﾄ 2$0002
ﾃﾞﾊﾞｲｽ識票ﾊﾞｲﾄ 3$0004
RC発振器校正値$0001
注: 他の全てのｱﾄﾞﾚｽは将来の使用に対して予約されています。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]222

27.7.11. ﾌﾗｯｼｭ ﾒﾓﾘ ﾃﾞｰﾀ化けの防止
低VCCの期間中、CPUとﾌﾗｯｼｭ ﾒﾓﾘの正しい動作に対して供給電圧が低すぎるためにﾌﾗｯｼｭ ﾒﾓﾘのﾌﾟﾛｸﾞﾗﾑが不正にされ得ます。
これらの問題はﾌﾗｯｼｭ ﾒﾓﾘを使う基板段階の装置と同じで、同じ設計上の解決策が適用されるべきです。
ﾌﾗｯｼｭ ﾒﾓﾘのﾌﾟﾛｸﾞﾗﾑ化けは電圧が低すぎる時の2つの状態によって起こされます。1つ目としてﾌﾗｯｼｭ ﾒﾓﾘへの通常の書き込み手
順は正しく動作するための最低電圧が必要です。2つ目として供給電圧が低すぎると、CPU自身が命令を間違って実行し得ます。
ﾌﾗｯｼｭ ﾒﾓﾘ化けは次の推奨設計によって容易に避けられます(1つは必須)。
● そのｼｽﾃﾑでﾌﾞｰﾄ ﾛｰﾀﾞ更新が必要ない場合、どんなﾌﾞｰﾄ ﾛｰﾀﾞ ｿﾌﾄｳｪｱ更新をも防ぐためにﾌﾞｰﾄ ﾛｰﾀﾞ施錠ﾋﾞｯﾄをﾌﾟﾛｸﾞﾗﾑ(0)してください。
● 不十分な供給電源電圧の期間中、AVR RESETを活性(Low)に保ってください。これは動作電圧が検出電圧と一致するなら、内部低電圧検出器(BOD)を許可することによって行えます。そうでなければ外部低VCCﾘｾｯﾄ保護回路が使えます。書き込み操作進
行中にﾘｾｯﾄが起こると、その書き込み動作は供給電源電圧が充分であれば完了されます。
● 低VCCの期間中、AVRｺｱをﾊﾟﾜｰﾀﾞｳﾝ休止動作に保ってください。これはCPUが命令の復号と実行を試みるのを防ぎ、SPMCSR
従ってﾌﾗｯｼｭ ﾒﾓﾘを予期せぬ書き込みから効果的に保護します。

27.7.12. SPM命令使用時のﾌﾗｯｼｭ ﾒﾓﾘ用ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ(書き込み)時間
校正された内蔵RC発振器がﾌﾗｯｼｭ ﾒﾓﾘ ｱｸｾｽ時間に使われます。この表はCPUからのﾌﾗｯｼｭ ﾒﾓﾘ ｱｸｾｽに対する代表的なﾌﾟﾛｸﾞﾗ
ﾐﾝｸﾞ時間を示します。
表27-7. SPM命令によるﾌﾗｯｼｭ ﾒﾓﾘのﾌﾟﾛｸﾞﾗﾐﾝｸﾞ時間
項目
SPM命令によるﾌﾗｯｼｭ書き込み (ﾍﾟｰｼﾞ消去、ﾍﾟｰｼﾞ書き込み、施錠ﾋﾞｯﾄ書き込み)

最小
3.7ms

最大
4.5ms

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]223

27.7.13. ｱｾﾝﾌﾞﾘ言語による簡単なﾌﾞｰﾄ ﾛｰﾀﾞ例
このﾙｰﾁﾝはRAMからﾌﾗｯｼｭ ﾒﾓﾘへ1ﾍﾟｰｼﾞのﾃﾞｰﾀを書きます。RAM内の最初のﾃﾞｰﾀ位置はYﾚｼﾞｽﾀによって指示され、ﾌﾗｯｼｭ ﾒﾓﾘ
内の最初のﾃﾞｰﾀ位置はZﾚｼﾞｽﾀによって指示されます。異常処理は含まれません。このﾙｰﾁﾝ(少なくともSPMJｻﾌﾞﾙｰﾁﾝ)はﾌﾞｰﾄ ﾛｰ
ﾀﾞ領域側に配置されなければなりません。NRWW領域側のｺｰﾄﾞだけが自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ(ﾍﾟｰｼﾞ消去とﾍﾟｰｼﾞ書き込み)中に読めます。
使用ﾚｼﾞｽﾀはR0,R1,TMP,CNTL,CNTH,SPMCで、ﾚｼﾞｽﾀの保存と復帰はこのﾙｰﾁﾝ内に含まれず、使用ﾚｼﾞｽﾀはｺｰﾄﾞ量を犠牲にすれば最適化できます。割り込み表がﾌﾞｰﾄ ﾛｰﾀﾞ領域に移動されるか、割り込みが禁止されるかのどちらかが前提です。
ﾍﾟｰｼﾞ内ﾃﾞｰﾀが256ﾊﾞｲﾄ以下の場合は計数器上位が不要になります。また関連する命令も変更になります。これらの部分を赤字で示します(訳注:本行は以下のﾌﾟﾛｸﾞﾗﾑ補正に対応して追加しました)。RAMPZは予め設定されている前提です。
ﾗﾍﾞﾙ

WRPG:

WLP:

RLP:

命令

注釈

.EQU
.ORG

PGSZB = PAGESIZE*2
SMALLBOOTSTART

LDI
CALL

SPMC,(1<<PGERS)+(1<<SPMEN)
SPMJ

LDI
CALL

SPMC,(1<<RWWSRE)+(1<<SPMEN)
SPMJ

LDI
LDI
LD
LD
LDI
CALL
ADIW
SBIW
BRNE

CNTL,LOW(PGSZB)
CNTH,HIGH(PGSZB)
R0,Y+
R1,Y+
SPMC,(1<<SPMEN)SPMJ
ZH:ZL,2
CNTH:CNTL,2
WLP

SUBI
SBCI
LDI
CALL

ZL,LOW(PGSZB)ZH,HIGH(PGSZB)SPMC,(1<<PGWRT)+(1<<SPMEN)
SPMJ

LDI
CALL

SPMC,(1<<RWWSRE)+(1<<SPMEN)
SPMJ

LDI
LDI
SUBI
SBCI
LPM
LD
CPSE
JMP

CNTL,LOW(PGSZB)
CNTH,HIGH(PGSZB)YL,LOW(PGSZB)YH,HIGH(PGSZB)
R0,Z+
R1,Y+
R0,R1
ERROR

SBIW
BRNE

CNTH:CNTL,1
RLP

IN
SBRS
RET

TMP,SPMCSR
TMP,RWWSB

LDI
CALL
RJMP

SPMC,(1<<RWWSRE)+(1<<SPMEN)
SPMJ
RTN

IN
SBRC
RJMP

TMP,SPMCSR
TMP,SPMEN
SPMJ

IN
CLI
SBIC
RJMP

TMP,SREG; PGSZBはﾍﾟｰｼﾞ内のﾊﾞｲﾄ数です。(PAGESIZEはﾜｰﾄﾞ数);; [ ﾍﾟｰｼﾞ消去 ]; ﾍﾟｰｼﾞ消去SPMCSR値を取得; ﾍﾟｰｼﾞ消去; [ RWW領域読み出し再許可 ]; RWW領域読み出し許可SPMCSR値を取得; RWW領域読み出し許可; [ RAMからﾌﾗｯｼｭ ﾍﾟｰｼﾞ一時緩衝部へ転送 ]; ﾊﾞｲﾄ計数器を初期化; (削除); RAM上の下位ﾃﾞｰﾀを取得(ﾎﾟｲﾝﾀ進行); RAM上の上位ﾃﾞｰﾀを取得(ﾎﾟｲﾝﾀ進行); ﾍﾟｰｼﾞ一時緩衝部書き込みSPMCSR値を取得; 対応語(ﾜｰﾄﾞ)ﾃﾞｰﾀをﾍﾟｰｼﾞ一時緩衝部に設定; ﾍﾟｰｼﾞ一時緩衝部ﾎﾟｲﾝﾀ進行; 計数器を減数 (SUBI); 指定ﾊﾞｲﾄ数分継続; [ ﾍﾟｰｼﾞ書き込み ]; ﾍﾟｰｼﾞ一時緩衝部先頭にﾎﾟｲﾝﾀを復帰; (削除); ﾌﾗｯｼｭ書き込みSPMCSR値を取得; ﾌﾗｯｼｭ ﾒﾓﾘ ﾍﾟｰｼﾞ書き込み; [ RWW領域読み出し再許可 ]; RWW領域読み出し許可SPMCSR値を取得; RWW領域読み出し許可; [ 読み戻し照合 (任意) ]; ﾊﾞｲﾄ計数器を初期化; (削除); RAMﾃﾞｰﾀ先頭にﾎﾟｲﾝﾀを復帰;; ﾌﾗｯｼｭ ﾒﾓﾘから1ﾊﾞｲﾄ取得(ﾎﾟｲﾝﾀ進行); RAMから1ﾊﾞｲﾄ ﾃﾞｰﾀを取得(ﾎﾟｲﾝﾀ進行); 値一致でｽｷｯﾌﾟ; 不一致で異常処理へ

;
:
RTN:
;

SPMJ:

; ｶｳﾝﾀを減数 (SUBI); 指定ﾊﾞｲﾄ数分継続; [ RWW領域へ復帰 ]; SPM命令制御/状態ﾚｼﾞｽﾀ値を取得; RWW領域多忙でｽｷｯﾌﾟ; 準備可で呼び出し元へ復帰; [ RWW領域読み出し再許可 ]; RWW領域読み出し許可SPMCSR値を取得; RWW領域読み出し許可; RWW領域準備可まで待機へ; [ SPM命令実行ｻﾌﾞﾙｰﾁﾝ ]; SPM命令制御/状態ﾚｼﾞｽﾀ値を取得; 操作可能(直前のSPM完了)でｽｷｯﾌﾟ; 操作可まで待機;
WAIT:

EECR,EEWE
WAIT; ｽﾃｰﾀｽ ﾚｼﾞｽﾀ値を保存; 全割り込み禁止; EEPROM書き込み中以外でｽｷｯﾌﾟ; EEPROM書き込み完了まで待機

;
OUT
SPM
OUT
RET

SPMCSR,SPMC
SREG,TMP; SPM動作指定; 対応SPM動作実行; ｽﾃｰﾀｽ ﾚｼﾞｽﾀ値を復帰; 呼び出し元へ復帰

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

224

27.7.14. ATmega16U4/32U4用ﾌﾞｰﾄ ﾛｰﾀﾞのﾊﾟﾗﾒｰﾀ
自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞの記述で使ったﾊﾟﾗﾒｰﾀは以下の表を通して与えられます。
表27-8. 応用領域とﾌﾞｰﾄ ﾛｰﾀﾞ領域の分割設定 (上段:ATmega16U4,下段:ATmega32U4)
ｱﾄﾞﾚｽ範囲
ﾌﾞｰﾄ ﾛｰﾀﾞ領域
BOOTSZ1 BOOTSZ0
容量(ﾜｰﾄﾞ) ﾍﾟｰｼﾞ数
応用ﾌﾟﾛｸﾞﾗﾑ領域
ﾌﾞｰﾄ ﾛｰﾀﾞ ﾌﾟﾛｸﾞﾗﾑ領域$0000～$1EFF$1F00～$1FFF
1
256
4
1
$0000～$3EFF$3F00～$3FFF$0000～$1DFF$1E00～$1FFF
0
512
8
1
$0000～$3DFF$3E00～$3FFF$0000～$1BFF$1C00～$1FFF
1
1024
16
0
$0000～$3BFF$3C00～$3FFF$0000～$17FF$1800～$1FFF
0
0
2048
32
$0000～$37FF$3800～$3FFF
注: 各種BOOTSZﾋｭｰｽﾞ設定は図27-2.で示されます。

ﾌﾞｰﾄ ﾘｾｯﾄ ｱﾄﾞﾚｽ
$1F00
$3F00
$1E00
$3E00
$1C00
$3C00
$1800
$3800

表27-9. RWW領域とNRWW領域の範囲 (上段:ATmega16U4,下段:ATmega32U4)
領域ﾍﾟｰｼﾞ数96
書き込み中読み出し可能(RWW)領域
224

ｱﾄﾞﾚｽ範囲$0000～$17FF$0000～$37FF$1800～$1FFF
書き込み中読み出し不能(NRWW)領域
32$3800～$3FFF
注: これら2つの領域についての詳細に関しては216頁の「RWW - 書き込み中読み出し可能領域」と「NRWW - 書き込み中読み出
し不能領域」をご覧ください。
表27-10. 図27-4.で使った各変数説明とZﾎﾟｲﾝﾀの配置 (上段:ATmega16U4,下段:ATmega32U4)
対応値
変数名
意味 (注1)
Zﾎﾟｲﾝﾀ (注2)PC
ｶｳﾝﾀは13ﾋﾞｯﾄ、PC12～0)
PC12
PCMSB
ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀの最上位ﾋﾞｯﾄ。 (ﾌﾟﾛｸﾞﾗﾑ
PC13(ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀは14ﾋﾞｯﾄ、PC13～0)
PAGEMSBPC5

ZPCMSB

Z13
Z14

ZPAGEMSB

Z6

1ﾍﾟｰｼﾞ内に使われる語(ﾜｰﾄﾞ)ｱﾄﾞﾚｽの最上位ﾋﾞｯﾄ。
(ﾍﾟｰｼﾞ内の64語(ﾜｰﾄﾞ)には6ﾋﾞｯﾄ PC5～0が必要)
PCMSBに配置される(対応する)Zﾚｼﾞｽﾀ内のﾋﾞｯﾄ。
(Z0が使われないため、ZPCMSB=PCMSB+1)
PAGEMSBに配置される(対応する)Zﾚｼﾞｽﾀ内のﾋﾞｯﾄ。
(Z0が使われないため、ZPAGEMSB=PAGEMSB+1)

PCPAGE

PC12～6
PC13～6

Z13～7
Z14～7

ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ ﾍﾟｰｼﾞ ｱﾄﾞﾚｽ : ﾍﾟｰｼﾞ消去とﾍﾟｰｼﾞ書き込み用のﾍﾟｰｼﾞ選択

PCWORD

PC5～0

Z6～1

ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ 語(ﾜｰﾄﾞ)ｱﾄﾞﾚｽ : 一時緩衝部格納用語(ﾜｰﾄﾞ)選択(ﾍﾟｰｼﾞ書き込み操作中は0でなければなりません。)

注1: Z0 : 全てのSPM命令に対して0であるべきで、LPM命令に対するﾊﾞｲﾄ選択です。
注2: 自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中のZﾎﾟｲﾝﾀの使用についての詳細に関しては220頁の「自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中のﾌﾗｯｼｭ ﾒﾓﾘのｱﾄﾞﾚｽ指定」をご覧ください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

225

28. ﾒﾓﾘ ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
28.1. ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘとﾃﾞｰﾀ ﾒﾓﾘ用施錠ﾋﾞｯﾄ
本ﾃﾞﾊﾞｲｽは非ﾌﾟﾛｸﾞﾗﾑ(1)のままか、表28-2.で一覧される付加機能を得るためにﾌﾟﾛｸﾞﾗﾑ(0)できる6つの施錠ﾋﾞｯﾄを提供します。この
施錠ﾋﾞｯﾄはﾁｯﾌﾟ消去指令でのみ1に消去できます。
表28-1. 施錠ﾋﾞｯﾄ ﾊﾞｲﾄの内容
名称

ﾋﾞｯﾄ番号

意味

7
6
BLB12
5
ﾌﾞｰﾄ ﾛｰﾀﾞ領域に対する保護用ﾌﾞｰﾄ施錠ﾋﾞｯﾄ
BLB11
4
BLB02
3
応用領域に対する保護用ﾌﾞｰﾄ施錠ﾋﾞｯﾄ
BLB01
2
LB2
1
ﾌﾗｯｼｭとEEPROMﾒﾓﾘに対する
一般保護用施錠ﾋﾞｯﾄ
LB10
注: 0はﾌﾟﾛｸﾞﾗﾑ、1は非ﾌﾟﾛｸﾞﾗﾑを意味します。

既定値 (注)ATmega16U4/32U4
ATmega16U4RC/32U4RC
1 (非ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
0 (ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
0 (ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
0 (ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)

表28-2. 施錠ﾋﾞｯﾄの保護種別
ﾒﾓﾘ施錠ﾋﾞｯﾄ
LB2
LB 種別
LB1
1
1
1

保護種別
直列、並列、またはJTAG経由ﾌﾟﾛｸﾞﾗﾐﾝｸﾞに対する保護
ﾒﾓﾘ施錠機能は機能しません。
ﾌﾗｯｼｭ、EEPROMの更なるﾌﾟﾛｸﾞﾗﾐﾝｸﾞ(書き込み)が禁止されます。ﾋｭｰｽﾞ ﾋﾞｯﾄが固定され
2
1
0ます。 (注1)
ﾌﾗｯｼｭ、EEPROMの更なるﾌﾟﾛｸﾞﾗﾐﾝｸﾞ(書き込み)と照合(読み出し)が禁止されます。ﾋｭｰｽﾞ
300ﾋﾞｯﾄとﾌﾞｰﾄ施錠ﾋﾞｯﾄが固定されます。 (注1)
BLB01
ﾌﾗｯｼｭ ﾒﾓﾘの応用ﾌﾟﾛｸﾞﾗﾑ領域に対する保護
LB0 種別BLB02
1
1
1
LPM, SPM命令が応用領域をｱｸｾｽすることに対して制限はありません。
2
1
0
SPM命令は応用領域に書くことを許されません。
SPM命令による応用領域への書き込みと、ﾌﾞｰﾄ ﾛｰﾀﾞ領域でのLPM命令による応用領域か
300
らの読み込みが許されません。 (注2)401
ﾌﾞｰﾄ ﾛｰﾀﾞ領域でのLPM命令による応用領域からの読み込みが許されません。 (注2)
BLB11
ﾌﾗｯｼｭ ﾒﾓﾘのﾌﾞｰﾄ ﾛｰﾀﾞ ﾌﾟﾛｸﾞﾗﾑ領域に対する保護
LB1 種別BLB121
1
1LPM, SPM命令がﾌﾞｰﾄ ﾛｰﾀﾞ領域をｱｸｾｽすることに対して制限はありません。
2
1
0
SPM命令はﾌﾞｰﾄ ﾛｰﾀﾞ領域に書くことを許されません。
SPM命令によるﾌﾞｰﾄ ﾛｰﾀﾞ領域への書き込みと、応用領域でのLPM命令によるﾌﾞｰﾄ ﾛｰﾀﾞ
300領域からの読み込みが許されません。 (注3)401
応用領域でのLPM命令によるﾌﾞｰﾄ ﾛｰﾀﾞ領域からの読み込みが許されません。 (注3)
注: 0はﾌﾟﾛｸﾞﾗﾑ、1は非ﾌﾟﾛｸﾞﾗﾑを意味します。
注1: 施錠ﾋﾞｯﾄを書く前にﾋｭｰｽﾞ ﾋﾞｯﾄとﾌﾞｰﾄ施錠ﾋﾞｯﾄを書いてください。
注2: BLB02=0で、割り込みﾍﾞｸﾀがﾌﾞｰﾄ ﾛｰﾀﾞ領域に配置されていると、応用領域での実行時に割り込みが禁止されます。
注3: BLB12=0で、割り込みﾍﾞｸﾀが応用領域に配置されていると、ﾌﾞｰﾄ ﾛｰﾀﾞ領域での実行時に割り込みが禁止されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]226

28.2. ﾋｭｰｽﾞ ﾋﾞｯﾄ本ﾃﾞﾊﾞｲｽには3つのﾋｭｰｽﾞ ﾊﾞｲﾄがあります。表28-3.～5.は全てのﾋｭｰｽﾞの概略機能とﾋｭｰｽﾞ ﾊﾞｲﾄ内でどのように配置されるかを示します。ﾋｭｰｽﾞはﾌﾟﾛｸﾞﾗﾑされると、論理0として読まれることに注意してください。
表28-3. 拡張ﾋｭｰｽﾞ ﾊﾞｲﾄ一覧
名称

ﾋﾞｯﾄ

意味

7
6
5
4
HWBE
3
ﾊｰﾄﾞｳｪｱ ﾌﾞｰﾄ許可(HWBﾋﾟﾝ有効)。
BODLEVEL2
2
BODLEVEL1
1
低電圧検出(BOD)ﾘｾｯﾄの制御と検出電圧選択。
BODLEVEL00
注1: BODLEVELﾋｭｰｽﾞの符号化については31頁の表8-1.をご覧ください。

既定値
ATmega16U4/32U4 ATmega16U4RC/32U4RC
1 (非ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
0 (ﾌﾟﾛｸﾞﾗﾑ) 許可 1 (非ﾌﾟﾛｸﾞﾗﾑ) 不許可
0 (ﾌﾟﾛｸﾞﾗﾑ)(注1) 1 (非ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)

表28-4. ﾋｭｰｽﾞ上位ﾊﾞｲﾄ一覧
名称
ﾋﾞｯﾄ
意味
既定値
OCDEN (注4)7内蔵ﾃﾞﾊﾞｯｸﾞ機能(OCD)許可。
1 (非ﾌﾟﾛｸﾞﾗﾑ) OCD禁止
JTAGEN (注5)
6
JTAGｲﾝﾀｰﾌｪｰｽ許可。
0 (ﾌﾟﾛｸﾞﾗﾑ) JTAG許可SPIEN (注1)5直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可。
0 (ﾌﾟﾛｸﾞﾗﾑ) 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可
WDTON (注3)4
ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ常時有効。
1 (非ﾌﾟﾛｸﾞﾗﾑ) WDTはWDTCSRで許可
EESAVE3
ﾁｯﾌﾟ消去からEEPROM内容を保護。
1 (非ﾌﾟﾛｸﾞﾗﾑ) EEPROM内容保護なし
BOOTSZ1
20 (ﾌﾟﾛｸﾞﾗﾑ)ﾌﾞｰﾄ ﾛｰﾀﾞ容量選択。(表27-8.参照)(注2)
0 (ﾌﾟﾛｸﾞﾗﾑ)
BOOTSZ0
1
BOOTRST0
ﾘｾｯﾄ ﾍﾞｸﾀ(応用領域またはﾌﾞｰﾄ ﾛｰﾀﾞ領域)選択。
1 (非ﾌﾟﾛｸﾞﾗﾑ) 応用領域
注1: SPIENﾋｭｰｽﾞは直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞでｱｸｾｽできません。
注2: BOOTSZ1,0既定値は最大ﾌﾞｰﾄ ﾛｰﾀﾞ容量になります。225頁の表27-8.をご覧ください。
注3: 詳細については35頁の「WDTCSR - ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ制御ﾚｼﾞｽﾀ」をご覧ください。
注4: 施錠ﾋﾞｯﾄやJTAGENﾋｭｰｽﾞの設定に拘らず、OCDENﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)された製品の出荷は決してありません。ﾌﾟﾛｸﾞﾗﾑ(0)されたOCDENﾋｭｰｽﾞは全休止形態でｸﾛｯｸ系の一部を許可します。これは消費電力の増加になってしまいます。
注5: JTAGｲﾝﾀｰﾌｪｰｽが未接続のままにされる場合、JTAGENﾋｭｰｽﾞは可能ならば禁止されるべきです。これはJTAGｲﾝﾀｰﾌｪｰｽのTDOﾋﾟﾝの静止時電流を避けるためです。
表28-5. ﾋｭｰｽﾞ下位ﾊﾞｲﾄ一覧
既定値
ATmega16U4/32U4 ATmega16U4RC/32U4RC
CKDIV8 (注3)7ｼｽﾃﾑ ｸﾛｯｸ 8分周選択。
0 (ﾌﾟﾛｸﾞﾗﾑ) 8分周
CKOUT (注2)6ｼｽﾃﾑ ｸﾛｯｸ出力許可。
1 (非ﾌﾟﾛｸﾞﾗﾑ) 不許可
SUT1
5
1 (ﾌﾟﾛｸﾞﾗﾑ)
起動時間選択。
0 (非ﾌﾟﾛｸﾞﾗﾑ)
SUT0
4
CKSEL33
1 (非ﾌﾟﾛｸﾞﾗﾑ)
0 (ﾌﾟﾛｸﾞﾗﾑ)CKSEL22
1 (非ﾌﾟﾛｸﾞﾗﾑ)
0 (ﾌﾟﾛｸﾞﾗﾑ)
ｸﾛｯｸ種別選択。
(注1)
1 (非ﾌﾟﾛｸﾞﾗﾑ)
1 (非ﾌﾟﾛｸﾞﾗﾑ)CKSEL110 (ﾌﾟﾛｸﾞﾗﾑ)
0 (ﾌﾟﾛｸﾞﾗﾑ)CKSEL00
注1: CKSEL3～0の既定設定はATmega16U4とATmega32U4に関してｸﾘｽﾀﾙ用低電力発振器、ATmega16U4RCとATmega32U4R
Cに関して内蔵RC発振器になります。詳細については18頁の表6-1.をご覧ください。
注2: CKOUTはﾎﾟｰﾄC7に出力することをｼｽﾃﾑ ｸﾛｯｸに許します。詳細については22頁の「ｸﾛｯｸ出力緩衝部」をご覧ください。
注3: 詳細については22頁の「ｼｽﾃﾑ ｸﾛｯｸ前置分周器」をご覧ください。
名称

ﾋﾞｯﾄ

意味

ﾋｭｰｽﾞ ﾋﾞｯﾄの状態はﾁｯﾌﾟ消去によって影響されません。施錠ﾋﾞｯﾄ1(LB1)がﾌﾟﾛｸﾞﾗﾑ(0)されると、ﾋｭｰｽﾞ ﾋﾞｯﾄが固定されることに注意してください。施錠ﾋﾞｯﾄをﾌﾟﾛｸﾞﾗﾑ(0)する前にﾋｭｰｽﾞ ﾋﾞｯﾄをﾌﾟﾛｸﾞﾗﾐﾝｸﾞ(書き込み)してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

227

28.2.1. ﾋｭｰｽﾞのﾗｯﾁ
ﾋｭｰｽﾞ値はﾃﾞﾊﾞｲｽがﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作へ移行する時にﾗｯﾁされ、ﾋｭｰｽﾞ値の変更はﾃﾞﾊﾞｲｽがﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作を去るまで無効です。これは一旦ﾌﾟﾛｸﾞﾗﾑ(0)されると直ぐに効果があるEESAVEﾋｭｰｽﾞには適用されません。ﾋｭｰｽﾞは通常動作での電源投入でもﾗｯﾁされます。

28.3. 識票ﾊﾞｲﾄ
全てのAtmel ﾏｲｸﾛ ｺﾝﾄﾛｰﾗはﾃﾞﾊﾞｲｽを識別する3ﾊﾞｲﾄの識票符号を持ちます。この符号は直列と並列の両ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作で、またﾃﾞﾊﾞｲｽが施錠されていても読めます。この3ﾊﾞｲﾄは分離された空間に存在します。
ATmega16U4の識票ﾊﾞｲﾄを右に示します。
① $000 : $1E 製造業者Atmelを示します。
② $001 : $94 ﾌﾗｯｼｭ ﾒﾓﾘ容量16Kﾊﾞｲﾄを示します。
③ $002 : $88 ②値$94と合せ、ATmega16U4を示します。
ATmega32U4の識票ﾊﾞｲﾄを右に示します。

① $000 : $1E 製造業者Atmelを示します。
② $001 : $95 ﾌﾗｯｼｭ ﾒﾓﾘ容量32Kﾊﾞｲﾄを示します。
③ $002 : $87 ②値$95と合せ、ATmega32U4を示します。

28.4. 校正ﾊﾞｲﾄ
本ﾃﾞﾊﾞｲｽには内蔵RC発振器用に1ﾊﾞｲﾄの校正値があります。このﾊﾞｲﾄは識票ｱﾄﾞﾚｽ空間でｱﾄﾞﾚｽ$0000の上位ﾊﾞｲﾄにあります。ﾘｾｯ
ﾄ中、校正付き内蔵RC発振器の正しい周波数を保証するために、このﾊﾞｲﾄが発振校正(OSCCAL)ﾚｼﾞｽﾀへ自動的に書かれます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]228

28.5. 並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
本項は本ﾃﾞﾊﾞｲｽのﾌﾟﾛｸﾞﾗﾑ用ﾌﾗｯｼｭ ﾒﾓﾘ、ﾃﾞｰﾀ用EEPROM、ﾒﾓﾘの施錠ﾋﾞｯﾄ、ﾋｭｰｽﾞ ﾋﾞｯﾄの並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞと照合の方法を記述します。特記事項を除いて、ﾊﾟﾙｽ幅は最低250nsと仮定されます。

28.5.1. 信号名

図28-1. 並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ構成図

本項で本ﾃﾞﾊﾞｲｽのいくつかのﾋﾟﾝは並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中の機能を表す信号名で参照されます。図28-1.と表28-6.をご覧ください。後続の表で示されないﾋﾟﾝはﾋﾟﾝ名によって参照されます。
XA0とXA1ﾋﾟﾝはXTAL1ﾋﾟﾝが正ﾊﾟﾙｽを与えられる時に実行される動作を決めます。このﾋﾞｯﾄ符号化は表28-9.で示されます。
WRまたはOEﾊﾟﾙｽ送出時、設定された指令が決める動作が実行されます。各種指令は表28-10.で示されます。

+5V
+12V
RDY/BSY
OE
WR
BS1
XA0
XA1
PAGEL
BS2

RESET
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PE6
XTAL1
GND

VCC
AVCC
PB7～0

DATA

注: 未使用ﾋﾟﾝは浮き状態のままにすべきです。
表28-6. 信号名とﾋﾟﾝ名の関係
信号名
ﾋﾟﾝ名
PD1
RDY/BSY
OE
PD2
WR
PD3
BS1
PD4
XA0
PD5
PD6
XA1
PAGEL
PD7
PE6
BS2
DATA
PB7～0

入出力
出力
入力
入力
入力
入力
入力
入力
入力
入出力

機能
1(High) : 準備可(指令受付可)

0(Low) : 多忙(ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中)
出力許可(負論理)
書き込みﾊﾟﾙｽ(負論理)
ﾊﾞｲﾄ選択1 (表28-7.参照)
XTAL動作ﾋﾞｯﾄ0
XTAL動作ﾋﾞｯﾄ1
ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘとEEPROMﾃﾞｰﾀをﾍﾟｰｼﾞ一時緩衝部に設定
ﾊﾞｲﾄ選択2 (表28-7.参照)
双方向ﾃﾞｰﾀ ﾊﾞｽ (OE=Low時出力)

表28-7. BS2とBS1の符号化(機能)BS2
BS1
ﾌﾗｯｼｭ/EEPROMｱﾄﾞﾚｽ設定
ﾌﾗｯｼｭ ﾒﾓﾘ ﾃﾞｰﾀ設定/読み出し
ﾋｭｰｽﾞ書き込み
ﾋｭｰｽﾞ/施錠ﾋﾞｯﾄ読み出し

1
1
(予約)
(予約)
(予約)
ﾋｭｰｽﾞ上位ﾊﾞｲﾄ

表28-8. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作移行時のﾋﾟﾝ値
ﾋﾟﾝ名
値
ｼﾝﾎﾞﾙ
PAGEL
Prog_enable[3]0
XA1
Prog_enable[2]0
XA0
Prog_enable[1]0Prog_enable[0]BS10

表28-9. XA0とXA1の符号化(機能)XA1
XA0
XTAL1ﾊﾟﾙｽ時の動作
00
ﾌﾗｯｼｭまたはEEPROMのｱﾄﾞﾚｽ設定 (上位/下位はBS1,2で指定)
01
ﾃﾞｰﾀ設定 (ﾌﾗｯｼｭの上位/下位はBS1で指定)
1
0
指令設定
1
1
ｱｲﾄﾞﾙ (動作なし)

表28-10. 指令ﾊﾞｲﾄのﾋﾞｯﾄ符号化
指令ﾊﾞｲﾄ
指令の機能$80 (1000 0000) ﾁｯﾌﾟ消去$40 (0100 0000) ﾋｭｰｽﾞ ﾋﾞｯﾄ書き込み$20 (0010 0000) 施錠ﾋﾞｯﾄ書き込み$10 (0001 0000) ﾌﾗｯｼｭ ﾒﾓﾘ書き込み$11 (0001 0001) EEPROM書き込み

10
拡張上位ﾊﾞｲﾄ
(予約)
拡張ﾋｭｰｽﾞ ﾊﾞｲﾄ
拡張ﾋｭｰｽﾞ ﾊﾞｲﾄ

指令ﾊﾞｲﾄ$08 (0000 1000)$04 (0000 0100)$02 (0000 0010)$03 (0000 0011)

01
上位ﾊﾞｲﾄ
上位ﾊﾞｲﾄﾋｭｰｽﾞ上位ﾊﾞｲﾄ
施錠ﾋﾞｯﾄ00
下位ﾊﾞｲﾄ下位ﾊﾞｲﾄﾋｭｰｽﾞ下位ﾊﾞｲﾄ
ﾋｭｰｽﾞ下位ﾊﾞｲﾄ

指令の機能
識票ﾊﾞｲﾄ、校正ﾊﾞｲﾄ読み出し
ﾋｭｰｽﾞ ﾋﾞｯﾄ、施錠ﾋﾞｯﾄ読み出し
ﾌﾗｯｼｭ ﾒﾓﾘ読み出し
EEPROM読み出し

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]229

表28-11. ﾌﾗｯｼｭ ﾒﾓﾘのﾍﾟｰｼﾞ数とﾍﾟｰｼﾞの語数
ﾃﾞﾊﾞｲｽ
全容量
ﾍﾟｰｼﾞ容量
ATmega16U4
8Kﾜｰﾄﾞ(16Kﾊﾞｲﾄ)
64ﾜｰﾄﾞ
16Kﾜｰﾄﾞ(32Kﾊﾞｲﾄ)
ATmega32U4
表28-12. EEPROMﾒﾓﾘのﾍﾟｰｼﾞ数とﾍﾟｰｼﾞの語数
ﾃﾞﾊﾞｲｽ
全容量
ﾍﾟｰｼﾞ容量
ATmega16U4
512ﾊﾞｲﾄ
4ﾊﾞｲﾄ
1KﾊﾞｲﾄATmega32U4PCWORD
PC5～0

PCWORD
EEA1～0ﾍﾟｰｼﾞ数
128
256

PCPAGE
PC12～6
PC13～6

PCMSB
12
13

ﾍﾟｰｼﾞ数
128
256

PCPAGE
EEA8～2
EEA9～2EEAMSB8928.6. 並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ手順
28.6.1. 並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作への移行
次に示す方法がﾃﾞﾊﾞｲｽを並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作にします。
① VCCとGND間に4.5～5.5Vを印加します。
② RESETをLow(0)にし、XTAL1を少なくとも6回、交互に(High/Low)切り替えます。
③ 229頁の表28-8.で一覧されるProg_enableﾋﾟﾝを全てLow(0)に設定し、最低100ns待ちます。
④ RESETに11.5～12.5Vを印加します。+12VがRESETに印加されてしまった後100ns以内のProg_enableﾋﾟﾝのどんな動きも、ﾃﾞﾊﾞｲｽ
のﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作への移行を失敗させます。
⑤ 新規指令送出前に少なくとも50µs間待ちます。

28.6.2. 効率的なﾌﾟﾛｸﾞﾗﾐﾝｸﾞへの考慮
設定した指令とｱﾄﾞﾚｽはﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中、維持されます。効率的なﾌﾟﾛｸﾞﾗﾐﾝｸﾞを行うために次を考慮すべきです。
● 複数のﾒﾓﾘ領域を読み書きする時に指令設定は一度だけ必要です。
● ﾁｯﾌﾟ消去後のﾌﾗｯｼｭ ﾒﾓﾘと(EESAVEﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されている場合を除き)EEPROM全体の内容は$FFなので、値が$FFのﾃﾞｰﾀ書き込みを飛ばします。
● ｱﾄﾞﾚｽ上位ﾊﾞｲﾄはﾌﾗｯｼｭ ﾒﾓﾘで新規256語(ﾜｰﾄﾞ)枠、EEPROMで新規256ﾊﾞｲﾄ枠の読み書き前に一度だけ必要です。この考慮
は識票ﾊﾞｲﾄ読み出しにも適用されます。

28.6.3. ﾁｯﾌﾟ消去
ﾁｯﾌﾟ消去はﾌﾗｯｼｭ ﾒﾓﾘ、EEPROM(注1)、施錠ﾋﾞｯﾄを消去します。施錠ﾋﾞｯﾄはﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘが完全に消去されてしまうまでﾘｾｯﾄ(消去)
されません。ﾋｭｰｽﾞ ﾋﾞｯﾄは変更されません。ﾁｯﾌﾟ消去はﾌﾗｯｼｭ ﾒﾓﾘやEEPROMが再書き込みされる前に実行されなければなりません。
注1: EESAVEﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されていると、EEPROMはﾁｯﾌﾟ消去中、保護されます。
「ﾁｯﾌﾟ消去」指令設定① XA1をHigh(1)、XA0をLow(0)に設定します。これは指令設定を許可します。
② BS1をLow(0)に設定します。
③ DATAを$80(1000 0000)に設定します。これはﾁｯﾌﾟ消去指令です。
④ XTAL1に正ﾊﾟﾙｽを与えます。これはﾁｯﾌﾟ消去指令を設定します。
⑤ WRに負ﾊﾟﾙｽを与えます。これはﾁｯﾌﾟ消去を開始します。RDY/BSYがLow(0)になります。
⑥ 次の指令を設定する前にRDY/BSYがHigh(1)になるまで待ちます。

(訳注) 原書に於いて、ﾌﾗｯｼｭ ﾒﾓﾘ ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ時のｱﾄﾞﾚｽ指定が拡張ｱﾄﾞﾚｽまで指定するようになっています。然しながらﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
時のｱﾄﾞﾚｽ指定は語(ﾜｰﾄﾞ)単位で行うため、64K語(128Kﾊﾞｲﾄ)までの場合は16ﾋﾞｯﾄ幅以内なので、基本的に拡張ｱﾄﾞﾚｽ指定は必要ない筈です。これは128K語(256Kﾊﾞｲﾄ)用のﾃﾞﾊﾞｲｽ記述を複写し、修正を忘れたものと思われます。けれども、将来の展開を予想し、64K語(128Kﾊﾞｲﾄ)を越えるﾃﾞﾊﾞｲｽ用の回路を採用したため、拡張ｱﾄﾞﾚｽの明示的な指定が必要になった、と考えることもできます。
本書では原則的に原書に従いますが、独自追加部分は拡張ｱﾄﾞﾚｽ指定なし、として記述しました。
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]230

28.6.4. ﾌﾗｯｼｭ ﾒﾓﾘ書き込み (図28-3.ﾀｲﾐﾝｸﾞを参照)
ﾌﾗｯｼｭ ﾒﾓﾘはﾍﾟｰｼﾞで構成されます(230頁の表28-11.参照)。ﾌﾗｯｼｭ ﾒﾓﾘへ書く時にﾌﾟﾛｸﾞﾗﾑ ﾃﾞｰﾀはﾍﾟｰｼﾞ緩衝部にﾗｯﾁされます。
これは同時に書かれることをﾌﾟﾛｸﾞﾗﾑ ﾃﾞｰﾀの1ﾍﾟｰｼﾞに許します。次の手順は完全なﾌﾗｯｼｭ ﾒﾓﾘの書き込み方法を記述します。
Ａ. 「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」指令設定① XA1をHigh(1)、XA0をLow(0)に設定します。これは指令設定を許可します。
② BS1をLow(0)に設定します。
③ DATAを$10(0001 0000)に設定します。これはﾌﾗｯｼｭ ﾒﾓﾘ書き込み指令です。
④ XTAL1に正ﾊﾟﾙｽを与えます。これはﾌﾗｯｼｭ ﾒﾓﾘ書き込み指令を設定します。
Ｂ. ｱﾄﾞﾚｽ下位ﾊﾞｲﾄ (ｱﾄﾞﾚｽ ﾋﾞｯﾄ7～0) 設定① XA1をLow(0)、XA0をLow(0)に設定します。これはｱﾄﾞﾚｽ設定を許可します。
② BS2をLow(0)、BS1をLow(0)に設定します。これは下位ｱﾄﾞﾚｽ(ﾊﾞｲﾄ)を選択します。
③ DATAにｱﾄﾞﾚｽ下位ﾊﾞｲﾄ($00～$FF)を設定します。
④ XTAL1に正ﾊﾟﾙｽを与えます。これはｱﾄﾞﾚｽ下位ﾊﾞｲﾄを設定します。
Ｃ. ﾃﾞｰﾀ下位ﾊﾞｲﾄ設定① XA1をLow(0)、XA0をHigh(1)に設定します。これはﾃﾞｰﾀ設定を許可します。
② DATAにﾃﾞｰﾀ下位ﾊﾞｲﾄ($00～$FF)を設定します。
③ XTAL1に正ﾊﾟﾙｽを与えます。これはﾃﾞｰﾀ下位ﾊﾞｲﾄを設定します。
Ｄ. ﾃﾞｰﾀ上位ﾊﾞｲﾄ設定① BS1をHigh(1)に設定します。これは上位ﾊﾞｲﾄを選択します。
② XA1をLow(0)、XA0をHigh(1)に設定します。これはﾃﾞｰﾀ設定を許可します。
③ DATAにﾃﾞｰﾀ上位ﾊﾞｲﾄ($00～$FF)を設定します。
④ XTAL1に正ﾊﾟﾙｽを与えます。これはﾃﾞｰﾀ上位ﾊﾞｲﾄを設定します。
Ｅ. 語(ﾜｰﾄﾞ)ﾃﾞｰﾀをﾍﾟｰｼﾞ一時緩衝部に設定① BS1をHigh(1)にします。これは上位ﾊﾞｲﾄを選択します。
② PAGELに正ﾊﾟﾙｽを与えます。これは語ﾃﾞｰﾀをﾍﾟｰｼﾞ一時緩衝部にﾗｯﾁ(設定)します。
Ｆ. 緩衝部全体が満たされるか、または(必要な)全てのﾃﾞｰﾀが緩衝部内に設定されるまで、Ｂ～Ｅを繰り返し
ｱﾄﾞﾚｽ内の下位ﾋﾞｯﾄがﾍﾟｰｼﾞ内の語(ﾜｰﾄﾞ)位置を指示する一方、上位ﾋﾞｯﾄがﾌﾗｯｼｭ ﾒﾓﾘ内のﾍﾟｰｼﾞをｱﾄﾞﾚｽ指定します。これは次頁の図28-2.で図示されます。ﾍﾟｰｼﾞ内の語ｱﾄﾞﾚｽに8ﾋﾞｯﾄ未満が必要とされる場合(ﾍﾟｰｼﾞ容量<256)、ｱﾄﾞﾚｽ下位ﾊﾞｲﾄの最上位(側)ﾋﾞｯﾄがﾍﾟｰｼﾞ書き込み実行時のﾍﾟｰｼﾞ ｱﾄﾞﾚｽに使われることに注意してください。
Ｇ. ｱﾄﾞﾚｽ上位ﾊﾞｲﾄ (ｱﾄﾞﾚｽ ﾋﾞｯﾄ15～8) 設定① XA1をLow(0)、XA0をLow(0)に設定します。これはｱﾄﾞﾚｽ設定を許可します。
② BS2をLow(0)、BS1をHigh(1)に設定します。これは上位ｱﾄﾞﾚｽ(ﾊﾞｲﾄ)を選択します。
③ DATAにｱﾄﾞﾚｽ上位ﾊﾞｲﾄ($00～$1F/$3F)を設定します。
④ XTAL1に正ﾊﾟﾙｽを与えます。これはｱﾄﾞﾚｽ上位ﾊﾞｲﾄを設定します。
Ｈ. ｱﾄﾞﾚｽ上位拡張ﾊﾞｲﾄ (ｱﾄﾞﾚｽ ﾋﾞｯﾄ23～16) 設定① XA1をLow(0)、XA0をLow(0)に設定します。これはｱﾄﾞﾚｽ設定を許可します。
② BS2をHigh(1)、BS1をLow(0)に設定します。これは上位拡張ｱﾄﾞﾚｽ(ﾊﾞｲﾄ)を選択します。
③ DATAにｱﾄﾞﾚｽ上位ﾊﾞｲﾄ($00)を設定します。
④ XTAL1に正ﾊﾟﾙｽを与えます。これはｱﾄﾞﾚｽ上位拡張ﾊﾞｲﾄを設定します。
Ｉ. ﾍﾟｰｼﾞ書き込み① BS1をLow(0)に設定します。
② WRに負ﾊﾟﾙｽを与えます。これはﾃﾞｰﾀのﾍﾟｰｼﾞ全体の書き込みを開始します。RDY/BSYがLow(0)になります。
③ RDY/BSYがHigh(1)になるまで待ちます。
Ｊ. ﾌﾗｯｼｭ ﾒﾓﾘ全部が書かれるか、または(必要な)全ﾃﾞｰﾀが書かれてしまうまで、Ｂ～Ｉ を繰り返し
Ｋ. ﾍﾟｰｼﾞ書き込み終了① XA1をHigh(1)、XA0をLow(0)に設定します。これは指令設定を許可します。
② DATAを$00(0000 0000)にします。これは無操作指令です。
③ XTAL1に正ﾊﾟﾙｽを与えます。これは無操作指令を設定し、内部書き込み信号がﾘｾｯﾄされます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

231

～

図28-2. ﾍﾟｰｼﾞで構成されたﾌﾗｯｼｭ ﾒﾓﾘのｱﾄﾞﾚｽ指定
PCMSB
PAGEMSB
ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀ
PCPAGEPCWORDﾌﾗｯｼｭ ﾒﾓﾘ内のﾍﾟｰｼﾞ ｱﾄﾞﾚｽﾍﾟｰｼﾞ内の語(ﾜｰﾄﾞ)ｱﾄﾞﾚｽ
ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘ
ﾍﾟｰｼﾞ
PCWORD (PAGEMSB～0)
$00
ﾍﾟｰｼﾞ
命令語(ﾜｰﾄﾞ)$01$02

PAGEEND
注: PCPAGEとPCWORDは230頁の表28-11.で一覧されます。
図28-3. ﾌﾗｯｼｭ ﾒﾓﾘ書き込みﾀｲﾐﾝｸﾞ

DATA

Ａ

Ｂ

Ｃ

$10

ｱﾄﾞﾚｽ下位

ﾃﾞｰﾀ下位Ｆ

Ｄ
ﾃﾞｰﾀ上位Ｅ
xx

Ｇ

Ｈ

ｱﾄﾞﾚｽ上位

拡張ｱﾄﾞﾚｽ

I
xx

XA1
XA0
BS1
BS2
XTAL1
WR
RDY/BSY
RESET
OE
PAGEL

H
L
H
L
H
L
H
L
H
L
H
L
H
L
H
L
12V
L
H
L
H
L

注: xx値は無関係です。A～Iは前記ﾌﾟﾛｸﾞﾗﾐﾝｸﾞを参照してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

232

28.6.5. EEPROM書き込み
EEPROMはﾍﾟｰｼﾞで構成されます(230頁の表28-12.参照)。EEPROMを書く時にﾃﾞｰﾀはﾍﾟｰｼﾞ緩衝部にﾗｯﾁされます。これは同時に書かれることをﾃﾞｰﾀの1ﾍﾟｰｼﾞに許します。ﾃﾞｰﾀ用EEPROMﾒﾓﾘの書き込み方法は次のとおりです。(指令、ｱﾄﾞﾚｽ、ﾃﾞｰﾀ設定の詳細については231頁の「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」を参照。図28-4.ﾀｲﾐﾝｸﾞ参照。)
１. EEPROM書き込み指令$11(0001 0001)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＡを参照)
２. ｱﾄﾞﾚｽ上位ﾊﾞｲﾄ($00～$01/$03)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＧを参照)
３. ｱﾄﾞﾚｽ下位ﾊﾞｲﾄ($00～$FF)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＢを参照)
４. ﾃﾞｰﾀ ﾊﾞｲﾄ($00～$FF)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＣを参照)
５. ﾃﾞｰﾀをﾗｯﾁします(PAGELに正ﾊﾟﾙｽを与えます)。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＥを参照)
Ｌ. 緩衝部全体が満たされるまで３～５を繰り返します。
M. EEPROMﾍﾟｰｼﾞ書き込み① BS2をLow(0)、BS1をLow(0)に設定します。
② WRに負ﾊﾟﾙｽを与えます。これはEEPROMﾍﾟｰｼﾞ書き込みを開始します。RDY/BSYがLow(0)になります。
③ 次のﾍﾟｰｼﾞを書く前に、RDY/BSYがHigh(1)になるまで待ちます。
図28-4. EEPROM書き込みﾀｲﾐﾝｸﾞ

DATA

Ａ

Ｇ

Ｂ

L
Ｃ

$11

ｱﾄﾞﾚｽ上位

ｱﾄﾞﾚｽ下位

ﾃﾞｰﾀ

Ｅ
xx

M
xx

H
L
H
L
H
L
H
L
H
L
H
L
H
L
12V
L
H
L
H
L
H
L

XA1
XA0
BS1
XTAL1
WR
RDY/BSY
RESET
OE
BS2
PAGEL

28.6.6. ﾌﾗｯｼｭ ﾒﾓﾘ読み出し
ﾌﾗｯｼｭ ﾒﾓﾘの読み出し方法は次のとおりです。(指令とｱﾄﾞﾚｽ設定の詳細については231頁の「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」を参照)
１. ﾌﾗｯｼｭ ﾒﾓﾘ読み出し指令$02(0000 0010)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＡを参照)
２. ｱﾄﾞﾚｽ拡張ﾊﾞｲﾄ($00)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＨを参照)
３. ｱﾄﾞﾚｽ上位ﾊﾞｲﾄ($00～$1F/$3F)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＧを参照)
４. ｱﾄﾞﾚｽ下位ﾊﾞｲﾄ($00～$FF)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＢを参照)
５. BS1をLow(0)、OEをLow(0)に設定します。ﾌﾗｯｼｭ ﾒﾓﾘ ﾜｰﾄﾞの下位ﾊﾞｲﾄが直ぐにDATAで読めます。
６. BS1をHigh(1)に設定します。ﾌﾗｯｼｭ ﾒﾓﾘ ﾜｰﾄﾞの上位ﾊﾞｲﾄが直ぐにDATAで読めます。
７. OEをHigh(1)に設定します。DATAはHi-Zになります。

28.6.7. EEPROM読み出し
EEPROMの読み出し方法は次のとおりです。(指令とｱﾄﾞﾚｽ設定の詳細については231頁の「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」を参照)
１. EEPROM読み出し指令$03(0000 0011)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＡを参照)
２. ｱﾄﾞﾚｽ上位ﾊﾞｲﾄ($00～$01/$03)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＧを参照)
３. ｱﾄﾞﾚｽ下位ﾊﾞｲﾄ($00～$FF)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＢを参照)
４. BS1をLow(0)、OEをLow(0)に設定します。EEPROMのﾊﾞｲﾄ ﾃﾞｰﾀが直ぐにDATAで読めます。
５. OEをHigh(1)に設定します。DATAはHi-Zになります。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]233

28.6.8. ﾋｭｰｽﾞ ﾋﾞｯﾄ書き込み (訳注:原書での拡張/上位/下位ﾋｭｰｽﾞ項を1つに纏めました。)
各ﾋｭｰｽﾞ ﾊﾞｲﾄの書き込み方法は次のとおりです。(指令とﾃﾞｰﾀ設定の詳細については231頁の「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」を参照)
１. ﾋｭｰｽﾞ ﾋﾞｯﾄ書き込み指令$40(0100 0000)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＡを参照)
２. ﾃﾞｰﾀ下位ﾊﾞｲﾄを設定します。0=ﾌﾟﾛｸﾞﾗﾑ,1=非ﾌﾟﾛｸﾞﾗﾑ(消去)です。 (「ﾌﾗｯｼｭ ﾒﾓﾘ書き込み」のＣを参照)
３. BS1とBS2を右表の目的ﾊﾞｲﾄに対応する設定にします。
表A. ﾋｭｰｽﾞ ﾊﾞｲﾄ対応BS1,BS2設定
４. WRに負ﾊﾟﾙｽを与え、RDY/BSYがHighになるまで待ちます。
BS1
ﾋｭｰｽﾞ ﾊﾞｲﾄBS2
５. ３.でHighに設定したBS1、BS2をLow(0)に戻します。これはﾃﾞｰﾀ下位ﾊﾞｲﾄを選択します。
拡張ﾊﾞｲﾄLow(0) High(1)上位ﾊﾞｲﾄHigh(1) Low(0)下位ﾊﾞｲﾄLow(0) Low(0)図28-5. ﾋｭｰｽﾞ書き込みﾀｲﾐﾝｸﾞ
DATA

Ａ

Ｃ

$40

ﾃﾞｰﾀ

下位ﾋｭｰｽﾞ書き
xx

Ａ

Ｃ

$40

ﾃﾞｰﾀ

上位ﾋｭｰｽﾞ書き
xx

Ａ

Ｃ

$40

ﾃﾞｰﾀ

拡張ﾋｭｰｽﾞ書き
xx

XA1
XA0
BS1
BS2
XTAL1
WR
RDY/BSY
RESET
OE
PAGEL

H
L
H
L
H
L
H
L
H
L
H
L
H
L
H
L
12V
L
H
L
H
L

28.6.9. 施錠ﾋﾞｯﾄ書き込み
施錠ﾋﾞｯﾄの書き込み方法は次のとおりです。(指令とﾃﾞｰﾀ設定の詳細については231頁の「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」を参照)
１. 施錠ﾋﾞｯﾄ書き込み指令$20(0010 0000)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＡを参照)
２. ﾃﾞｰﾀ下位ﾊﾞｲﾄ(としてﾃﾞｰﾀ)を設定します。0=ﾌﾟﾛｸﾞﾗﾑ,1=無変化です。LB保護種別3が設定(LB1とLB2がﾌﾟﾛｸﾞﾗﾑ(0))されると、どの外部的なﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作種別によってもﾌﾞｰﾄ施錠ﾋﾞｯﾄはﾌﾟﾛｸﾞﾗﾐﾝｸﾞできません。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＣを参照)
３. WRに負ﾊﾟﾙｽを与え、RDY/BSYがHighになるまで待ちます。
施錠ﾋﾞｯﾄはﾁｯﾌﾟ消去の実行によってのみ解除(1)できます。

28.6.10. ﾋｭｰｽﾞ ﾋﾞｯﾄと施錠ﾋﾞｯﾄの読み出し
ﾋｭｰｽﾞ ﾋﾞｯﾄと施錠ﾋﾞｯﾄの読み出し方法は次のとおりです。(指令設定の詳細については231頁の「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」を参照)
１. ﾋｭｰｽﾞ ﾋﾞｯﾄと施錠ﾋﾞｯﾄの読み出し指令$04(0000 0100)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＡを参照)
２. BS1とBS2をLow(0)、OEをLow(0)に設定します。ﾋｭｰｽﾞ下位ﾋﾞｯﾄの状態が直ぐにDATAで読めます。(0=ﾌﾟﾛｸﾞﾗﾑ)３. BS1とBS2をHigh(1)、OEをLow(0)に設定します。ﾋｭｰｽﾞ上位ﾋﾞｯﾄの状態が直ぐにDATAで読めます。(0=ﾌﾟﾛｸﾞﾗﾑ)
４. BS1をLow(0)、BS2をHigh(1)、OEをLow(0)に設定します。拡張ﾋｭｰ ｽﾞ ﾋﾞｯﾄの状態が直ぐにDATAで読めます。(0=ﾌﾟﾛｸﾞﾗﾑ)
５. BS1をhigh(1)、BS2をLow(0)、OEをLow(0)に設定します。施錠ﾋﾞｯﾄの状態が直ぐにDATAで読めます。(0=ﾌﾟﾛｸﾞﾗﾑ)
６. OEをHigh(1)に設定します。DATAはHi-Zになります。
図28-6. ﾋｭｰｽﾞ,施錠ﾋﾞｯﾄ読み出し中のBS1, BS2との関係
ﾋｭｰｽﾞ下位ﾊﾞｲﾄ
拡張ﾋｭｰｽﾞ ﾊﾞｲﾄ
施錠ﾋﾞｯﾄﾋｭｰｽﾞ上位ﾊﾞｲﾄ

0
1

0
1

0
1
BS2

DATA

BS1

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]234

28.6.11. 識票ﾊﾞｲﾄ読み出し
識票ﾊﾞｲﾄの読み出し方法は次のとおりです。(指令とｱﾄﾞﾚｽ設定の詳細については231頁の「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」を参照)
１. 識票ﾊﾞｲﾄ読み出し指令$08(0000 1000)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＡを参照)
２. ｱﾄﾞﾚｽ下位ﾊﾞｲﾄ($00～$02)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＢを参照)
３. BS1をLow(0)、OEをLow(0)に設定します。選択した識票ﾊﾞｲﾄが直ぐにDATAで読めます。
４. OEをHigh(1)に設定します。DATAはHi-Zになります。

28.6.12. 校正ﾊﾞｲﾄ読み出し
校正ﾊﾞｲﾄの読み出し方法は次のとおりです。(指令とｱﾄﾞﾚｽ設定の詳細については231頁の「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」を参照)
１. 校正ﾊﾞｲﾄ読み出し指令$08(0000 1000)を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＡを参照)
２. ｱﾄﾞﾚｽ下位ﾊﾞｲﾄに$00を設定します。 (「ﾌﾗｯｼｭ ﾒﾓﾘの書き込み」のＢを参照)
３. BS1をHigh(1)、OEをLow(0)に設定します。校正ﾊﾞｲﾄが直ぐにDATAで読めます。
４. OEをHigh(1)に設定します。DATAはHi-Zになります。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]235

28.6.13. 並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ特性
図28-7. 並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ﾀｲﾐﾝｸﾞ (一般的な必要条件)

tXLWL

XTAL1
設定ﾃﾞｰﾀと制御
DATA, XA0, XA1,
BS1, BS2
PAGEL

tDVXH
tBVPH

tXHXL

tXLDX

tBVWL

tPLBX

tPHPL

tWLBX

tPLWL

WR

tWLWH
tWLRL

RDY/BSY

tWLRH
図28-8. 並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ﾀｲﾐﾝｸﾞ (ﾍﾟｰｼﾞ設定での必要条件)
XTAL1

tXLXH

BS1

tXLPH

tPLXH

PAGEL
DATA

ｱﾄﾞﾚｽ0(下位ﾊﾞｲﾄ)

ﾃﾞｰﾀ (下位ﾊﾞｲﾄ)

ﾃﾞｰﾀ (上位ﾊﾞｲﾄ)

ｱﾄﾞﾚｽ1(下位ﾊﾞｲﾄ)

ｱﾄﾞﾚｽ下位
ﾊﾞｲﾄ指定ﾃﾞｰﾀ下位ﾊﾞｲﾄ指定ﾃﾞｰﾀ上位 ﾃﾞｰﾀ語
ﾊﾞｲﾄ指定 (ﾜｰﾄﾞ)設定

ｱﾄﾞﾚｽ下位
ﾊﾞｲﾄ指定XA0
XA1

注: 図28-7.で示されるﾀｲﾐﾝｸﾞ必要条件(即ち、tDVXH、tXHXL、tXLDX)は設定操作にも適用されます。
図28-9. 並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ﾀｲﾐﾝｸﾞ (同一ﾍﾟｰｼﾞ読み出しでの必要条件)
XTAL1

tXLOL

BS1

tOLDV

tBVDV

OE
DATA

tOHDZ
ｱﾄﾞﾚｽ0(下位ﾊﾞｲﾄ)

ﾃﾞｰﾀ (下位ﾊﾞｲﾄ)

ﾃﾞｰﾀ (上位ﾊﾞｲﾄ)

ｱﾄﾞﾚｽ1(下位ﾊﾞｲﾄ)

ｱﾄﾞﾚｽ下位
ﾊﾞｲﾄ指定ﾃﾞｰﾀ下位読み出し

ﾃﾞｰﾀ上位読み出し

ｱﾄﾞﾚｽ下位
ﾊﾞｲﾄ指定XA0
XA1

注: 図28-7.で示されるﾀｲﾐﾝｸﾞ必要条件(即ち、tDVXH、tXHXL、tXLDX)は読み出し操作にも適用されます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]236

表28-13. 並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ特性 (VCC=5V±10%)
ｼﾝﾎﾞﾙ
項目
VPP
ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可電圧
IPP
ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可電流
XTAL1↑に対するﾃﾞｰﾀと制御の準備時間
tDVXH
XTAL1↓から次XTAL1↑までの待機時間
tXLXH
XTAL1 Highﾊﾟﾙｽ幅tXHXL
XTAL1ﾊﾟﾙｽ↓後のﾃﾞｰﾀと制御の保持時間
tXLDX
XTAL1ﾊﾟﾙｽ↓後のWR↓待機時間
tXLWL
XTAL1ﾊﾟﾙｽ↓後のPAGELﾊﾟﾙｽ↑待機時間
tXLPH
PAGELﾊﾟﾙｽ↓後のXTAL1ﾊﾟﾙｽ↑待機時間
tPLXH
PAGELﾊﾟﾙｽ↑に対するBS1準備時間
tBVPH
PAGEL Highﾊﾟﾙｽ幅
tPHPL
PAGELﾊﾟﾙｽ↓後のBS1保持時間
tPLBXWRﾊﾟﾙｽ↓後のBS1,BS2保持時間
tWLBX
PAGELﾊﾟﾙｽ↓後のWRﾊﾟﾙｽ↓待機時間
tPLWL
WRﾊﾟﾙｽ↓に対するBS1準備時間
tBVWL
WR Lowﾊﾟﾙｽ幅tWLWH
WRﾊﾟﾙｽ↓後のRDY/BSY↓遅延時間
tWLRL
書き込み時間 (WR↓からRDY/BSY↑)
tWLRH
tWLRH_CE ﾁｯﾌﾟ消去時間 (WR↓からRDY/BSY↑)XTAL1ﾊﾟﾙｽ↓後のOE↓待機時間
tXLCL
BS1有効からのDATA遅延時間
tBVDV
OE↓後のDATA出力遅延時間
tOLDV
OE↑後のDATAﾌﾛｰﾃｨﾝｸﾞ遅延時間
tOHDZ

最小
11.5

(注1)
(注2)

67
200
150
67
0
0
150
67
150
67
67
67
67
150
0
3.7
7.5
0
0

代表

最大
12.5
250

単位
V
µA

ns

1
4.5
9
250
250
250

µs
ms

ns

注1: ﾌﾗｯｼｭ ﾒﾓﾘ、EEPROM、ﾋｭｰｽﾞ ﾋﾞｯﾄ、施錠ﾋﾞｯﾄ書き込み指令に対して有効です。
注2: ﾁｯﾌﾟ消去指令に対して有効です。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]237

28.7. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
ﾌﾗｯｼｭ ﾒﾓﾘとEEPROMの両方はRESETがGNDに引かれている間に直列SPIﾊﾞｽを使ってﾌﾟﾛｸﾞﾗﾐﾝｸﾞできます。この直列ｲﾝﾀｰﾌｪｰｽ
はSCK入力、PDI入力、PDO出力から成ります。RESETがLowに設定された後、書き込み/消去操作が実行され得るのに先立ってﾌﾟﾛ
ｸﾞﾗﾐﾝｸﾞ許可命令が初めに実行されるのを必要とします。注意、表28-14.でSPIﾌﾟﾛｸﾞﾗﾐﾝｸﾞ用のﾋﾟﾝ配置が一覧されます。全てのﾃﾞﾊﾞｲ
ｽが内部SPIｲﾝﾀｰﾌｪｰｽに対する専用SPIﾋﾟﾝを使うとは限りません。

28.7.1. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ用ﾋﾟﾝ配置
表28-14. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ用ﾋﾟﾝ配置
入出力
信号名
ﾋﾟﾝ名
PB1
入力
SCK
入力
PDI/MOSI
PB2
PDO/MISOPB3
出力

図28-10. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ構成図
2.7～5.5V
機能
直列ｸﾛｯｸ
直列ﾃﾞｰﾀ入力
直列ﾃﾞｰﾀ出力

(GND)

ｸﾛｯｸ元

EEPROMをﾌﾟﾛｸﾞﾗﾐﾝｸﾞする時に自動消去期間が自動書き込み動作内に組み入れられ(直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞのみ)、ﾁｯﾌﾟ消去命令を初めに実行する必要がありません。ﾁｯﾌﾟ消去操作はﾌﾟﾛｸﾞﾗﾑ(ﾌﾗｯｼｭ ﾒﾓﾘ)とEEPROM両方の全てのﾒﾓﾘ位置の内容を$FFにします。
CKSELﾋｭｰｽﾞによる有効なｸﾛｯｸが与えられなければなりません。直列ｸﾛｯｸ(SCK)入力のLowとHighの区間の最小値は次のように定義されます。

fCK＜12MHz : Low区間＞2CPUｸﾛｯｸ周期
fCK≧12MHz : Low区間＞3CPUｸﾛｯｸ周期

RESET

(注1)

XTAL1
GND

VCC
AVCC
PB1
PB2
PB3

2.7～5.5V
(注2)
SCK
PDI
PDO

注1: ﾃﾞﾊﾞｲｽが内蔵発振器で動作する場合、XTAL1
ﾋﾟﾝにｸﾛｯｸ元を接続する必要はありません。
注2: VCC-0.3V<AVCC<VCC+0.3Vですが、AVCCは
常に2.7～5.5V内にすべきです。

fCK＜12MHz : High区間＞2CPUｸﾛｯｸ周期
fCK≧12MHz : High区間＞3CPUｸﾛｯｸ周期

28.8. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ手順 (訳注:本項の一部を矛盾回避のため修正しました。)
本ﾃﾞﾊﾞｲｽに直列ﾃﾞｰﾀを書く時にﾃﾞｰﾀはSCKの上昇端で行われ、本ﾃﾞﾊﾞｲｽから読む時にﾃﾞｰﾀはSCKの下降端で行われます。ﾀｲﾐﾝ
ｸﾞの詳細については図28-11.をご覧ください。
直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作での本ﾃﾞﾊﾞｲｽのﾌﾟﾛｸﾞﾗﾐﾝｸﾞと照合は次の手順が推奨されます(4ﾊﾞｲﾄ命令形式は表28-16.を参照)。
1. 電源投入手順:
RESETとSCKがLow(0)に設定されている間にVCCとGND間へ電源を印加します。いくつかのｼｽﾃﾑで電源投入中、SCKがLowに保持されるのを書き込み器が保証できません。この場合、SCKがLow(0)に設定されてしまった後、RESETは最低2CPUｸﾛｯｸ周期
幅の正ﾊﾟﾙｽを与えられなければなりません。
2. 最低20ms待ち、PDIﾋﾟﾝにﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可命令を送ることによって直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞを許可してください。
3. 通信が同期を外していると、直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令は動作しません。同期していると、ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可命令の第3ﾊﾞｲﾄ送出時に第2ﾊﾞｲﾄ($53)が戻ります。この戻りが正しいかどうかによらず、命令の4ﾊﾞｲﾄ全てが送信されなければなりません。$53が戻らない場
合、RESETに正ﾊﾟﾙｽを与え、新規ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可命令を行ってください。
4. ﾌﾗｯｼｭ ﾒﾓﾘは1ﾍﾟｰｼﾞ単位で書かれます。ﾍﾟｰｼﾞ容量は230頁の表28-11.で得られます。このﾒﾓﾘ ﾍﾟｰｼﾞはﾍﾟｰｼﾞ設定命令と共にｱ
ﾄﾞﾚｽの下位6+1ﾋﾞｯﾄとﾃﾞｰﾀを供給することによって1ﾊﾞｲﾄづつ設定されます。ﾍﾟｰｼﾞが正しく設定されるのを保証するため、与えられたｱﾄﾞﾚｽでのﾃﾞｰﾀ上位ﾊﾞｲﾄ適用前にﾃﾞｰﾀ下位ﾊﾞｲﾄが設定されなければなりません。ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘのﾍﾟｰｼﾞはｱﾄﾞﾚｽの上位7/8
ﾋﾞｯﾄ(PC12/13～6)を含むﾍﾟｰｼﾞ書き込み命令の設定によって(ﾌﾗｯｼｭ ﾒﾓﾘに)格納されます。この命令が行なわれる前に拡張ｱﾄﾞﾚ
ｽ ﾊﾞｲﾄ設定命令がｱﾄﾞﾚｽのMSB定義に使われていることに注意してください。拡張ｱﾄﾞﾚｽ ﾊﾞｲﾄは本命令が再実行されるまで保存されます。即ち、本命令は初回ﾍﾟｰｼﾞと64K語(ﾜｰﾄﾞ)境界を過ぎる時にだけ実行される必要があります。ﾎﾟｰﾘﾝｸﾞ(BSY/RDY)が使われない場合、使用者は次のﾍﾟｰｼﾞを行う前に最低tWD_FLASH(表28-15.参照)待たなければなりません。ﾌﾗｯｼｭ書き込み操作完了前の(ﾎﾟｰﾘﾝｸﾞ以外の)直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ｲﾝﾀｰﾌｪｰｽでのｱｸｾｽは不正な書き込み結果になり得ます。
5. EEPROMはﾍﾟｰｼﾞ単位かﾊﾞｲﾄ単位のどちらかでﾌﾟﾛｸﾞﾗﾐﾝｸﾞできます。
ﾊﾞｲﾄ単位: EEPROMは適切なEEPROM書き込み命令と共にｱﾄﾞﾚｽとﾃﾞｰﾀを供給することによって1ﾊﾞｲﾄ単位で書かれます。EEP
ROMのﾒﾓﾘ位置は新規ﾃﾞｰﾀが書かれるのに先立って始めで自動的に消去されます。ﾎﾟｰﾘﾝｸﾞ(BSY/RDY)が使われない場合、次のﾊﾞｲﾄを行う前に最低tWD_EEPROM(表28-15.参照)待たなければなりません。
ﾍﾟｰｼﾞ単位: EEPROMの1ﾍﾟｰｼﾞはEEPROMﾍﾟｰｼﾞ設定命令と共にｱﾄﾞﾚｽの下位2ﾋﾞｯﾄとﾃﾞｰﾀを供給することによって1ﾊﾞｲﾄづつ設定されます。EEPROMﾍﾟｰｼﾞはｱﾄﾞﾚｽの上位7/8ﾋﾞｯﾄを含むEEPROMﾍﾟｰｼﾞ書き込み命令によって(EEPROMに)格納されます。EE
PROMﾍﾟｰｼﾞ ｱｸｾｽ使用時、EEPROMﾍﾟｰｼﾞ設定命令で設定したﾊﾞｲﾄ位置だけが変更されます。残りの位置は無変化で留まります。ﾎﾟｰﾘﾝｸﾞ(BSY/RDY)が使われない場合、次ﾍﾟｰｼﾞ(表28-12.参照)を行う前に最低tWD_EEPROM(表28-15.参照)待たなければなりません。ﾁｯﾌﾟ消去されたﾃﾞﾊﾞｲｽでの$FFﾃﾞｰﾀは書かれる必要がありません。
6. どのﾒﾓﾘ位置も選択したｱﾄﾞﾚｽの内容を直列出力PDOに読み戻す読み出し命令を使うことで照合できます。ﾌﾗｯｼｭ ﾒﾓﾘ読み出し
時、ﾌﾗｯｼｭ ﾒﾓﾘ読み出し命令内に含まれない上位ｱﾄﾞﾚｽ ﾊﾞｲﾄ定義に拡張ｱﾄﾞﾚｽ ﾊﾞｲﾄ設定命令を使ってください。拡張ｱﾄﾞﾚｽ ﾊﾞ
ｲﾄはこの命令が再実行されるまで保存されます。換言すると、本命令は初回ﾍﾟｰｼﾞと64K語(ﾜｰﾄﾞ)境界を過ぎる時にだけ実行される必要があります。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]238

7. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ作業終了時、RESETは通常動作を開始するため、High(1)に設定できます。
8. 電源OFF手順 (必要とされるならば)・ RESETをHigh(1)に設定します。
・ VCC電源をOFFにします。
表28-15. ﾋｭｰｽﾞ, ﾌﾗｯｼｭ, EEPROM書き込み待機時間
備考
ｼﾝﾎﾞﾙ
最低待機時間
4.5ms
ﾋｭｰｽﾞ書き込みtWD_FUSE
4.5ms
ﾌﾗｯｼｭ ﾒﾓﾘ書き込み
tWD_FLASH
9.0ms
EEPROM書き込み
tWD_EEPROM
ﾁｯﾌﾟ消去9.0ms
tWD_ERASE

図28-11. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ﾊﾞｲﾄ通信波形
直列ﾃﾞｰﾀ
入力 (PDI)
直列ﾃﾞｰﾀ
出力 (PDO)
直列ｸﾛｯｸ
入力 (SCK)
入力採取位置

MSB

LSB

MSB

LSB

28.8.1. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令一式 (訳注:命令一覧は新記述形式に変更しました。)
表28-16.と次頁の図28-12.は命令一式を記述します。
表28-16. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令一式
命令

第1ﾊﾞｲﾄ
$AC
$AC
$F0

命令形式
第2ﾊﾞｲﾄ
第3ﾊﾞｲﾄ
$53
$00
$80
$00
$00
$00

第4ﾊﾞｲﾄ
$00
$00
状態値

備考

ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可
ﾁｯﾌﾟ消去多忙/準備可検査
最下位ﾋﾞｯﾄが多忙ﾌﾗｸﾞ。
設定系命令
拡張ｱﾄﾞﾚｽ設定 (注1)
$4D
$00
拡張ｱﾄﾞﾚｽ$00
ﾌﾗｯｼｭ ﾍﾟｰｼﾞ内上位ﾊﾞｲﾄ設定$48
ｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位 上位ﾊﾞｲﾄ
ﾌﾗｯｼｭ ﾍﾟｰｼﾞ内下位ﾊﾞｲﾄ設定$40
ｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位 下位ﾊﾞｲﾄ
EEPROMﾍﾟｰｼﾞ内ﾊﾞｲﾄ設定$C1$00ﾍﾟｰｼﾞ内位置
ﾊﾞｲﾄ
注:ﾍﾟｰｼﾞ内指示以外のﾋﾞｯﾄは0。
読み出し命令ﾌﾗｯｼｭ ﾒﾓﾘ上位ﾊﾞｲﾄ読み出し$28
ｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位 上位ﾊﾞｲﾄ
ﾌﾗｯｼｭ ﾒﾓﾘ下位ﾊﾞｲﾄ読み出し$20
ｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位 下位ﾊﾞｲﾄ
EEPROM読み出し$A0
ｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位
ﾊﾞｲﾄ
施錠ﾋﾞｯﾄ読み出し
$58
$00
$00
施錠ﾋﾞｯﾄ値
識票ﾊﾞｲﾄ読み出し
$30
$00
ｱﾄﾞﾚｽ
識票ﾊﾞｲﾄﾋｭｰｽﾞ下位読み出し
$50
$00
$00
ﾋｭｰｽﾞ下位
ﾋｭｰｽﾞ上位読み出し
$58
$08
$00
ﾋｭｰｽﾞ上位
拡張ﾋｭｰｽﾞ読み出し
$50
$08
$00
拡張ﾋｭｰｽﾞ
校正ﾊﾞｲﾄ読み出し
$38
$00
$00
校正ﾊﾞｲﾄ
書き込み命令ﾌﾗｯｼｭ ﾍﾟｰｼﾞ書き込み$4C
ｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位$00
EEPROMﾊﾞｲﾄ書き込み$C0
ｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位
ﾊﾞｲﾄ
EEPROMﾍﾟｰｼﾞ書き込み$C2
ｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位$00
注:ﾍﾟｰｼﾞ指示以外のｱﾄﾞﾚｽ ﾋﾞｯﾄは0。
施錠ﾋﾞｯﾄ書き込み
$AC
$E0
$00
施錠ﾋﾞｯﾄ値
ﾋｭｰｽﾞ下位書き込み
$AC
$A0
$00
ﾋｭｰｽﾞ下位
ﾋｭｰｽﾞ上位書き込み
$AC
$A8
$00
ﾋｭｰｽﾞ上位
拡張ﾋｭｰｽﾞ書き込み
$AC
$A4
$00
拡張ﾋｭｰｽﾞ
注1 : 全命令が全ﾃﾞﾊﾞｲｽで利用可能な訳ではありません。
注: ・ 施錠ﾋﾞｯﾄとﾋｭｰｽﾞ値はﾌﾟﾛｸﾞﾗﾑが0、非ﾌﾟﾛｸﾞﾗﾑが1です。将来との互換性のため、未使用のﾋｭｰｽﾞと施錠ﾋﾞｯﾄは非ﾌﾟﾛｸﾞﾗﾑ(1)にすべきです。
・ ﾋｭｰｽﾞ、施錠ﾋﾞｯﾄ、識票ﾊﾞｲﾄ、校正ﾊﾞｲﾄ、ﾍﾟｰｼﾞ容量については対応項目を参照してください。
・ ﾌﾟﾛｸﾞﾗﾐﾝｸﾞと書き込み器に関する応用記述については http://www.atmel.com/avr をご覧ください。
・ 第4ﾊﾞｲﾄの赤背景はﾎｽﾄ読み込み(ﾃﾞﾊﾞｲｽ出力)を示します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]239

多忙/準備可検査ﾊﾞｲﾄ ﾃﾞｰﾀ出力のLSBが1なら、ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ操作が未だ保留(動作中)です。次の命令が実行される前に本ﾋﾞｯﾄが0に戻るまで待ってください。
同じﾍﾟｰｼﾞ内で、下位ﾊﾞｲﾄ ﾃﾞｰﾀは上位ﾊﾞｲﾄ ﾃﾞｰﾀに先行して格納されなければなりません。
ﾃﾞｰﾀがﾍﾟｰｼﾞ緩衝部に格納された後にEEPROMﾍﾟｰｼﾞをﾌﾟﾛｸﾞﾗﾑしてください。図28-12.をご覧ください。
図28-12. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令例
ﾌﾗｯｼｭ ﾍﾟｰｼﾞ(上位/下位)ﾊﾞｲﾄ設定
またはEEPROMﾍﾟｰｼﾞ設定
第1ﾊﾞｲﾄ

第2ﾊﾞｲﾄ
第3ﾊﾞｲﾄｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位

ﾋﾞｯﾄ 15

ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
命令

第4ﾊﾞｲﾄﾌﾗｯｼｭ ﾒﾓﾘ ﾍﾟｰｼﾞ書き込み
またはEEPROMﾍﾟｰｼﾞ書き込み
第1ﾊﾞｲﾄ0

第2ﾊﾞｲﾄ
第3ﾊﾞｲﾄｱﾄﾞﾚｽ上位 ｱﾄﾞﾚｽ下位

ﾋﾞｯﾄ 15

第4ﾊﾞｲﾄ0ﾍﾟｰｼﾞ番号ﾍﾟｰｼﾞ内ｱﾄﾞﾚｽ(ｵﾌｾｯﾄ)ﾍﾟｰｼﾞ 0ﾍﾟｰｼﾞ 1
ﾍﾟｰｼﾞ緩衝部

ﾍﾟｰｼﾞ 2

ﾍﾟｰｼﾞ n-1
ﾌﾟﾛｸﾞﾗﾑ用ﾌﾗｯｼｭ ﾒﾓﾘ
またはEEPROM(訳補) ﾌﾗｯｼｭ ﾒﾓﾘ、EEPROM、ﾍﾟｰｼﾞ緩衝部内のｱﾄﾞﾚｽ(位置)指定に使うﾋﾞｯﾄはﾒﾓﾘ容量とﾍﾟｰｼﾞ構成に依存します。ATmega16U4/
32U4でのこれらの指定方法は次表で要約されます。
表B. ｱﾄﾞﾚｽ(第2,3ﾊﾞｲﾄ)指定法
命令
第2ﾊﾞｲﾄ
拡張ｱﾄﾞﾚｽ設定
ﾌﾗｯｼｭ ﾍﾟｰｼﾞ内ﾊﾞｲﾄ設定
0000 0000
EEPROMﾍﾟｰｼﾞ内ﾊﾞｲﾄ設定 0000 0000
000H HHHH
ﾌﾗｯｼｭ ﾒﾓﾘ読み出し
00HH HHHH
0000 000H
EEPROM読み出し
0000 00HH
000H HHHH
ﾌﾗｯｼｭ ﾍﾟｰｼﾞ書き込み
00HH HHHH
0000 000H
EEPROMﾊﾞｲﾄ書き込み
0000 00HH
0000 000H
EEPROMﾍﾟｰｼﾞ書き込み
0000 00HH

第3ﾊﾞｲﾄ
該当命令なし00LL LLLL ATmega16U4/32U40000 00LL ATmega16U4/32U4
ATmega16U4
LLLL LLLL
ATmega32U4
ATmega16U4
LLLL LLLL
ATmega32U4
ATmega16U4
LL00 0000
ATmega32U4
ATmega16U4
LLLL LLLL
ATmega32U4
ATmega16U4
LLLL LL00
ATmega32U4

備考: L=PC5～0: L=EEA1～0: H=PC12～8,L=PC7～0: H=PC13～8,L=PC7～0: H=EEA8,L=EEA7～0: H=EEA9～8,L=EEA7～0: H=PC12～8,L=PC7～6: H=PC13～8,L=PC7～6: H=EEA8,L=EEA7～0: H=EEA9～8,L=EEA7～0: H=EEA8,L=EEA7～2: H=EEA9～8,L=EEA7～2

28.8.2. 直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ特性
SPI部の特性については252頁の「SPIﾀｲﾐﾝｸﾞ特性」を参照してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]240

28.9. JTAGｲﾝﾀｰﾌｪｰｽ経由のﾌﾟﾛｸﾞﾗﾐﾝｸﾞ
JTAGｲﾝﾀｰﾌｪｰｽを通すﾌﾟﾛｸﾞﾗﾐﾝｸﾞは4つのJTAG仕様ﾋﾟﾝ、TCK,TMS,TDI,TDOの制御が必要です。RESETﾋﾟﾝとｸﾛｯｸ ﾋﾟﾝの制御は必要とされません。
JTAGｲﾝﾀｰﾌｪｰｽが使われ得るにはJTAGENﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗﾑ(0)されなければなりません。このﾃﾞﾊﾞｲｽは既定でこのﾋｭｰｽﾞがﾌﾟﾛｸﾞﾗ
ﾑ(0)されて出荷されます。更にMCU制御ﾚｼﾞｽﾀ(MCUCR)のJTAGｲﾝﾀｰﾌｪｰｽ禁止(JTD)ﾋﾞｯﾄが解除(0)されなければなりません。JTD
ﾋﾞｯﾄが設定(1)の場合、代わりに外部ﾘｾｯﾄを強制的なLowにできます。その後、2ﾁｯﾌﾟ(CPU)ｸﾛｯｸ後にJTDﾋﾞｯﾄが解除(0)され、JTAG
ﾋﾟﾝはﾌﾟﾛｸﾞﾗﾐﾝｸﾞに利用できます。これはJTAGｲﾝﾀｰﾌｪｰｽ経由実装書き込みを許すにも拘らず、一方、実行動作で標準ﾎﾟｰﾄ ﾋﾟﾝとしてJTAGﾋﾟﾝを使う手段を提供します。境界走査(Boundary-Scan)や内蔵ﾃﾞﾊﾞｯｸﾞ機能にJTAGﾋﾟﾝを使う時にこの手法が使えないことに注意してください。これらの場合のJTAGﾋﾟﾝはその目的専用にされなければなりません。
ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中、TCK入力のｸﾛｯｸ周波数はﾁｯﾌﾟの最高周波数よりも低くなければなりません。ｼｽﾃﾑ ｸﾛｯｸ前置分周器はTCKｸﾛｯｸ入力を充分に低い周波数へ分周するのには使えません。
この資料内の定義では全ての移動ﾚｼﾞｽﾀについて入出力ともLSBが最初に移動されます。

28.9.1. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ特殊JTAG命令
命令ﾚｼﾞｽﾀ(IR)は4ﾋﾞｯﾄ長で、16種類までの命令を支援します。以下に示される一覧はﾌﾟﾛｸﾞﾗﾐﾝｸﾞに有用なJTAG命令です。
各命令の命令ｺｰﾄﾞは命令名後の16進形式で示されます。本文は各命令についてTDIとTDO間の経路として選択されるﾃﾞｰﾀ ﾚｼﾞｽﾀを記述します。
検査入出力ﾎﾟｰﾄ(TAP)制御器の検査実行/ｱｲﾄﾞﾙ
状態は内部ｸﾛｯｸの発生に使われます。また、JTA
G手順間のｱｲﾄﾞﾙ状態としても使えます。命令を切り替えるための順次回路の順番は図28-13.で示されます。

図28-13. 命令語変更手順時順次回路状態遷移図1

検査回路ﾘｾｯﾄ01
0 検査実行/ｱｲﾄﾞﾙ

DR : ﾃﾞｰﾀ ﾚｼﾞｽﾀ1
DR走査選択
0
1
DR捕獲
0
DR移動
0
1
1
DR終了1
0
DR一時停止 0
1
0
DR終了2
1
DR更新
1
0

IR : 命令ﾚｼﾞｽﾀ1
IR走査選択
0
1
IR捕獲
0
IR移動
0
1
1
IR終了1
0
IR一時停止 0
1
0
IR終了2
1
IR更新
1
0

28.9.2. AVR_RESET ($C)
AVRﾃﾞﾊﾞｲｽをﾘｾｯﾄ状態へ、またはﾘｾｯﾄ状態から開放するためのAVR固有公開JTAG命令です。この命令によって検査入出力ﾎﾟｰﾄ(TAP)制御器はﾘｾｯﾄされません。1ﾋﾞｯﾄのﾘｾｯﾄ ﾚｼﾞｽﾀがﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)として選択されます。ﾘｾｯﾄ ﾁｪｰﾝに論理1がある限り、ﾘｾｯﾄが有効であることに注意してください。このﾁｪｰﾝからの出力はﾗｯﾁされません。 本命令が有効な状態を次に示します。
● DR移動: ﾘｾｯﾄ ﾚｼﾞｽﾀがTCKｸﾛｯｸ入力によって移動されます。

28.9.3. PROG_ENABLE ($4)
JTAGﾎﾟｰﾄ経由のﾌﾟﾛｸﾞﾗﾐﾝｸﾞを許可するためのAVR固有公開JTAG命令です。16ﾋﾞｯﾄ長のﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可ﾚｼﾞｽﾀがﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)として選択されます。 本命令が有効な状態を次に示します。
● DR移動: ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可識別子がﾃﾞｰﾀ ﾚｼﾞｽﾀに移動入力されます。
● DR更新: ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可識別子が正規値と比較され、識別子が有効なら、ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作に移行されます。

28.9.4. PROG_COMMANDS ($5)
JTAGﾎﾟｰﾄ経由のﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令移行用のAVR固有公開JTAG命令です。15ﾋﾞｯﾄ長のﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令ﾚｼﾞｽﾀがﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)として選択されます。 本命令が有効な状態を次に示します。
DR捕獲: 直前の命令の結果がﾃﾞｰﾀ ﾚｼﾞｽﾀに設定されます。
DR移動: ﾃﾞｰﾀ ﾚｼﾞｽﾀがTCK入力により移動され、直前の命令の結果を移動出力し、新規命令を移動入力します。
● DR更新: ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令がﾌﾗｯｼｭ ﾒﾓﾘ入力に適用されます。
● 検査実行/ｱｲﾄﾞﾙ : 1つのｸﾛｯｸ周期が生成され、適用された命令を実行します●●

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]241

28.9.5. PROG_PAGELOAD ($6)
JTAGﾎﾟｰﾄ経由でﾌﾗｯｼｭ ﾒﾓﾘのﾍﾟｰｼﾞ ﾃﾞｰﾀを直接設定するためのAVR固有公開JTAG命令です。8ﾋﾞｯﾄ ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀ
がﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)として選択されます。これは物理的にﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令ﾚｼﾞｽﾀの下位8ﾋﾞｯﾄです。活性(有効)状態は以下です。
● DR移動: ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀがTCKｸﾛｯｸ入力によって移動されます。
● DR更新: ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀの内容が一時ﾚｼﾞｽﾀに複写されます。11TCK周期で開始される書き込み(設定)手順が一時ﾚｼﾞｽﾀの内容をﾌﾗｯｼｭ ﾍﾟｰｼﾞ緩衝部に設定します。AVRはPROG_PAGELOAD命令移行後出会った最初のDR更新に対して下位ﾊﾞｲﾄで始め、新規DR更新状態毎に上位/下位ﾊﾞｲﾄ書き込み間を自動的に切り替えます。ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀは最初の書き込みﾊﾞｲﾄを除き、下位ﾊﾞｲﾄ書き込み前に予め増加(+1)されます。これは最初のﾃﾞｰﾀがPROG_COMMANDSによって設定したｱﾄﾞﾚｽに書かれ、ﾍﾟｰｼﾞ緩衝部の最終位置設定がﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀを次ﾍﾟｰｼﾞへ増加しないことを保証します。

28.9.6. PROG_PAGEREAD ($7)
JTAGﾎﾟｰﾄ経由でﾌﾗｯｼｭ ﾒﾓﾘ内容を直接捕獲するためのAVR固有公開JTAG命令です。8ﾋﾞｯﾄ ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀがﾃﾞｰﾀ ﾚ
ｼﾞｽﾀ(DR)として選択されます。これは物理的にﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令ﾚｼﾞｽﾀの下位8ﾋﾞｯﾄです。活性(有効)状態は以下です。
● DR捕獲: 選択したﾌﾗｯｼｭ ﾒﾓﾘ ﾊﾞｲﾄの内容がﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀに捕獲されます。AVRはPROG_PAGEREAD命
令移行後に出会った最初のDR捕獲に対して下位ﾊﾞｲﾄで始め、新規DR捕獲状態毎に上位/下位ﾊﾞｲﾄ読み込
み間を自動的に切り替えます。ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀは最初の読み込みﾊﾞｲﾄを含め、各上位ﾊﾞｲﾄ読み込み後に増加(+1)されます。これは最初のﾃﾞｰﾀがPROG_COMMANDSによって設定した先頭ｱﾄﾞﾚｽから捕獲され、ﾍﾟｰｼﾞの最終位置読み込みがﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀを次ﾍﾟｰｼﾞへ増加(進行)することを保証します。
● DR移動: ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀがTCKｸﾛｯｸ入力によって移動されます。

28.9.7. ﾃﾞｰﾀ ﾚｼﾞｽﾀ
ﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)は241頁の「ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ特殊JTAG命令」項で記載されたJTAG命令ﾚｼﾞｽﾀ(IR)によって選択されます。ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ操作に関連するﾃﾞｰﾀ ﾚｼﾞｽﾀを次に示します。
● ﾘｾｯﾄ(Reset)ﾚｼﾞｽﾀ● ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可(Programing Enable)ﾚｼﾞｽﾀ● ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令(Programing Command)ﾚｼﾞｽﾀ● ﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ(Flash Data Byte)ﾚｼﾞｽﾀ

28.9.8. ﾘｾｯﾄ (Reset) ﾚｼﾞｽﾀ
ﾘｾｯﾄ ﾚｼﾞｽﾀはﾌﾟﾛｸﾞﾗﾐﾝｸﾞ中、ﾃﾞﾊﾞｲｽをﾘｾｯﾄするのに使われる検査ﾃﾞｰﾀ ﾚｼﾞｽﾀです。ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作への移行に先立ってﾃﾞﾊﾞｲｽをﾘｾｯﾄするのに必要とされます。
ﾘｾｯﾄ ﾚｼﾞｽﾀ内の値1は外部RESETをLowに引き込むことに相当します。ﾘｾｯﾄ ﾚｼﾞｽﾀ内の値が1である限り、ﾃﾞﾊﾞｲｽはﾘｾｯﾄされます。
ﾘｾｯﾄ ﾚｼﾞｽﾀの開放後、ﾃﾞﾊﾞｲｽはｸﾛｯｸ種別ﾋｭｰｽﾞ設定に従ってﾘｾｯﾄ起動遅延時間(18頁の「ｸﾛｯｸ元」参照)分ﾘｾｯﾄを維持します。
211頁の図26-2.で示されるようにこのﾃﾞｰﾀ ﾚｼﾞｽﾀからの出力はﾗｯﾁされず、それ故ﾘｾｯﾄが直ちに起こります。

28.9.9. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可 (Programing Enable) ﾚｼﾞｽﾀ
ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可ﾚｼﾞｽﾀは16ﾋﾞｯﾄ長のﾚｼﾞｽﾀです。このﾚｼﾞｽﾀの
内容はﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可識別子$A370(1010 0011 0111 0000)と比較されます。このﾚｼﾞｽﾀの内容がﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可識別子と一致すると、JTAGﾎﾟｰﾄ経由のﾌﾟﾛｸﾞﾗﾐﾝｸﾞが許可されます。このﾚｼﾞｽﾀは電源ONﾘｾｯﾄで0にﾘｾｯﾄされ、ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作を抜ける時には常にﾘｾｯﾄされるべきです。

図28-14. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可 ﾚｼﾞｽﾀ
TDIから

ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可識別子
比較器

TDOへ
D

Q

ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可$A370
PROG_ENABLE命令下のﾃﾞｰﾀ ﾚｼﾞｽﾀ(DR)ｸﾛｯｸ

28.9.10. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令 (Programing Command) ﾚｼﾞｽﾀ
ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令ﾚｼﾞｽﾀは15ﾋﾞｯﾄ長のﾚｼﾞｽﾀです。このﾚｼﾞｽﾀはﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令を連続的に移動入力し、直前のﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命
令の結果を連続的に移動出力するのに使われます。JTAGﾌﾟ
ﾛｸﾞﾗﾐﾝｸﾞ命令一式は表28-17.で示されます。ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令
を移動入力する時の状態順は図28-16.で図解されます。

図28-15. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令 ﾚｼﾞｽﾀ
TDIからｽﾄﾛｰﾌﾞ

ｱﾄﾞﾚｽ/ﾃﾞｰﾀ

TDOへﾌﾗｯｼｭ ﾒﾓﾘ/EEPROM
ﾋｭｰｽﾞ ﾋﾞｯﾄ/施錠ﾋﾞｯﾄ

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]242

表28-17. JTAGﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令一式 (手順)
チップ消去

命令

フラッシュメモリ書き込み

1①

ﾁｯﾌﾟ消去

1②
2①
2②
2③
2④
2⑤
2⑥

ﾁｯﾌﾟ消去完了検査
ﾌﾗｯｼｭ書き込み移行
ｱﾄﾞﾚｽ拡張上位ﾊﾞｲﾄ設定
ｱﾄﾞﾚｽ上位ﾊﾞｲﾄ設定
ｱﾄﾞﾚｽ下位ﾊﾞｲﾄ設定
ﾃﾞｰﾀ下位ﾊﾞｲﾄ設定
ﾃﾞｰﾀ上位ﾊﾞｲﾄ設定

2⑦

ﾃﾞｰﾀ ﾗｯﾁ

フラッシュ読出し
ＥＥＰＲＯＭ書き込み

2⑧

ﾍﾟｰｼﾞ書き込み

2⑨
3①
3②
3③
3④

ﾍﾟｰｼﾞ書き込み完了検査
ﾌﾗｯｼｭ読み出し移行
ｱﾄﾞﾚｽ拡張上位ﾊﾞｲﾄ設定
ｱﾄﾞﾚｽ上位ﾊﾞｲﾄ設定
ｱﾄﾞﾚｽ下位ﾊﾞｲﾄ設定

3⑤

ﾃﾞｰﾀ下位/上位ﾊﾞｲﾄ取得

4①
4②
4③
4④

EEPROM書き込み移行
ｱﾄﾞﾚｽ上位ﾊﾞｲﾄ設定
ｱﾄﾞﾚｽ下位ﾊﾞｲﾄ設定ﾃﾞｰﾀ ﾊﾞｲﾄ設定

4⑤

ﾃﾞｰﾀ ﾗｯﾁ

ＥＥＰＲＯＭ読出し

4⑥

EEPROM書き込み

4⑦
5①
5②
5③

EEPROM書き込み完了検査
EEPROM読み出し移行
ｱﾄﾞﾚｽ上位ﾊﾞｲﾄ設定
ｱﾄﾞﾚｽ下位ﾊﾞｲﾄ設定

5④

EEPROM読み出し

TDI入力
010 0011 1000 0000
011 0001 1000 0000
011 0011 1000 0000
011 0011 1000 0000
011 0011 1000 0000
010 0011 0001 0000
000 0111 EEEE EEEE
000 0111 HHHH HHHH
000 0011 LLLL LLLL
001 0011 WWWW WWWW
001 0111 WWWW WWWW
011 0111 0000 0000
111 0111 0000 0000
011 0111 0000 0000
011 0111 0000 0000
011 0101 0000 0000
011 0111 0000 0000
011 0111 0000 0000
011 0111 0000 0000
010 0011 0000 0010
000 0111 EEEE EEEE
000 0111 HHHH HHHH
000 0011 LLLL LLLL
011 0010 0000 0000
011 0110 0000 0000
011 0111 0000 0000
010 0011 0001 0001
000 0111 HHHH HHHH
000 0011 LLLL LLLL
001 0011 WWWW WWWW
011 0111 0000 0000
111 0111 0000 0000
011 0111 0000 0000
011 0011 0000 0000
011 0001 0000 0000
011 0011 0000 0000
011 0011 0000 0000
011 0011 0000 0000
010 0011 0000 0011
000 0111 HHHH HHHH
000 0011 LLLL LLLL
011 0011 LLLL LLLL
011 0010 0000 0000
011 0011 0000 0000

TDO出力
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxSx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxSx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx RRRR RRRR
xxx xxxx RRRR RRRR
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxSx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx RRRR RRRR

備考

(注2)
(注10)
(注10)

(注1)

(注1)

(注2)
(注10)
(注10)

下位ﾊﾞｲﾄ
上位ﾊﾞｲﾄ
(注10)

(注1)

(注1)

(注2)
(注10)

次頁へ続く

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]243表28-17 (続き). JTAGﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令一式
TDI入力
010 0011 0100 0000
001 0011 WWWW WWWW
011 1011 0000 0000
011 1001 0000 0000
6 ③ 拡張ﾋｭｰｽﾞ書き込み011 1011 0000 0000
011 1011 0000 0000
6 ④ 拡張ﾋｭｰｽﾞ書き込み完了検査 011 1011 0000 0000
6 ⑤ ﾃﾞｰﾀ下位ﾊﾞｲﾄ設定
001 0011 WWWW WWWW
011 0111 0000 0000
011 0101 0000 0000
6 ⑥ 上位側ﾋｭｰｽﾞ書き込み
011 0111 0000 0000
011 0111 0000 0000
6 ⑦ 上位ﾋｭｰｽﾞ書き込み完了検査 011 0111 0000 0000
6 ⑧ ﾃﾞｰﾀ下位ﾊﾞｲﾄ設定
001 0011 WWWW WWWW
011 0011 0000 0000
011 0001 0000 0000
6 ⑨ 下位側ﾋｭｰｽﾞ書き込み
011 0011 0000 0000
011 0011 0000 0000
6 ⑩ 下位ﾋｭｰｽﾞ書き込み完了検査 011 0011 0000 0000
7 ① 施錠ﾋﾞｯﾄ書き込み移行
010 0011 0010 0000
7 ② ﾃﾞｰﾀ下位ﾊﾞｲﾄ設定
001 0011 11WW WWWW
011 0011 0000 0000
011 0001 0000 0000
7 ③ 施錠ﾋﾞｯﾄ書き込み
011 0011 0000 0000
011 0011 0000 0000
7 ④ 施錠ﾋﾞｯﾄ書き込み完了検査
011 0011 0000 0000
8 ① ﾋｭｰｽﾞ/施錠ﾋﾞｯﾄ読み出し移行 010 0011 0000 0100
011 1010 0000 0000
8 ② 拡張ﾋｭｰｽﾞ読み出し
011 1011 0000 0000
011 1110 0000 0000
8 ③ 上位側ﾋｭｰｽﾞ読み出し
011 1111 0000 0000
011 0010 0000 0000
8 ④ 下位側ﾋｭｰｽﾞ読み出し
011 0011 0000 0000
011 0110 0000 0000
8 ⑤ 施錠ﾋﾞｯﾄ読み出し
011 0111 0000 0000
011 1010 0000 0000
011 1110 0000 0000
8 ⑥ ﾋｭｰｽﾞ/施錠ﾋﾞｯﾄ読み出し
011 0010 0000 0000
011 0110 0000 0000
011 0111 0000 0000
9 ① 識票ﾊﾞｲﾄ読み出し移行
010 0011 0000 1000
9 ② ｱﾄﾞﾚｽ ﾊﾞｲﾄ設定
000 0011 LLLL LLLL
011 0010 0000 0000
9 ③ 識票ﾊﾞｲﾄ読み出し
011 0011 0000 0000
10 ① 校正ﾊﾞｲﾄ読み出し移行
010 0011 0000 1000
10 ② ｱﾄﾞﾚｽ ﾊﾞｲﾄ設定
000 0011 LLLL LLLL
011 0110 0000 0000
10 ③ 校正ﾊﾞｲﾄ読み出し
011 0111 0000 0000
010 0011 0000 0000
11 ① 無操作設定
011 0011 0000 0000
E = ｱﾄﾞﾚｽ上位拡張ﾊﾞｲﾄのﾋﾞｯﾄ
H = ｱﾄﾞﾚｽ上位ﾊﾞｲﾄのﾋﾞｯﾄ
R = 読み出しﾃﾞｰﾀ (MCU出力)
W = 書き込みﾃﾞｰﾀ (MCU入力)
6①
6②

命令
ﾋｭｰｽﾞ書き込み移行
ﾃﾞｰﾀ下位ﾊﾞｲﾄ設定

ヒューズ ビット書き込み
施錠ビット書き込み

ヒューズ 施/錠ビット読み出し

識票バイト 校正バイト

TDO出力
備考
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx (注3) ﾋﾞｯﾄ配置は227頁の表28-3.参照
xxx xxxx xxxx xxxx (注1)xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxSx xxxx xxxx (注2)xxx xxxx xxxx xxxx (注3) ﾋﾞｯﾄ配置は227頁の表28-4.参照
xxx xxxx xxxx xxxx (注1)xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxSx xxxx xxxx (注2)xxx xxxx xxxx xxxx (注3) ﾋﾞｯﾄ配置は227頁の表28-5.参照
xxx xxxx xxxx xxxx (注1)xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxSx xxxx xxxx (注2)xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx (注4) ﾋﾞｯﾄ配置は226頁の表28-1.参照
xxx xxxx xxxx xxxx (注1)xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxSx xxxx xxxx (注2)xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
ﾋﾞｯﾄ配置は227頁の表28-3.参照
xxx xxxx RRRR RRRR (注5)xxx xxxx xxxx xxxx
ﾋﾞｯﾄ配置は227頁の表28-4.参照
xxx xxxx RRRR RRRR (注5)xxx xxxx xxxx xxxx
ﾋﾞｯﾄ配置は227頁の表28-5.参照
xxx xxxx RRRR RRRR (注5)xxx xxxx xxxx xxxx
ﾋﾞｯﾄ配置は226頁の表28-1.参照
xxx xxxx xxRR RRRR (注5)xxx xxxx xxxx xxxx
xxx xxxx RRRR RRRR 拡張ﾋｭｰｽﾞ
xxx xxxx RRRR RRRR 上位ﾋｭｰｽﾞ(注5)xxx xxxx RRRR RRRR 下位ﾋｭｰｽﾞ
xxx xxxx RRRR RRRR 施錠ﾋﾞｯﾄ
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx RRRR RRRR
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
xxx xxxx RRRR RRRR
xxx xxxx xxxx xxxx
xxx xxxx xxxx xxxx
L = ｱﾄﾞﾚｽ下位ﾊﾞｲﾄのﾋﾞｯﾄ
S = 動作完了ﾌﾗｸﾞ
x = 0か1 (無効/無意味)

注1 : この命令は直前の命令手順によって上位7ﾋﾞｯﾄが正しく設定されている(通常の)場合、必要ではありません。
注2 : Sが1になるまで繰り返します。(待機)注3 : 設定値0でﾌﾟﾛｸﾞﾗﾑ、1で非ﾌﾟﾛｸﾞﾗﾑです。
注4 : 設定値0でﾌﾟﾛｸﾞﾗﾑ、1では施錠ﾋﾞｯﾄが変化しません。
注5 : 読み出し値0でﾌﾟﾛｸﾞﾗﾑ、1で非ﾌﾟﾛｸﾞﾗﾑです。
(訳注) 原書での注6～9は表内備考欄に直接記載しました。
注10 : PCMSB(表28-11.参照)とEEAMSB(表28-12.参照)を越えるｱﾄﾞﾚｽ ﾋﾞｯﾄは無効です。
注11 : 全てのTDIとTDO手順は2進数で示されています。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]244

28.9.11. ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ (Flash Data Byte) ﾚｼﾞｽﾀ
ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀはﾍﾟｰｼﾞ書き込み実行 図28-16. ﾃﾞｰﾀ語変更/読み出し手順時順次回路状態遷移図
前のﾌﾗｯｼｭ ﾒﾓﾘ ﾍﾟｰｼﾞ緩衝部全体設定、またはﾌ
1 検査回路ﾘｾｯﾄ
ﾗｯｼｭ ﾒﾓﾘ内容の読み出しや照合の効率的な方
DR : ﾃﾞｰﾀ ﾚｼﾞｽﾀ
IR : 命令ﾚｼﾞｽﾀ法を提供します。順次回路はﾌﾗｯｼｭ ﾒﾓﾘへの制01
11
御信号を設定し、ﾌﾗｯｼｭ ﾒﾓﾘからのｽﾄﾛｰﾌﾞ信号
0 検査実行/ｱｲﾄﾞﾙ
DR走査選択IR走査選択を判断し、従って移動入出力されるためのﾃﾞｰﾀ語
00だけが必要です。
1
1
DR捕獲
IR捕獲
実際のﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀは8ﾋﾞｯﾄの走査00
ﾁｪｰﾝと8ﾋﾞｯﾄの一時ﾚｼﾞｽﾀから成ります。ﾍﾟｰｼﾞ設
DR移動
IR移動
0
0
定中、DR更新状態は走査ﾁｪｰﾝによる内容を一
1
1
時ﾚｼﾞｽﾀへ複写し、11TCK周期内で一時ﾚｼﾞｽﾀの
1
1
内容をﾌﾗｯｼｭ ﾒﾓﾘ ﾍﾟｰｼﾞ緩衝部へ設定する書き
DR終了1
IR終了1
込み(設定)手順を始めます。AVRはPROG_PAGE00
LOAD命令移行後に出会った最初のDR更新に対
DR一時停止 0
IR一時停止 0
して下位ﾊﾞｲﾄで始め、新規DR更新毎に上位/下
1
1
位ﾊﾞｲﾄ書き込み間を自動的に切り替えます。ﾌﾟﾛ
0
0
IR終了2
DR終了2
ｸﾞﾗﾑ ｶｳﾝﾀは最初の書き込みﾊﾞｲﾄを除き、下位ﾊﾞ
1
1
ｲﾄ書き込み前に予め増加(+1)されます。これはPROG_COMMANDSによって設定したｱﾄﾞﾚｽに最
DR更新
IR更新
初のﾃﾞｰﾀが書かれ、ﾍﾟｰｼﾞ緩衝部の最終位置設
10
10
定がﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀを次ﾍﾟｰｼﾞに増加しないことを保証します。
ﾍﾟｰｼﾞ読み込み中、選択したﾌﾗｯｼｭ ﾒﾓﾘのﾊﾞｲﾄの内容はDR捕獲状態中にﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀ内に捕獲されま 図28-17. ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀ
す。AVRはPROG_PAGEREAD命令移行後に出会った最初のDR捕
ﾃﾞｰﾀ
TDIから
TDOへ
獲に対して下位ﾊﾞｲﾄで始め、新規DR捕獲毎に上位/下位ﾊﾞｲﾄ読み込み間を自動的に切り替えます。ﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀは最初の読み込み
順次回路
ﾊﾞｲﾄを含め、各上位ﾊﾞｲﾄ読み込み後に増加(+1)されます。これは最ﾃﾞｰﾀ
初のﾃﾞｰﾀがPROG_COMMANDSによって設定した先頭ｱﾄﾞﾚｽから捕ｱﾄﾞﾚｽ
ｽﾄﾛｰﾌﾞ
獲され、ﾍﾟｰｼﾞの最終位置読み込みがﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀを次ﾍﾟｰｼﾞに増ﾌﾗｯｼｭ ﾒﾓﾘ/EEPROM
加(進行)することを保証します。
ﾋｭｰｽﾞ ﾋﾞｯﾄ/施錠ﾋﾞｯﾄ
ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀを制御する順次回路はTCKによってｸﾛｯｸ駆動されます。通常動作中内でﾌﾗｯｼｭ ﾒﾓﾘの各ﾊﾞｲﾄに対して8ﾋﾞｯﾄが移動され、TAP制御器を通して誘導するために必要としたこのｸﾛｯｸ周期はﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀに対し、それが使用者にとって明白に操作を完了するための充分なｸﾛｯｸ ﾊﾟﾙｽ数で順次回路を自動的に送ります。けれどもﾍﾟｰｼﾞ設定中に各DR更新状態
間で更に数ﾋﾞｯﾄが移動される場合、各DR更新状態間の最小11TCK周期を保証するためのいくつかのTCK周期に対し、TAP制御器
は検査実行/ｱｲﾄﾞﾙ状態に留まるべきです。

28.9.12. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ手法
1①、1②形式のような以下の全ての参照は表28-17.を参照してください。

28.9.13. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作への移行
1. JTAG命令AVR_RESETを入力し、ﾘｾｯﾄ ﾚｼﾞｽﾀに1を移動します。
2. PROG_ENABLE命令を入力し、ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可ﾚｼﾞｽﾀに$A370(1010 0011 0111 0000)を移動します。

28.9.14. ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ動作からの抜け出し
1. JTAG命令PROG_COMMANDSを入力します。
2. 無操作命令(11①参照)により、全てのﾌﾟﾛｸﾞﾗﾐﾝｸﾞ命令を禁止します。
3. PROG_ENABLE命令を入力し、ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ許可ﾚｼﾞｽﾀに$0000(0000 0000 0000 0000)を移動します。
4. JTAG命令AVR_RESETを入力し、ﾘｾｯﾄ ﾚｼﾞｽﾀに0を移動します。

28.9.15. ﾁｯﾌﾟ消去の実行
1. JTAG命令PROG_COMMANDSを入力します。
2. ﾁｯﾌﾟ消去命令(1①参照)を使い、ﾁｯﾌﾟ消去を開始します。
3. ﾁｯﾌﾟ消去完了検査(1②参照)を使い、完了までﾎﾟｰﾘﾝｸﾞするか、tWLRH_CE(237頁の表28-13.参照)時間待ちます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]245

28.9.16. ﾌﾗｯｼｭ ﾒﾓﾘの書き込み
ﾌﾗｯｼｭ ﾒﾓﾘへ書き込む前にﾁｯﾌﾟ消去が実行されなければなりません。245頁の「ﾁｯﾌﾟ消去の実行」をご覧ください。
1. JTAG命令PROG_COMMANDSを入力します。
2. ﾌﾗｯｼｭ書き込み移行命令(2①参照)を使い、ﾌﾗｯｼｭ ﾒﾓﾘ書き込みを許可します。
3. 上位拡張ｱﾄﾞﾚｽ設定命令(2②参照)を使い、書き込みｱﾄﾞﾚｽ上位拡張ﾊﾞｲﾄを設定します。
4. ｱﾄﾞﾚｽ上位設定命令(2③参照)を使い、書き込みｱﾄﾞﾚｽ上位ﾊﾞｲﾄを設定します。
5. ｱﾄﾞﾚｽ下位設定命令(2④参照)を使い、書き込みｱﾄﾞﾚｽ下位ﾊﾞｲﾄを設定します。
6. ﾃﾞｰﾀ設定命令(2⑤, 2⑥, 2⑦参照)を使い、書き込みﾃﾞｰﾀを設定します。
7. ﾍﾟｰｼﾞ内の全語(ﾜｰﾄﾞ)数分5.と6.を繰り返します。
8. ﾍﾟｰｼﾞ書き込み命令(2⑧参照)を使い、ﾍﾟｰｼﾞをﾌﾗｯｼｭ ﾒﾓﾘに書き込みます。
9. ﾍﾟｰｼﾞ書き込み完了検査(2⑨参照)を使い、完了までﾎﾟｰﾘﾝｸﾞするか、tWLRH_FLASH(237頁の表28-13.参照)時間待ちます。
10. 全ﾃﾞｰﾀ書き込みまで3.～9.を繰り返します。
より効率的なﾃﾞｰﾀ転送はPROG_PAGELOAD命令を使うことで達せられます。
1. JTAG命令PROG_COMMANDSを入力します。
2. ﾌﾗｯｼｭ書き込み移行命令(2①参照)を使い、ﾌﾗｯｼｭ ﾒﾓﾘ書き込みを許可します。
3. ｱﾄﾞﾚｽ設定命令(2②, 2③, 2④参照)を使い、ﾍﾟｰｼﾞ ｱﾄﾞﾚｽを設定します。ﾍﾟｰｼﾞ内ｱﾄﾞﾚｽにはPCWORD(230頁の表28-11.参照)が使われ、これらのﾋﾞｯﾄは0として書かれなければなりません。
4. JTAG命令PROG_PAGELOADを入力します。
5. 先頭命令のLSBから始まって最終命令のMSBで終わるﾍﾟｰｼﾞ内にﾊﾞｲﾄ単位で全命令語を移動入力することによってﾍﾟｰｼﾞ全体を設定します。ﾌﾗｯｼｭ ﾊﾞｲﾄ ﾃﾞｰﾀ ﾚｼﾞｽﾀの内容をﾌﾗｯｼｭ ﾍﾟｰｼﾞ位置に複写し、各新規ﾜｰﾄﾞ前にﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀを自動増加するのにDR更新を使います。
6. JTAG命令PROG_COMMANDSを入力します。
7. ﾍﾟｰｼﾞ書き込み命令(2⑧参照)を使い、ﾍﾟｰｼﾞをﾌﾗｯｼｭ ﾒﾓﾘに書き込みます。
8. ﾍﾟｰｼﾞ書き込み完了検査(2⑨参照)を使い、完了までﾎﾟｰﾘﾝｸﾞするか、tWLRH_FLASH(237頁の表28-13.参照)時間待機します。
9. 全ﾃﾞｰﾀ書き込みまで3.～8.を繰り返します。

28.9.17. ﾌﾗｯｼｭ ﾒﾓﾘの読み出し
1. JTAG命令PROG_COMMANDSを入力します。
2. ﾌﾗｯｼｭ読み出し移行命令(3①参照)を使い、ﾌﾗｯｼｭ ﾒﾓﾘ読み出しを許可します。
3. ｱﾄﾞﾚｽ設定命令(3②, 3③, 3④参照)を使い、読み出しｱﾄﾞﾚｽを設定します。
4. ﾃﾞｰﾀ読み出し命令(3⑤参照)を使い、ﾃﾞｰﾀを読み出します。
5. 全ﾃﾞｰﾀ読み出しまで3.～4.を繰り返します。
より効率的なﾃﾞｰﾀ転送はPROG_PAGEREAD命令を使うことで達せられます。
1. JTAG命令PROG_COMMANDSを入力します。
2. ﾌﾗｯｼｭ読み出し移行命令(3①参照)を使い、ﾌﾗｯｼｭ ﾒﾓﾘ読み出しを許可します。
3. ｱﾄﾞﾚｽ設定命令(3②, 3③, 3④参照)を使い、ﾍﾟｰｼﾞ ｱﾄﾞﾚｽを設定します。ﾍﾟｰｼﾞ内ｱﾄﾞﾚｽにはPCWORD(230頁の表28-11.参照)が使われ、これらのﾋﾞｯﾄは0として書かれなければなりません。
4. JTAG命令PROG_PAGEREADを入力します。
5. 先頭命令のLSBから始まり最終命令のMSBで終わるﾍﾟｰｼﾞ(またはﾌﾗｯｼｭ)内で全命令語を移動出力することにより、ﾍﾟｰｼﾞ(またはﾌﾗｯｼｭ)全体を読みます。DR捕獲状態はﾌﾗｯｼｭ ﾒﾓﾘからのﾃﾞｰﾀ捕獲と各語(ﾜｰﾄﾞ)が読まれた後にﾌﾟﾛｸﾞﾗﾑ ｶｳﾝﾀも自動増加します。DR移動に先立ってDR捕獲が起きることに注意してください。従って移動出力される先頭ﾊﾞｲﾄは有効なﾃﾞｰﾀを含みます。
6. JTAG命令PROG_COMMANDSを入力します。
7. 全ﾃﾞｰﾀ読み出しまで3.～6.を繰り返します。

28.9.18. EEPROMの書き込み
EEPROMへ書き込む前にﾁｯﾌﾟ消去が実行されなければなりません。245頁の「ﾁｯﾌﾟ消去の実行」をご覧ください。
1. JTAG命令PROG_COMMANDSを入力します。
2. EEPROM書き込み移行命令(4①参照)を使い、EEPROMﾒﾓﾘ書き込みを許可します。
3. ｱﾄﾞﾚｽ上位設定命令(4②参照)を使い、書き込みｱﾄﾞﾚｽ上位ﾊﾞｲﾄを設定します。
4. ｱﾄﾞﾚｽ下位設定命令(4③参照)を使い、書き込みｱﾄﾞﾚｽ下位ﾊﾞｲﾄを設定します。
5. ﾃﾞｰﾀ設定命令(4④, 4⑤参照)を使い、書き込みﾃﾞｰﾀを設定します。
6. ﾍﾟｰｼﾞ内の全ﾊﾞｲﾄ数分4.と5.を繰り返します。
7. EEPROM書き込み命令(4⑥参照)を使い、ﾃﾞｰﾀをEEPROMﾒﾓﾘに書き込みます。
8. EEPROM書き込み完了検査(4⑦参照)を使い、完了までﾎﾟｰﾘﾝｸﾞするか、tWLRH(237頁の表28-13.参照)時間待ちます。
9. 全ﾃﾞｰﾀ書き込みまで3.～8.を繰り返します。
PROG_PAGELOAD命令がEEPROM書き込み時に使えないことに注意してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

246

28.9.19. EEPROMの読み出し
1. JTAG命令PROG_COMMANDSを入力します。
2. EEPROM読み出し移行命令(5①参照)を使い、EEPROMﾒﾓﾘ読み出しを許可します。
3. ｱﾄﾞﾚｽ設定命令(5②, 5③参照)を使い、読み出しｱﾄﾞﾚｽを設定します。
4. ﾃﾞｰﾀ読み出し命令(5④参照)を使い、ﾃﾞｰﾀを読み出します。
5. 全ﾃﾞｰﾀが読み出されてしまうまで3.～4.を繰り返します。
PROG_PAGEREAD命令がEEPROM読み出し時に使えないことに注意してください。

28.9.20. ﾋｭｰｽﾞ ﾋﾞｯﾄの書き込み (訳注:本項は修正してあります。)
1. JTAG命令PROG_COMMANDSを入力します。
2. ﾋｭｰｽﾞ書き込み移行命令(6①参照)を使い、ﾋｭｰｽﾞ書き込みを許可します。
3. 拡張ﾃﾞｰﾀ設定命令(6②参照)を使い、拡張ﾋｭｰｽﾞ値を設定します。(0=ﾌﾟﾛｸﾞﾗﾑ、1=非ﾌﾟﾛｸﾞﾗﾑ)
4. 拡張ﾋｭｰｽﾞ書き込み命令(6③参照)を使い、拡張ﾋｭｰｽﾞを書き込みます。
5. ﾋｭｰｽﾞ書き込み完了検査(6④参照)を使い、完了までﾎﾟｰﾘﾝｸﾞするか、tWLRH(237頁の表28-13.参照)時間待ちます。
6. 上位ﾃﾞｰﾀ設定命令(6⑤参照)を使い、上位側ﾋｭｰｽﾞ値を設定します。(0=ﾌﾟﾛｸﾞﾗﾑ、1=非ﾌﾟﾛｸﾞﾗﾑ)
7. 上位ﾋｭｰｽﾞ書き込み命令(6⑥参照)を使い、上位側ﾋｭｰｽﾞを書き込みます。
8. ﾋｭｰｽﾞ書き込み完了検査(6⑦参照)を使い、完了までﾎﾟｰﾘﾝｸﾞするか、tWLRH(237頁の表28-13.参照)時間待ちます。
9. 下位ﾃﾞｰﾀ設定命令(6⑧参照)を使い、下位側ﾋｭｰｽﾞ値を設定します。(0=ﾌﾟﾛｸﾞﾗﾑ、1=非ﾌﾟﾛｸﾞﾗﾑ)
10. 下位ﾋｭｰｽﾞ書き込み命令(6⑨参照)を使い、下位側ﾋｭｰｽﾞを書き込みます。
11. ﾋｭｰｽﾞ書き込み完了検査(6⑩参照)を使い、完了までﾎﾟｰﾘﾝｸﾞするか、tWLRH(237頁の表28-13.参照)時間待ちます。

28.9.21. 施錠ﾋﾞｯﾄの書き込み
1. JTAG命令PROG_COMMANDSを入力します。
2. 施錠ﾋﾞｯﾄ書き込み移行命令(7①参照)を使い、施錠ﾋﾞｯﾄ書き込みを許可します。
3. ﾃﾞｰﾀ設定命令(7②参照)を使い、施錠ﾋﾞｯﾄ値を設定します。(0=ﾌﾟﾛｸﾞﾗﾑ、1=無変化)
4. 施錠ﾋﾞｯﾄ書き込み命令(7③参照)を使い、施錠ﾋﾞｯﾄに書き込みます。
5. 施錠ﾋﾞｯﾄ書き込み完了検査(7④参照)を使い、完了までﾎﾟｰﾘﾝｸﾞするか、tWLRH(237頁の表28-13.参照)時間待ちます。

28.9.22. ﾋｭｰｽﾞ/施錠ﾋﾞｯﾄの読み出し (訳注:本項は修正してあります。)
1. JTAG命令PROG_COMMANDSを入力します。
2. ﾋｭｰｽﾞ/施錠ﾋﾞｯﾄ読み出し移行命令(8①参照)を使い、ﾋｭｰｽﾞ/施錠ﾋﾞｯﾄ読み出しを許可します。
3. 全てのﾋｭｰｽﾞと施錠ﾋﾞｯﾄを読むにはﾋｭｰｽﾞ/施錠ﾋﾞｯﾄ読み出し命令(8⑥参照)を使います。
拡張ﾋｭｰｽﾞ ﾋﾞｯﾄのみを読み出す場合は拡張ﾋｭｰｽﾞ読み出し命令(8②参照)を使います。
上位側ﾋｭｰｽﾞ ﾋﾞｯﾄだけを読むには上位ﾋｭｰｽﾞ読み出し命令(8③参照)を使います。
下位側ﾋｭｰｽﾞ ﾋﾞｯﾄだけを読むには下位ﾋｭｰｽﾞ読み出し命令(8④参照)を使います。
施錠ﾋﾞｯﾄだけを読むには施錠ﾋﾞｯﾄ読み出し命令(8⑤参照)を使います。

28.9.23. 識票ﾊﾞｲﾄの読み出し
1. JTAG命令PROG_COMMANDSを入力します。
2. 識票読み出し移行命令(9①参照)を使い、識票読み出しを許可します。
3. ｱﾄﾞﾚｽ設定命令(9②参照)を使い、読み出しｱﾄﾞﾚｽ$00を設定します。
4. ﾃﾞｰﾀ読み出し命令(9③参照)を使い、識票ﾊﾞｲﾄを読み出します。
5. 第2、第3ﾊﾞｲﾄを読むためにｱﾄﾞﾚｽを$01,$02として各々3.～4.を繰り返します。

28.9.24. 校正ﾊﾞｲﾄの読み出し
1. JTAG命令PROG_COMMANDSを入力します。
2. 校正ﾊﾞｲﾄ読み出し移行命令(10①参照)を使い、校正ﾊﾞｲﾄ読み出しを許可します。
3. ｱﾄﾞﾚｽ設定命令(10②参照)を使い、読み出しｱﾄﾞﾚｽ$00を設定します。
4. ﾃﾞｰﾀ読み出し命令(10③参照)を使い、校正ﾊﾞｲﾄを読み出します。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]247

29. 電気的特性
29.1. 絶対最大定格 (警告)
動作温度 ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・ -40℃ ～ +85℃
保存温度 ・・・・・・・・・・・・・・・・・・・・・ ・・・・・ -65℃ ～ +150℃
RESET,VBUSを除くﾋﾟﾝ許容電圧 ・・ ･･ -0.5V ～ VCC+0.5V
RESETﾋﾟﾝ許容電圧 ・・・・・・・・・・・・ ・・・・・ -0.5V ～ +13.0V
VBUSﾋﾟﾝ許容電圧 ・･・・・・・・・・・・・ ・・・・･・ -0.5V ～ +6.0V
最大動作電圧 ・・・･･･・・・・・・・・・・・ ・・・・・・・・・・・・・・・・ 6.0V
入出力ﾋﾟﾝ出力電流 ・・･･・・・・・・・・ ・・・・・・・・・・・・・ 40.0mA
消費電流 ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・ 200.0mA(警告)

絶対最大定格を超える負担はﾃﾞﾊﾞｲｽに定常的な損傷を与えます。絶対最大定格は負担の定格を示すためだけのもので、この値または、この仕様書の動作特性で示された値を超える
条件で動作することを示すものではありません。長時間の最大定格での使用はﾃﾞﾊﾞｲｽの信頼性を損なう場合があります。

29.2. DC特性
表29-1. DC特性 : TA=-40℃～85℃, VCC=2.7V～5.5V (特記事項を除く)
ｼﾝﾎﾞﾙ
項目
条件
最小
Lowﾚﾍﾞﾙ入力電圧
VIL
VCC=2.7～5.5V-0.5(XTAL1,RESETを除く)
VIL1 Lowﾚﾍﾞﾙ入力電圧 (XTAL1)
VCC=2.7～5.5V-0.5
VIL2 Lowﾚﾍﾞﾙ入力電圧 (RESET)
VCC=2.7～5.5V-0.5
Highﾚﾍﾞﾙ入力電圧
0.2VCC+0.9
VIH
VCC=2.7～5.5V(XTAL1,RESETを除く)(LVTTL) (注2)
VIH1 Highﾚﾍﾞﾙ入力電圧 (XTAL1)
VCC=2.7～5.5V
0.7VCC (注2)
VIH2 Highﾚﾍﾞﾙ入力電圧 (RESET)
VCC=2.7～5.5V
0.9VCC (注2)
IOL=10mA, VCC=5V
VOL Lﾚﾍﾞﾙ出力電圧 (注3)
IOL=5mA, VCC=3V
IOH=-10mA, VCC=5V
4.2
VOH Hﾚﾍﾞﾙ出力電圧 (注4)
IOH=-5mA, VCC=3V
2.3
IIL I/OﾋﾞﾝLowﾚﾍﾞﾙ入力漏れ電流
VCC=5.5V
確実なH/L範囲
IIH I/OﾋﾞﾝHighﾚﾍﾞﾙ入力漏れ電流
RRST RESETﾋﾟﾝ ﾌﾟﾙｱｯﾌﾟ抵抗30
RPU I/Oﾋﾟﾝ ﾌﾟﾙｱｯﾌﾟ抵抗
20
VCC=3V, 4MHz
活動動作消費電流
VCC=5V, 8MHz
(電力削減ﾚｼﾞｽﾀ(PRR0,1)全ﾋﾞｯﾄ=0)
VCC=5V, 16MHz
ICC ｱｲﾄﾞﾙ動作消費電流
VCC=3V, 4MHz
(電力削減ﾚｼﾞｽﾀ(PRR0,1)全ﾋﾞｯﾄ=0) VCC=5V, 8MHz
VCC=3V,WDT許可
ﾊﾟﾜｰﾀﾞｳﾝ動作
消費電流
VCC=3V,WDT禁止
VACIO ｱﾅﾛｸﾞ比較器入力ｵﾌｾｯﾄ電圧
VCC=5V, Vin=VCC/2
IACLK ｱﾅﾛｸﾞ比較器入力漏れ電流-50
VCC=2.7V
tACPD ｱﾅﾛｸﾞ比較器伝播遅延時間
VCC=4.0V
RUSB 外部USB直列抵抗
CUCAP=1µF±20%,
VCC≧4.0V, I≦80mA
VREG 電圧調整器出力電圧
(注5)
3.0
または
VCC≧3.4V, I≦55mA
注1: Lowﾚﾍﾞﾙの認識が保証される最高電圧です。
注2: Highﾚﾍﾞﾙの認識が保証される最低電圧です。
(注3)～(注6)は次頁を参照してください。

代表

最大
0.2VCC-0.1(LVTTL) (注1)
0.1VCC (注1)
0.1VCC (注1)

単位VCC+0.5
VCC+0.5
VCC+0.5
0.7
0.5

10

<10
1
<10

1
1
60
50
5
15
27
2
6
12
5
40
50

750
500
22±5%
3.3

V

µA
kΩ

mA

µA
mV
nA
ns
Ω

3.6

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

V248

注3: 各I/Oﾎﾟｰﾄは安定状態(非過渡時)に於いて検査条件(VCC=3Vで10mA,VCC=5Vで20mA)よりも多くの吸い込み電流を流すことができますが、次の条件を厳守しなければなりません。(訳注:本項の現状はﾃﾝﾌﾟﾚｰﾄです。)
1. ﾎﾟｰﾄC7,6のIOLの合計が100mAを超えるべきではありません。
2. ﾎﾟｰﾄB7～0、E6,2のIOLの合計が100mAを超えるべきではありません。
3. ﾎﾟｰﾄD7～0のIOLの合計が100mAを超えるべきではありません。
4. ﾎﾟｰﾄF7～4,1,0のIOLの合計が100mAを超えるべきではありません。
IOLが検査条件を超える場合、VOLも仕様書での値を超えます。表の検査条件よりも大きな吸い込み電流を流すことは保証されません。
注4: 各I/Oﾎﾟｰﾄは安定状態(非過渡時)に於いて検査条件(VCC=3Vで10mA,VCC=5Vで20mA)よりも多くの吐き出し電流を流すことができますが、次の条件を厳守しなければなりません。(訳注:本項の現状はﾃﾝﾌﾟﾚｰﾄです。)
1. ﾎﾟｰﾄC7,6のIOHの合計が100mAを超えるべきではありません。
2. ﾎﾟｰﾄB7～0、E6,2のIOHの合計が100mAを超えるべきではありません。
3. ﾎﾟｰﾄD7～0のIOHの合計が100mAを超えるべきではありません。
4. ﾎﾟｰﾄF7～4,1,0のIOHの合計が100mAを超えるべきではありません。
IOHが検査条件を超える場合、VOHも仕様書での値を超えます。表の検査条件よりも大きな吐き出し電流を流すことは保証されません。
注5: 調整器最大出力電流はUSB活動時に必要とされるUSB緩衝部電流(約25mA)で減じられるべきです。残りの調整器出力電流は外部応用に使うことができます。
注6: USB電気的特性節で詳述されるようにD+/D-ﾊﾟｯﾄﾞは39Ωの直列抵抗器を通して印加する-1Vへの電圧低下に耐えます。

29.3. 外部ｸﾛｯｸ特性
図29-1. 外部ｸﾛｯｸ駆動波形

tCLCH
VIL1

tCHCX

tCHCL
tCLCX

VIH1

tCLCL

表29-2. 外部ｸﾛｯｸ特性
VCC=2.7～5.5V
VCC=4.5～5.5V
最小
最大
最小
最大
0
8
0
16
1/tCLCL ｸﾛｯｸ周波数
ｸﾛｯｸ周期
125
62.5
tCLCL
Highﾚﾍﾞﾙ時間
50
25
tCHCX
Lowﾚﾍﾞﾙ時間
50
25
tCLCX
上昇時間
1.6
0.5
tCLCH
1.6
0.5
下降時間
tCHCL
隣接ｸﾛｯｸ周期間の変化率
22⊿ tCLCL
注: 本書内の全DC特性はｼﾐｭﾚｰｼｮﾝと同じ製法技術で製造された他のAVRﾏｲｸﾛ ｺﾝﾄﾛｰﾗの特性に基いています。
ｼﾝﾎﾞﾙ

項目

単位
MHz
ns

µs
%

29.4. ｼｽﾃﾑとﾘｾｯﾄの特性
表29-3. ﾘｾｯﾄ電気的特性
ｼﾝﾎﾞﾙ
項目
条件
最小
上昇時電源ONﾘｾｯﾄ閾値電圧
VPOT
下降時電源ONﾘｾｯﾄ閾値電圧 (注1)
VPOR
内部電源ONﾘｾｯﾄ信号保証のVCC開始電圧
-0.1
VCCRR
内部電源ONﾘｾｯﾄ信号保証のVCC上昇率
0.3
VRST
RESETﾋﾟﾝ閾値電圧
0.2 VCCtRST
VCC=5V,25℃
ﾘｾｯﾄ ﾊﾟﾙｽ幅
注1: 供給電圧がこの電圧以下にならないと、上昇時の電源ONﾘｾｯﾄは動作しません。

代表
1.4
1.3

最大
2.3
2.3
+0.1
0.85 VCC

400

単位
V
V/ms
V
ns

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]249

29.5. 最高速と動作電圧
最高周波数は動作電圧に依存します。図29-2.で示されるように最高周波数対動作電圧曲線は2.7～4.5V間で直線です。
図29-2. ATmega16U4/32U4の最高周波数 対 VCC
16MHz

動作周波数

8MHz

安全動作領域
2.7

4.5

VCC
5.5 (V)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]250

29.6. 2線直列ｲﾝﾀｰﾌｪｰｽ特性
下表は2線直列ﾊﾞｽに接続した装置に対する必要条件を記述します。本ﾃﾞﾊﾞｲｽの2線直列ｲﾝﾀｰﾌｪｰｽは記載条件下に於いて、これらの必要条件を越えるか、または合致します。
図29-3. 2線直列ﾊﾞｽ ﾀｲﾐﾝｸﾞ

tof
SCL

tSU:STAtHD:STAtHIGH
tHD:DATtLOW

trtSU:DATtSU:STO

tBUF

SDA
表29-4. 2線直列ｲﾝﾀｰﾌｪｰｽ必要条件
ｼﾝﾎﾞﾙ
項目
条件
最小
最大
単位
VIL
Lowﾚﾍﾞﾙ入力電圧-0.50.3VCC
VIH
Highﾚﾍﾞﾙ入力電圧
0.7VCC
VCC+0.5
V
Vhys ① ｼｭﾐｯﾄ ﾄﾘｶﾞ入力ﾋｽﾃﾘｼｽ電圧② 0.05VCC
VOL ① Lowﾚﾍﾞﾙ出力電圧
IOL=3mA
00.4
出力上昇時間(V→V)② 20+0.1Cb ③
300
tr ①
ILmin
IHmax
10pF<Cb<400pF③ ② 20+0.1Cb ③
250ns
tof ① 出力下降時間(VIHmin→VILmax)
050②
tSP ① 入力ﾊﾟﾙｽ最小幅(尖頭消去濾波)
Ii
0.1VCC<Vi<0.9VCC
入力電流(ﾋﾟﾝ単位)
-10
10
µA
Ci ① ﾋﾟﾝ入力容量
10
pF
fSCL
SCLｸﾛｯｸ周波数④⑤ fCK>max(16 fSCL,250kHz)
0
kHz
400
fSCL≦100kHz(VCC-0.4V)/3mA
1000ns/Cb
Rp
ﾌﾟﾙｱｯﾌﾟ抵抗値
ΩfSCL＞100kHz
300ns/Cb(VCC-0.4V)/3mA
fSCL≦100kHz
4.0
tHD:STA (再送)開始条件保持時間
fSCL＞100kHz
0.6
fSCL≦100kHz
4.7
SCLｸﾛｯｸLowﾚﾍﾞﾙ時間
tLOW
fSCL＞100kHz
1.3
fSCL≦100kHz
4.0
SCLｸﾛｯｸHighﾚﾍﾞﾙ時間µs
tHIGH
fSCL＞100kHz
0.6
fSCL≦100kHz
4.7
tSU:STA 再送開始条件準備時間
fSCL＞100kHz
0.6
fSCL≦100kHz
0
3.45
tHD:DAT ﾃﾞｰﾀ保持時間
fSCL＞100kHz
00.9
fSCL≦100kHz
250
ns
tSU:DAT ﾃﾞｰﾀ準備時間
fSCL＞100kHz
100
fSCL≦100kHz
4.0
tSU:STO 停止条件準備時間
fSCL＞100kHz
0.6µs
fSCL≦100kHz
4.7
停止条件→開始条件間ﾊﾞｽ開放時間
tBUF
fSCL＞100kHz
1.3① ATmega16U4/32U4で、この項目は特性が記載されていますが、100%検査はされていません。
② f SCL＞100kHzについてのみ必要とされます。
③ Cbは1つのﾊﾞｽ信号線の容量(pF)です。
④ fCKはCPU(ｼｽﾃﾑ)ｸﾛｯｸ周波数です。
⑤ この必要条件はATmega16U4/32U4の全ての2線直列ｲﾝﾀｰﾌｪｰｽ動作に適用します。2線直列ﾊﾞｽに接続した他の装置は一般的な f SCL必要条件に従うことだけを必要とします。
⑥ ATmega16U4/32U4の2線直列ｲﾝﾀｰﾌｪｰｽによって生成した実際のLow区間は(1/ fSCL-2/ fCK)で、従ってLow時間の必要条件に対して f SCL=100kHzで厳密に満たされるには fCKが(概ね)6MHz以上でなければなりません。
⑦ ATmega16U4/32U4の2線直列ｲﾝﾀｰﾌｪｰｽによって生成した実際のLow区間は(1/ fSCL-2/ fCK)で、従って fCK=8MHz時、厳密には f SCL>308kHzでLow時間の必要条件が満たされません。それにも拘らず、ﾊﾞｽに接続されたAT90mega16U4/32U4装置は相応なtLOW許容余地のある他の装置だけでなく他のATmega16U4/32U4装置と最高速(400kHz)で通信できるでしょう。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]251

29.7. SPIﾀｲﾐﾝｸﾞ特性
図29-4. SPI ﾀｲﾐﾝｸﾞ必要条件 (主装置動作)

SS (従装置選択)

61

SCK (CPOL=0)
SCK (CPOL=1)
MISO (ﾃﾞｰﾀ入力)

2

5

4
MSB

MOSI (ﾃﾞｰﾀ出力)

2
LSB

7

MSB

3
8

LSB

図29-5. SPI ﾀｲﾐﾝｸﾞ必要条件 (従装置動作)

SCK (CPOL=0)1018SS (従装置選択)

169SCK (CPOL=1)

13

11

14

MOSI (ﾃﾞｰﾀ入力)

MSB

MISO (ﾃﾞｰﾀ出力)

MSB

15

11
LSB

12
17
x

LSB

表29-5. SPI ﾀｲﾐﾝｸﾞ特性
番号
項目
動作種別
最小
代表
1 SCK周期
主装置
表17-5.参照
2 SCK High/Low期間
50%ﾃﾞｭｰﾃｨ比
主装置
3 SCK上昇/下降時間
主装置
4 入力ﾃﾞｰﾀ 準備時間
主装置
10
5 入力ﾃﾞｰﾀ 保持時間
主装置
106 出力からSCK変移時間
主装置
0.5tSCK7 SCKからの出力遅延時間
主装置
108 SCKからのHigh出力時間
主装置
109 SS↓からの出力遅延時間
従装置
1510 SCK周期
従装置
4tCK
11 SCK High/Low期間
(注)
従装置
2tCK
12 SCK上昇/下降時間
従装置
13 入力ﾃﾞｰﾀ 準備時間
従装置
10
14 入力ﾃﾞｰﾀ 保持時間
従装置
tCK
15 SCKからの出力遅延時間
従装置
1516 SCKからのSS↑遅延時間
従装置
20
17 SS↑からの出力Hi-Z遅延時間
従装置
1018 SS↓からのSCK遅延時間
従装置20
注: SPIﾌﾟﾛｸﾞﾗﾐﾝｸﾞでの最小SCK High/Low期間は、2tCLCL(tCK＜12MHz)、3tCLCL(tCK≧12MHz)です。

最大

単位

1600

ns

1600

29.8. ﾊｰﾄﾞｳｪｱ ﾌﾞｰﾄ受付ﾀｲﾐﾝｸﾞ特性
図29-6. ﾊｰﾄﾞｳｪｱ ﾌﾞｰﾄ ﾀｲﾐﾝｸﾞ必要条件
RESET

tSHRH
HWB

tHHRH

表29-6. ﾊｰﾄﾞｳｪｱ ﾌﾞｰﾄ ﾀｲﾐﾝｸﾞ
ｼﾝﾎﾞﾙ
項目
tSHRH RESET↑前Low確保時間

最小
最大 単位
0
ns
付加起動遅延時間tHHRH RESET↑後Low保持時間 (SUTによるCK計数+WDT計数)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]252

29.9. A/D変換器特性表29-7. A/D変換特性
ｼﾝﾎﾞﾙ
項目
分解能

TUE

INL

DNL

絶対精度

積分非直線性誤差

微分非直線性誤差

利得誤差

ｵﾌｾｯﾄ(ｾﾞﾛ)誤差

条件
ｼﾝｸﾞﾙ ｴﾝﾄﾞ入力変換
×1/×10/×40差動入力変換
×200差動入力変換
VCC=4V,ｼﾝｸﾞﾙ ｴﾝﾄﾞ
VREF=4V,
VCC=5V,
変換ｸﾛｯｸ×1/×10/×40差動=200kHz
VCC=5V,×200差動
VCC=4V,ｼﾝｸﾞﾙ ｴﾝﾄﾞ
VREF=4V,
VCC=5V,
変換ｸﾛｯｸ×1/×10/×40差動=200kHz
VCC=5V,×200差動
VCC=4V,ｼﾝｸﾞﾙ ｴﾝﾄﾞ
VREF=4V,
VCC=5V,
変換ｸﾛｯｸ×1/×10/×40差動=200kHz
VCC=5V,×200差動
VCC=4V,ｼﾝｸﾞﾙ ｴﾝﾄﾞ
VREF=4V,
VCC=5V,
変換ｸﾛｯｸ×1/×10/×40差動=200kHz
VCC=5V,×200差動
VREF=4V, VCC=4V,ｼﾝｸﾞﾙ ｴﾝﾄﾞ変換ｸﾛｯｸ=200kHz VCC=5V,差動

AVCC ｱﾅﾛｸﾞ供給電圧
VREF 基準電圧
VIN

入力電圧
入力周波数帯域

最小

代表
10
8
8
2.0

最大

2.0

3.0

2.0
0.5

4.0
1.5

0.3

1.5

0.5
0.4

1.5
0.7

0.3

1.0

-2.5

0.6
-1.0

1.0
2.5

0.0

-1.5

-2.5

0.0

-1.8

-3.0

-2.5

-1.0

2.5

0.0

-1.8

-3.0

VCC-0.3
2.56
2.56
GND
0

ｼﾝｸﾞﾙ ｴﾝﾄﾞ入力変換
差動入力変換ｼﾝｸﾞﾙ ｴﾝﾄﾞ入力変換
差動入力変換ｼﾝｸﾞﾙ ｴﾝﾄﾞ入力変換
差動入力変換VINT 内蔵2.56V基準電圧
RREF 基準電圧入力ｲﾝﾋﾟｰﾀﾞﾝｽ
RAIN ｱﾅﾛｸﾞ入力ｲﾝﾋﾟｰﾀﾞﾝｽ

2.4

単位
ﾋﾞｯﾄ

3.0

LSB

VCC+0.3
AVCC
AVCC-0.5
VREF
AVCC
38.5
4
2.56
32
100

V

kHz
2.8

V
kΩ
MΩ

29.10. 校正付き内蔵RC発振器の精度
表29-8. 校正付き内蔵RC発振器の校正精度
校正種別
周波数
工場校正
8.0MHz使用者校正
7.3～8.1MHz

VCC
3V
2.7～5.5V

温度
25℃-40～85℃

校正精度
±10%
±1%

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]253

30. 代表特性
以下の図は代表的な特性を示します。これらの図は製造中に検査されていません。全ての消費電流測定は全I/Oﾋﾟﾝを入力として設定した内部ﾌﾟﾙｱｯﾌﾟ許可で行われています。電源幅振幅の方形波発振器がｸﾛｯｸ源として使われています。
活動動作とｱｲﾄﾞﾙ動作の消費電流測定は電力削減ﾚｼﾞｽﾀ(PRR)で全ﾋﾞｯﾄが設定(1)で行なわれ、従って関係周辺機能部はOFFにされます。ｱﾅﾛｸﾞ比較器もこれらの測定中に禁止されます。詳細については27頁の「電力削減(ﾚｼﾞｽﾀ)」をご覧ください。
ﾊﾟﾜｰﾀﾞｳﾝ動作での消費電力はｸﾛｯｸ選択と無関係です。
消費電流は動作電圧、動作周波数、I/Oﾋﾟﾝの負荷、I/Oﾋﾟﾝの切り替え速度、命令実行、周囲温度のような様々な要素の関数です。
支配的な要素は動作電圧と動作周波数です。
容量性負荷のﾋﾟﾝの引き込み電流は(1つのﾋﾟﾝに対して) CL(負荷容量)×VCC(動作電圧)×f (I/Oﾋﾟﾝの平均切り替え周波数) として推測できます。
ﾃﾞﾊﾞｲｽは検査範囲よりも高い周波数特性を示します。ﾃﾞﾊﾞｲｽは注文番号が示す周波数よりも高い周波数での機能特性を保証されません。
ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ許可のﾊﾟﾜｰﾀﾞｳﾝ動作での消費電流とｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ禁止のﾊﾟﾜｰﾀﾞｳﾝ動作での消費電流間の違いは、ｳｫｯﾁﾄﾞｯｸﾞ ﾀ
ｲﾏによって引き込んだ(消費した)差電流を表します。

30.1. 活動動作消費電流
図30-1. 活動動作消費電流 対 周波数 (100kHz～1MHz, TA=25℃)
1.6

VCC=5.5V

1.4

VCC=5V

1.2

0.8

VCC=4.5V
VCC=4V
VCC=3.6V

0.6

VCC=2.7V

1

消費電流
ICC (mA)

0.4
0.2
0

0

0.1

0.2

0.3

0.4
0.5
0.6
動作周波数 (MHz)

0.7

0.8

0.9

1

図30-2. 活動動作消費電流 対 周波数 (100kHz～1MHz, TA=85℃)
2.3

VCC=5.5V

2.1

VCC=5V

1.9

VCC=4.5V

1.7

消費電流
ICC (mA)

VCC=4V
VCC=3.6V

1.5
1.3

VCC=2.7V

1.1
0.9
0.7

0

0.1

0.2

0.3

0.4
0.5
0.6
動作周波数 (MHz)

0.7

0.8

0.9

1

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

254

図30-3. 活動動作消費電流 対 周波数 (2MHz～16MHz, TA=-40℃)
18

消費電流
ICC (mA)

16

VCC=5.5V

14

VCC=5V12

VCC=4.5V

10

VCC=4V8

VCC=3.6V

6

VCC=2.7V

4
2
0

2

4

6

8
10
動作周波数 (MHz)

12

14

16

図30-4. 活動動作消費電流 対 周波数 (2MHz～16MHz, TA=25℃)
16

VCC=5.5V

14

VCC=5V12

VCC=4.5V

10

消費電流
ICC (mA)

VCC=4V8

VCC=3.6V

6
4

VCC=2.7V

2
0

2

4

6

8
10
動作周波数 (MHz)

12

14

16

図30-5. 活動動作消費電流 対 周波数 (2MHz～16MHz, TA=85℃)
16

VCC=5.5V

14

VCC=5V12

VCC=4.5V

10

消費電流
ICC (mA)

VCC=4V8

VCC=3.6V

6
4

VCC=2.7V

2
0

2

4

6

8
10
動作周波数 (MHz)

12

14

16

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]255

30.2. ｱｲﾄﾞﾙ動作消費電流
図30-6. ｱｲﾄﾞﾙ動作消費電流 対 周波数 (100kHz～1MHz, TA=25℃)
500

消費電流
ICC (µA)

450

VCC=5.5V

400

VCC=5V350

VCC=4.5V

300

VCC=4V
VCC=3.6V

250

VCC=2.7V

200
150
100
50
0

0

0.1

0.2

0.3

0.4
0.5
0.6
動作周波数 (MHz)

0.7

0.8

0.9

1

図30-7. ｱｲﾄﾞﾙ動作消費電流 対 周波数 (100kHz～1MHz, TA=85℃)
500

VCC=5.5V

450

VCC=5V

400

VCC=4.5V

350

VCC=4V
VCC=3.6V

300

消費電流
ICC (µA)

250

VCC=2.7V

200
150
100
50
0

0

0.1

0.2

0.3

0.4
0.5
0.6
動作周波数 (MHz)

0.7

0.8

0.9

1

図30-8. ｱｲﾄﾞﾙ動作消費電流 対 周波数 (2MHz～16MHz, TA=25℃)
7

VCC=5.5V

6

VCC=5V

5

消費電流
ICC (mA)

VCC=4.5V

4

VCC=4V3

VCC=3.6V

2

VCC=2.7V

1
0

2

4

6

8
10
動作周波数 (MHz)

12

14

16

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

256

図30-9. ｱｲﾄﾞﾙ動作消費電流 対 周波数 (2MHz～16MHz, TA=85℃)
7

VCC=5.5V

消費電流
ICC (mA)

6

VCC=5V5

VCC=4.5V

4

VCC=4V3

VCC=3.6V

2

VCC=2.7V

1
0

2

4

6

8
10
動作周波数 (MHz)

12

14

16

30.3. ﾊﾟﾜｰﾀﾞｳﾝ動作消費電流
図30-10. ﾊﾟﾜｰﾀﾞｳﾝ動作消費電流 対 動作電圧 (ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ禁止)
3.5

TA=85℃32.5

消費電流
ICC (µA)2
1.5
1TA=25℃
TA=-40℃

0.5
0
2.5

2.8

3.1

3.4

3.7
4
4.3
動作電圧: VCC (V)

4.6

4.9

5.2

5.5

図30-11. ﾊﾟﾜｰﾀﾞｳﾝ動作消費電流 対 動作電圧 (ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ許可)
24

TA=85℃

22
20
18
16

消費電流
ICC (µA)

TA=25℃

14
12

TA=-40℃

10
8
6
4
2.5

2.8

3.1

3.4

3.7
4
4.3
動作電圧: VCC (V)

4.6

4.9

5.2

5.5

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]257

図30-12. ﾊﾟﾜｰﾀﾞｳﾝ動作消費電流 対 動作電圧 (ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ許可, 低電圧検出(BOD)許可)
TA=85℃

48
45
42

TA=25℃

39

消費電流
ICC (µA)

36
TA=-40℃

33
30
27
24
21
2.5

2.8

3.1

3.4

3.7
4
4.3
動作電圧: VCC (V)

4.6

4.9

5.2

5.5

30.4. ﾊﾟﾜｰｾｰﾌﾞ動作消費電流
図30-13. ﾊﾟﾜｰｾｰﾌﾞ動作消費電流 対 動作電圧 (ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ禁止)
200

TA=-40℃
TA=25℃
TA=85℃

185
170
155
140

消費電流
ICC (µA)

125
110
95
80
65
50
2.5

2.8

3.1

3.4

3.7
4
4.3
動作電圧: VCC (V)

4.6

4.9

5.2

5.5

30.5. ﾋﾟﾝ ﾌﾟﾙｱｯﾌﾟ
図30-14. I/Oﾋﾟﾝ ﾌﾟﾙｱｯﾌﾟ抵抗電流 対 入力電圧 (VCC=2.7V)
80
70
60

ﾌﾟﾙｱｯﾌﾟ抵抗
電流
IIO (µA)

50
40
30
20
TA=25℃
TA=-40℃
TA=85℃

10
0

0

0.5

1

1.5
入力電圧: VIO (V)

2

2.5

3

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]258

図30-15. I/Oﾋﾟﾝ ﾌﾟﾙｱｯﾌﾟ抵抗電流 対 入力電圧 (VCC=5V)
140
120
100

ﾌﾟﾙｱｯﾌﾟ抵抗
電流
IIO (µA)

80
60
40
20
0

TA=25℃
TA=85℃
TA=-40℃
0123
入力電圧: VIO (V)45

図30-16. RESETﾌﾟﾙｱｯﾌﾟ抵抗電流 対 入力電圧 (VCC=5V)
120
100
80

ﾌﾟﾙｱｯﾌﾟ抵抗
電流
IRESET (µA)

60
40
20
0

TA=25℃
TA=85℃
TA=-40℃
0123
入力電圧: VIO (V)45

30.6. ﾋﾟﾝ駆動能力
図30-17. I/Oﾋﾟﾝ出力電圧 対 吸い込み電流 (VCC=3V)
4
TA=85℃

3.5
3
2.5

L出力電圧
VOL (V)2
1.5

TA=25℃1

TA=-40℃

0.5
0

0

2

4

6

10
8
12
吸い込み電流: IOL (mA)

14

16

18

20

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]259

図30-18. I/Oﾋﾟﾝ出力電圧 対 吸い込み電流 (VCC=5V)
1

TA=85℃

0.9
0.8

L出力電圧
VOL (V)

0.7

TA=25℃

0.6

TA=-40℃

0.5
0.4
0.3
0.2
0.1
0

0

2

4

6

8
10
12
吸い込み電流: IOL (mA)

14

16

18

20

図30-19. I/Oﾋﾟﾝ出力電圧 対 吐き出し電流 (VCC=3V)
3.5
3
2.5

H出力電圧
VOH (V)2

TA=-40℃

1.5

TA=25℃

1
0.5
0

0

2

4

6

8
10
12
吐き出し電流: IOH (mA)

14

16

18

TA=85℃20

図30-20. I/Oﾋﾟﾝ出力電圧 対 吐き出し電流 (VCC=5V)
5.1
4.9
4.7

H出力電圧
VOH (V)

4.5
TA=-40℃

4.3

TA=25℃
4.1
3.9

TA=85℃
0

2

4

6

8
10
12
吐き出し電流: IOH (mA)

14

16

18

20

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

260

図30-21. USB D+ﾋﾟﾝ ﾌﾟﾙｱｯﾌﾟ抵抗電流 対 USBﾋﾟﾝ電圧
2.8
2.4
2
1.6
ﾌﾟﾙｱｯﾌﾟ抵抗
電流
1.2
IUSB (mA)
0.8
0.4
0

0

0.5

1

1.5
2
入力電圧: VSUB (V)

2.5

TA=85℃
TA=25℃
TA=-40℃
3.5

330.7. ﾋﾟﾝ 閾値とﾋｽﾃﾘｼｽ
図30-22. I/Oﾋﾟﾝ入力閾値(ｽﾚｯｼｮｰﾙﾄﾞ)電圧 対 動作電圧 (VIH,1読み値)
1.8
TA=-40℃
TA=25℃
TA=85℃

1.6
1.4

閾値電圧
1.2
VThreshold (V)
1
0.8
0.6
2.5

2.8

3.1

3.4

3.7
4
4.3
動作電圧: VCC (V)

4.6

4.9

5.2

5.5

図30-23. I/Oﾋﾟﾝ入力閾値(ｽﾚｯｼｮｰﾙﾄﾞ)電圧 対 動作電圧 (VIL,0読み値)
1.8

TA=-40℃
TA=25℃
TA=85℃

1.6
1.4

閾値電圧
1.2
VThreshold (V)
1
0.8
0.6
2.5

2.8

3.1

3.4

3.7
4
4.3
動作電圧: VCC (V)

4.6

4.9

5.2

5.5

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]261

図30-24. USBﾋﾟﾝ入力閾値(ｽﾚｯｼｮｰﾙﾄﾞ)電圧 対 動作電圧 (VIH,1読み値)
1TA=85℃
TA=25℃

1.9

TA=-40℃

1.8
1.7
閾値電圧
1.6
VThreshold (V)
1.5
1.4
1.3
1.2
2.7

2.8

2.9

3

3.1
3.2
3.3
3.4
動作電圧: VCC (V)

3.5

3.6

3.7

3.8

図30-25. USBﾋﾟﾝ入力閾値(ｽﾚｯｼｮｰﾙﾄﾞ)電圧 対 動作電圧 (VIL,0読み値)
1.6
TA=-40℃
TA=85℃
TA=25℃

1.5
1.4
1.3
閾値電圧
VThreshold (V)
1.2
1.1
1
0.9
2.7

2.8

2.9

3

3.1
3.2
3.3
3.4
動作電圧: VCC (V)

3.5

3.6

3.7

3.8

図30-26. VBUSﾋﾟﾝ入力閾値(ｽﾚｯｼｮｰﾙﾄﾞ)電圧 対 動作電圧 (VIH,1読み値)
4.6
4.58
4.56
4.54
4.52
4.5
閾値電圧
VThreshold (V) 4.48
4.46
4,44
4.42
4.4
4.38
2.5

TA=85℃
TA=25℃

2.8

3.1

3.4

3.7
4
4.3
動作電圧: VCC (V)

4.6

4.9

5.2

TA=-40℃
5.5

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]262

図30-27. VBUSﾋﾟﾝ入力閾値(ｽﾚｯｼｮｰﾙﾄﾞ)電圧 対 動作電圧 (VIL,0読み値)
1.52

TA=85℃
TA=25℃

1.51
1.5

閾値電圧
1.49
VThreshold (V)
1.48
1.47
TA=-40℃
1.462.5

2.8

3.1

3.4

3.7
4
4.3
動作電圧: VCC (V)

4.6

4.9

5.2

5.5

30.8. 低電圧検出器(BOD)閾値
図30-28. 低電圧検出器(BOD)閾値(ｽﾚｯｼｮｰﾙﾄﾞ)電圧 対 動作温度 (検出電圧2.6V)
2.8

VCC上昇

2.78
2.76
2.74
閾値電圧
2.72
VThreshold (V)
2.7

VCC下降

2.68
2.66
2.64
-50 -40 -30 -20 -10

010 20 30 40
動作温度: TA (℃)

50

60

70

80

90

図30-29. 低電圧検出器(BOD)閾値(ｽﾚｯｼｮｰﾙﾄﾞ)電圧 対 動作温度 (検出電圧3.5V)
3.73

VCC上昇

3.69
VCC下降

3.65

閾値電圧 3.61
VThreshold (V)
3.57
3.53
3.49
3.45
-50 -40 -30 -20 -10

010 20 30 40
動作温度: TA (℃)

50

60

70

80

90

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]263

図30-30. 低電圧検出器(BOD)閾値(ｽﾚｯｼｮｰﾙﾄﾞ)電圧 対 動作温度 (検出電圧4.3V)
4.6

VCC上昇

4.55
4.5

VCC下降

4.45
4.4
閾値電圧
4.35
VThreshold (V)
4.3
4.25
4.2
4.15
4.1
-50 -40 -30 -20 -10

010 20 30 40
動作温度: TA (℃)

50

60

70

80

90

図30-31. ﾊﾞﾝﾄﾞｷﾞｬｯﾌﾟ電圧 対 動作電圧
1.11
1.1
1.09

TA=85℃
TA=25℃

ﾊﾞﾝﾄﾞｷﾞｬｯﾌﾟ
電圧
1.08
VBG (V)
1.07
1.06

TA=-40℃
1.05
1.5

2

2.5

3
3.5
4
動作電圧: VCC (V)

4.5

5

5.5

図30-32. ﾊﾞﾝﾄﾞｷﾞｬｯﾌﾟ電圧 対 動作温度
1.11

VCC=1.9V
VCC=3V
VCC=4.5V
VCC=5V
VCC=5.5V

1.1
1.09

ﾊﾞﾝﾄﾞｷﾞｬｯﾌﾟ
電圧
1.08
VBG (V)
1.07
1.06
1.05
-40

-30

-20

-10

0

10
20
30
40
動作温度: TA (℃)

50

60

70

80

90

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]264

30.9. 内部発振器周波数
図30-33. ｳｫｯﾁﾄﾞｯｸﾞ発振器周波数 対 動作温度
124
122
120

発振周波数
118
FRC (kHz)VCC=1.9V

116
114
112
-40

-30

-20

-10

0

10
20
30
40
動作温度: TA (℃)

50

60

70

80

VCC=3V
VCC=4V
VCC=4.5V
VCC=5.5V90

図30-34. ｳｫｯﾁﾄﾞｯｸﾞ発振器周波数 対 動作電圧124122

TA=-40℃

120
TA=25℃

発振周波数 118
FRC (kHz)116
114

TA=85℃

112
110
1.5

2

2.5

3
3.5
4
動作電圧: VCC (V)

4.5

5

5.5

図30-35. 校正付き8MHz内蔵RC発振器周波数 対 発振校正(OSCCAL)値
TA=85℃
TA=25℃
TA=-40℃

14
12
10

発振周波数
FRC (MHz)

8
6
4
2
0

0

16

32

48

64

80

96 112 128 144 160 176 192 208 224 240 (256)
OSCCAL値

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

265

図30-36. 校正済み8MHz内蔵RC発振器周波数 対 動作温度
8.4

VCC=2.7V
VCC=4V
VCC=5.5V

8.3
8.2

発振周波数
FRC (MHz)

8.1
8
7.9
7.8
7.7
-40

-30

-20

-10

0

10
20
30
40
動作温度: TA (℃)

50

60

70

80

90

図30-37. 校正済み8MHz内蔵RC発振器周波数 対 動作電圧
8.4
8.3

TA=85℃

8.2
8.1

発振周波数
FRC (MHz)8

TA=25℃

7.9
7.8

TA=-40℃

7.7
7.6
2.5

2.8

3.1

3.4

3.7
4
4.3
動作電圧: VCC (V)

4.6

4.9

5.2

5.5

図30-38. %での発振校正(OSCCAL)値段階量 (基準周波数=0.0MHz)
1.4
1.2
1

FRC変化
(%)

0.8
0.6
0.4
TA=85℃
TA=-40℃
TA=25℃

0.2
0

0

16

32

48

64

80

96 112 128 144 160 176 192 208 224 240 (256)
OSCCAL値

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]266

30.10. 周辺機能部消費電流
図30-39. USB電圧調整器出力電圧 対 入力電圧 (無負荷)3.5
TA=-40℃
TA=85℃
TA=25℃

3.4
3.3

電圧調整器
出力電圧
VREG (V)

3.2
3.1
3
2.9
2.8
2.7
2.7

2.9

3.1

3.3

3.5 3.7 3.9 4.1 4.3 4.5 4.7電圧調整器入力電圧: UVCC (V)

4.9

5.1

5.3 5.5

図30-40. USB電圧調整器出力電圧 対 入力電圧 (７５Ω負荷)
3.4

TA=-40℃
TA=85℃
TA=25℃

3.3
3.2
3.1

電圧調整器
出力電圧
VREG (V)

3
2.9
2.8
2.7
2.6
2.5
2.8

3.1

3.4

3.7
4
4.3
4.6
電圧調整器入力電圧: UVCC (V)

4.9

5.2

5.5

図30-41. A/D変換器内部基準電圧(VREF) 対 動作電圧
2.54
2.53
2.52
2.51

TA=85℃
TA=25℃

VREF電圧 2.5
VREF (V) 2.49
2.48
2.47
2.46
2.45
2.6

2.9

3.2

3.5

3.8
4.1
4.4
動作電圧: AVCC (V)

4.7

5

5.3

TA=-40℃
5.6

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]267

図30-42. 内部基準電圧(VintRef) 対 ｼﾝｸ電流
2.52

TA=85℃
TA=25℃

2.51
2.5
2.49

内部基準電圧 2.48
VintRef (V) 2.47
2.46

TA=-40℃

2.45
2.44
2.43

-7

-6

-5

-4
-3
ｼﾝｸ電流: (mA)

-2

-1

0

30.11. ﾘｾｯﾄ消費電流とﾘｾｯﾄ ﾊﾟﾙｽ幅
図30-43. ﾘｾｯﾄ消費(供給)電流 対 周波数 (2MHz～16MHz)

消費電流
ICC (mA)

3.5

VCC=5.5V

3

VCC=5V

2.5

VCC=4.5V

2

VCC=4V
VCC=3.6V

1.5
1

VCC=2.7V

0.5
0

2

4

6

8
10
動作周波数 (MHz)

12

14

16

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]268

31. ﾚｼﾞｽﾀ要約
拡張I/Oﾚｼﾞｽﾀ領域 (1/3)
ｱﾄﾞﾚｽ
($FF)
($FE)
($FD)
($FC)
($FB)
($FA)
($F9)
($F8)
($F7)
($F6)
($F5)
($F4)
($F3)
($F2)
($F1)
($F0)
($EF)
($EE)
($ED)
($EC)
($EB)
($EA)
($E9)
($E8)
($E7)
($E6)
($E5)
($E4)
($E3)
($E2)
($E1)
($E0)
($DF)
($DE)
($DD)
($DC)
($DB)
($DA)
($D9)
($D8)
($D7)
($D6)
($D5)
($D4)
($D3)
($D2)
($D1)
($D0)
($CF)
($CE)
($CD)
($CC)
($CB)
($CA)
($C9)
($C8)
($C7)
($C6)
($C5)
($C4)
($C3)
($C2)
($C1)
($C0)

ﾚｼﾞｽﾀ略称
ﾋﾞｯﾄ7
ﾋﾞｯﾄ6
ﾋﾞｯﾄ5
ﾋﾞｯﾄ4
ﾋﾞｯﾄ3
ﾋﾞｯﾄ2
ﾋﾞｯﾄ1
ﾋﾞｯﾄ0
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
UEINT
EPINT6EPINT5EPINT4EPINT3EPINT2EPINT1EPINT0
UEBCHX
EP-X ﾊﾞｲﾄ計数上位 (BYCT10～8)
UEBCLX
ｴﾝﾄﾞﾎﾟｲﾝﾄX ﾊﾞｲﾄ計数下位 (BYCT7～0)
UEDATX
ｴﾝﾄﾞﾎﾟｲﾝﾄX ﾃﾞｰﾀ (DAT7～0)
UEIENXFLERRE NAKINENAKOUTE RXSTPE RXOUTE STALLEDE TXINEUESTA1X
CTRLDIR CURRBK1 CURRBK0UESTA0X
CFGOK
OVERFI UNDERFIDTSEQ1 DTSEQ0 NBUSYBK1 NBUSYBK0UECFG1XEPBK1ALLOC
EPSIZE2 EPSIZE1 EPSIZE0EPBK0
UECFG0X EPTYPE1 EPTYPE0EPDIR
UECONXSTALLRQ STALLRQC RSTDT
EPEN
UERST
EPRST6EPRST5EPRST4EPRST3EPRST2EPRST1EPRST0EPNUM2 EPNUM1 EPNUM0UENUM
UEINTX FIFOCON NAKINIRWAL NAKOUTI RXSTPIRXOUTI STALLEDI
TXINI
予約
UDMFN
FNCERRUDFNUMH
装置ﾌﾚｰﾑ番号上位 (FNUM10～8)
UDFNUML
装置ﾌﾚｰﾑ番号下位 (FNUM7～0)
UDADDR
ADDEN
装置ｱﾄﾞﾚｽ (UADD6～0)
UDIEN
UPRSME EORSME WAKEUPE EORSTE
SOFE
SUSPE
UDINT
UPRSMIEORSMI WAKEUPI EORSTI
SOFI
SUSPI
UDCON
RSTCPULSM
RMWKUP DETACH
予約
予約
予約
予約
予約
USBINT
VBUSTI
USBSTA
ID
VBUS
USBCONUSBE
FRZCLK OTGPADE
VBUSTEUHWCONUVREGE
予約
予約
DT4
DT4L1
DT4H3
DT4H2
DT4H1
DT4H0
DT4L3
DT4L2
DT4L0
予約
OCR4D
ﾀｲﾏ/ｶｳﾝﾀ4 比較Dﾚｼﾞｽﾀ
OCR4C
ﾀｲﾏ/ｶｳﾝﾀ4 比較Cﾚｼﾞｽﾀ
OCR4B
ﾀｲﾏ/ｶｳﾝﾀ4 比較Bﾚｼﾞｽﾀ
OCR4A
ﾀｲﾏ/ｶｳﾝﾀ4 比較Aﾚｼﾞｽﾀ
UDR１
USART1 ﾃﾞｰﾀ ﾚｼﾞｽﾀUBRR1HUSART1 ﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ上位 (UBRR111～8)
UBRR1LUSART1 ﾎﾞｰﾚｰﾄ ﾚｼﾞｽﾀ下位 (UBRR17～0)
UCSR1DCTSEN1 RTSEN1
UCSR1C UMSEL11 UMSEL10 UPM11
UCSZ10 UCPOL1
UPM10
USBS1
UCSZ11
UCSR1B
RXCIE1TXCIE1
UDRIE1RXEN1
TXEN1
UCSZ12
RXB81
TXB81
UCSR1A
RXC1
TXC1
UDRE1
FE1
DOR1
UPE1
U2X1
MPCM1
CLKSTARCONEXTON
CLKSEL1 RCCKSEL3 RCCKSEL2 RCCKSEL1 RCCKSEL0 EXCKSEL3 EXCKSEL2 EXCKSEL1 EXCKSEL0
CLKSEL0
RCE
RCSUT1 RCSUT0 EXSUT1
EXSUT0EXTE
CLKS
TCCR4ETLOCK4ENHC4OC4OE5 OC4OE4 OC4OE3 OC4OE2 OC4OE1 OC4OE0
TCCR4D
WGM41
FPIE4
FPEN4
FPNC4
FPES4
FPAC4
FPF4
WGM40
TCCR4C COM4A1S COM4A0S COM4B1S COM4B0S COM4D1 COM4D0 FOC4D
PWM4D
TCCR4B
CS41
PWM4X
PSR4
DTPS41
DTPS40
CS43
CS42
CS40
TCCR4A
FOC4A
PWM4A
COM4A1 COM4A0 COM4B1 COM4B0
FOC4B
PWM4B

頁

191
191
191
190
189
188
188
187
187
186
186
189
186
186
185
185
184
184

175
174
174
174
114
112
112
112
112
136
139
138
137
137
136
24
23
23
111
110
109
108
106

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

269

拡張I/Oﾚｼﾞｽﾀ領域 (2/3)
ｱﾄﾞﾚｽ
($BF)
($BE)
($BD)
($BC)
($BB)
($BA)
($B9)
($B8)
($B7)
($B6)
($B5)
($B4)
($B3)
($B2)
($B1)
($B0)
($AF)
($AE)
($AD)
($AC)
($AB)
($AA)
($A9)
($A8)
($A7)
($A6)
($A5)
($A4)
($A3)
($A2)
($A1)
($A0)
($9F)
($9E)
($9D)
($9C)
($9B)
($9A)
($99)
($98)
($97)
($96)
($95)
($94)
($93)
($92)
($91)
($90)
($8F)
($8E)
($8D)
($8C)
($8B)
($8A)
($89)
($88)
($87)
($86)
($85)
($84)
($83)
($82)
($81)
($80)

ﾚｼﾞｽﾀ略称
TC4H
TCNT4
TWAMR
TWCR
TWDR
TWAR
TWSR
TWBR
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
予約
OCR3CHOCR3CLOCR3BHOCR3BLOCR3AHOCR3AL
ICR3H
ICR3L
TCNT3H
TCNT3L
予約
TCCR3CTCCR3B
TCCR3A
予約
予約
OCR1CHOCR1CLOCR1BHOCR1BLOCR1AHOCR1AL
ICR1H
ICR1L
TCNT1H
TCNT1L
予約
TCCR1CTCCR1BTCCR1A

ﾋﾞｯﾄ7
-

ﾋﾞｯﾄ6
-

TWAM6
TWINT

TWAM5
TWEA

TWA6
TWS7

TWA5
TWS6

ﾋﾞｯﾄ5
-

ﾋﾞｯﾄ4
ﾋﾞｯﾄ3
ﾋﾞｯﾄ2
TC410
ﾀｲﾏ/ｶｳﾝﾀ4 (下位ﾊﾞｲﾄ)
TWAM4
TWAM3
TWAM2
TWAM1
TWSTA
TWSTO
TWWC
TWEN
2線直列ｲﾝﾀｰﾌｪｰｽ ﾃﾞｰﾀ ﾚｼﾞｽﾀ
TWA4
TWA3
TWA2
TWA1
TWS5
TWS4
TWS3
2線直列ｲﾝﾀｰﾌｪｰｽ ﾋﾞｯﾄ速度ﾚｼﾞｽﾀ

ﾋﾞｯﾄ1
TC49

ﾋﾞｯﾄ0
TC48

TWAM0
-

TWIE

TWA0
TWPS1

TWGCE
TWPS0

ﾀｲﾏ/ｶｳﾝﾀ3 比較Cﾚｼﾞｽﾀ上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ3 比較Cﾚｼﾞｽﾀ下位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ3 比較Bﾚｼﾞｽﾀ上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ3 比較Bﾚｼﾞｽﾀ下位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ3 比較Aﾚｼﾞｽﾀ上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ3 比較Aﾚｼﾞｽﾀ下位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ3 捕獲ﾚｼﾞｽﾀ上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ3 捕獲ﾚｼﾞｽﾀ下位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ3 上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ3 下位ﾊﾞｲﾄ
FOC3A
ICNC3
COM3A1ICES3
COM3A0COM3B1

WGM33
COM3B0

WGM32
COM3C1

CS32
COM3C0

87
87
87
88
86
CS31
WGM31

CS30
WGM30

ﾀｲﾏ/ｶｳﾝﾀ1 比較Cﾚｼﾞｽﾀ上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ1 比較Cﾚｼﾞｽﾀ下位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ1 比較Bﾚｼﾞｽﾀ上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ1 比較Bﾚｼﾞｽﾀ下位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ1 比較Aﾚｼﾞｽﾀ上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ1 比較Aﾚｼﾞｽﾀ下位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ1 捕獲ﾚｼﾞｽﾀ上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ1 捕獲ﾚｼﾞｽﾀ下位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ1 上位ﾊﾞｲﾄ
ﾀｲﾏ/ｶｳﾝﾀ1 下位ﾊﾞｲﾄ
FOC1A
ICNC1
COM1A1

FOC1B
ICES1COM1A0

FOC1C
COM1B1WGM13
COM1B0WGM12COM1C1

CS12
COM1C0

頁
111
111
165
163
164
164
164
163

85
84
83

86
86
86
88
86
CS11
WGM11

CS10
WGM10

85
84
83

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

270拡張I/Oﾚｼﾞｽﾀ領域 (3/3)
ｱﾄﾞﾚｽ
($7F)
($7E)
($7D)
($7C)
($7B)
($7A)
($79)
($78)
($77)
($76)
($75)
($74)
($73)
($72)
($71)
($70)
($6F)
($6E)
($6D)
($6C)
($6B)
($6A)
($69)
($68)
($67)
($66)
($65)
($64)
($63)
($62)
($61)
($60)

ﾚｼﾞｽﾀ略称
DIDR1
DIDR0
DIDR2
ADMUX
ADCSRBADCSRA
ADCH
ADCL
予約
予約
予約
予約
予約
TIMSK4TIMSK3
予約
TIMSK1TIMSK0
予約
予約
PCMSK0
EICRB
EICRA
PCICR
RCCTRLOSCCAL
PRR1
PRR0
予約
予約
CLKPR
WDTCSR

ﾋﾞｯﾄ7
ADC7D
REFS1
ADHSM
ADEN

ﾋﾞｯﾄ6
ﾋﾞｯﾄ5
ﾋﾞｯﾄ4
ﾋﾞｯﾄ3
ﾋﾞｯﾄ2
ﾋﾞｯﾄ1
ADC6D
ADC5D
ADC4D
ADC1D
ADC13D ADC12D ADC11D ADC10D
ADC9D
MUX1
REFS0
ADLAR
MUX4
MUX3
MUX2
ADTS1
ACME
MUX5
ADTS3
ADTS2
ADPS1
ADSC
ADATE
ADIF
ADIE
ADPS2
A/Dﾃﾞｰﾀ ﾚｼﾞｽﾀ上位ﾊﾞｲﾄ (ADC9～8またはADC9～2)
A/Dﾃﾞｰﾀ ﾚｼﾞｽﾀ下位ﾊﾞｲﾄ (ADC7～0またはADC1,0)

ﾋﾞｯﾄ0
AIN0D
ADC0D
ADC8D
MUX0
ADTS0
ADPS0

OCIE4D-OCIE4A-

OCIE4B
ICIE3-

OCIE3C

TOIE4
OCIE3B

OCIE3A

TOIE3

113
88

-

-

ICIE1
-

-

OCIE1C-OCIE1B
OCIE0BOCIE1A
OCIE0A

TOIE1
TOIE0

88
68

PCINT7ISC31-PCINT6ISC30-

PCINT1ISC01-

PCINT0
ISC00
PCIE0
RCFREQ

PRUSB
PRTWI

-

PCINT5
PCINT4
PCINT3
PCINT2
ISC61
ISC60
ISC21
ISC20
ISC11
ISC10
内蔵RC発振器 発振校正値ﾚｼﾞｽﾀ
PRTIM4PRTIM3
PRTIM0PRTIM1PRSPI-

PRUSART
PRADC

40
39
38
40
20
20
29
28

CLKPCE
WDIF

WDIE

WDP3

CLKPS1WDP1

CLKPS0
WDP0

24
35

WDCE

CLKPS3WDE

CLKPS2
WDP2

頁
193
205
205
202
192,203
203
204

注意: ● 将来のﾃﾞﾊﾞｲｽとの共通性のため、ｱｸｾｽされる場合の予約ﾋﾞｯﾄは0を書かれるべきです。予約したI/Oﾒﾓﾘ ｱﾄﾞﾚｽは決して書かれるべきではありません。
● ｱﾄﾞﾚｽ範囲$00～$1F内のI/OﾚｼﾞｽﾀはSBIとCBI命令を使う直接ﾋﾞｯﾄ ｱｸｾｽが可能です。これらのﾚｼﾞｽﾀではSBISとSBIC命令を使うことによって単一ﾋﾞｯﾄ値が検査できます。
● いくつかの状態ﾋﾞｯﾄはそれらへ論理1を書くことによって解除(0)されます。他の多くのAVRと異なり、CBIとSBI命令は指定ﾋﾞｯﾄだけ操作し、故にこのような状態ﾌﾗｸﾞを含むﾚｼﾞｽﾀで使えます。CBIとSBI命令は$00～$1Fのﾚｼﾞｽﾀだけで動作します。
● I/O指定命令INとOUTを使う時はI/Oｱﾄﾞﾚｽ$00～$3Fが使われなければなりません。LDとST命令を使ってﾃﾞｰﾀ空間として
I/Oﾚｼﾞｽﾀをｱﾄﾞﾚｽ指定する時はこれらのｱﾄﾞﾚｽに$20が加算されなければなりません。ATmega16U4/32U4はINとOUT命令で予約した64位置で支援できるよりも多くの周辺部(機能)の複合ﾏｲｸﾛ ｺﾝﾄﾛｰﾗです。SRAM(ﾃﾞｰﾀ空間)内の拡張I/O空間はST/STS/STDとLD/LDS/LDD命令だけが使えます。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]271

標準I/Oﾚｼﾞｽﾀ領域
ｱﾄﾞﾚｽ
ﾚｼﾞｽﾀ略称$3F ($5F)
SREG$3E ($5E)
SPH$3D ($5D)
SPL
予約$3C ($5C)
予約$3B ($5B)$3A ($5A)
予約$39 ($59)
予約$38 ($58)
予約$37 ($57)
SPMCSR$36 ($56)
予約$35 ($55)
MCUCR
MCUSR
$34 ($54)$33 ($53)
SMCR$32 ($52)
PLLFRQ
OCDR/$31 ($51)
MONDR
ACSR
$30 ($50)
予約$2F ($4F)
SPDR$2E ($4E)
SPSR$2D ($4D)
SPCR$2C ($4C)$2B ($4B)
GPIOR2$2A ($4A)
GPIOR1$29 ($49)
PLLCSR
OCR0B$28 ($48)
OCR0A$27 ($47)
TCNT0$26 ($46)
TCCR0B$25 ($45)$24 ($44)
TCCR0A$23 ($43)
GTCCR
EEARH
$22 ($42)$21 ($41)
EEARL$20 ($40)
EEDR$1F ($3F)
EECR$1E ($3E)
GPIOR0$1D ($3D)
EIMSK$1C ($3C)
EIFR$1B ($3B)
PCIFR$1A ($3A)
予約$19 ($39)
TIFR4
TIFR3
$18 ($38)
予約$17 ($37)
TIFR1$16 ($36)
TIFR0$15 ($35)
予約$14 ($34)
予約$13 ($33)
予約$12 ($32)
PORTF$11 ($31)$10 ($30)
DDRF$0F ($2F)
PINF$0E ($2E)
PORTE$0D ($2D)
DDRE$0C ($2C)
PINE$0B ($2B)
PORTD$0A ($2A)
DDRD$09 ($29)
PIND$08 ($28)
PORTC$07 ($27)
DDRC$06 ($26)
PINC$05 ($25)
PORTB$04 ($24)
DDRB$03 ($23)
PINB$02 ($22)
予約$01 ($21)
予約$00 ($20)
予約

ﾋﾞｯﾄ7
I
SP7

ﾋﾞｯﾄ6
T
SP6

ﾋﾞｯﾄ5
H
SP5

ﾋﾞｯﾄ4
S
SP4

ﾋﾞｯﾄ3
V
(SP11)
SP3

ﾋﾞｯﾄ2
N
SP10
SP2

ﾋﾞｯﾄ1
Z
SP9
SP1

ﾋﾞｯﾄ0
C
SP8
SP0

頁
7

SPMIE

RWWSB

SIGRD

RWWSREBLBSET

PGWRT

PGERS

SPMEN

219

JTD
PINMUXOCDR7/MOND7
ACD

PLLUSBOCDR6/
MOND6
ACBG

USBRF
PLLTM1
OCDR5/
MOND5
ACO

PUD
JTRF
PLLTM0
OCDR4/
MOND4
ACI

WDRF
SM2
PDIV3
OCDR3/
MOND3
ACIE

BORF
SM1
PDIV2
OCDR2/
MOND2
ACIC

IVSEL
EXTRF
SM0
PDIV1
OCDR1/
MOND1
ACIS1

IVCE
PORF
SE
PDIV0
OCDR0/MOND0
ACIS0212,53,37
212,34
28
25

SPIF
SPIE

WCOL
SPE

SPR1

SPI2X
SPR0

-

-

PLLE

PLOCK

FOC0A
COM0A1TSM-

FOC0B
COM0A0
-

CS01
WGM01
(EEAR9)CS00
WGM00
PSRSYNC
EEAR8

-

-

EEPE

EERE

-

INT6
INTF6
-

SPI ﾃﾞｰﾀ ﾚｼﾞｽﾀ
MSTR
CPOL
CPHA
汎用I/Oﾚｼﾞｽﾀ2
汎用I/Oﾚｼﾞｽﾀ1
PINDIVﾀｲﾏ/ｶｳﾝﾀ0 比較Bﾚｼﾞｽﾀ
ﾀｲﾏ/ｶｳﾝﾀ0 比較Aﾚｼﾞｽﾀ
ﾀｲﾏ/ｶｳﾝﾀ0
WGM02
CS02
COM0B1 COM0B0
EEPROMｱﾄﾞﾚｽ ﾚｼﾞｽﾀ下位ﾊﾞｲﾄ (EEAR7～0)
EEPROMﾃﾞｰﾀ ﾚｼﾞｽﾀ
EEPM1
EERIE
EEPM0
EEMPE
汎用I/Oﾚｼﾞｽﾀ0
INT3
INT2
INTF3
INTF2
-

INT1
INTF1
-

INT0
INTF0
PCIF0

13
13
16
39
39
40

OCF4D
-

OCF4A
-

OCF4B
ICF3

-

OCF3C

TOV4
OCF3B

OCF3A

TOV3

113
89

-

-

ICF1
-

-

OCF1C
-

OCF1B
OCF0B

OCF1A
OCF0A

TOV1
TOV0

89
68

PORTF7DDF7PINF7PORTD7DDD7PIND7PORTC7DDC7PINC7PORTB7DDB7PINB7PORTF6DDF6PINF6PORTE6DDE6PINE6PORTD6DDD6PIND6PORTC6DDC6PINC6PORTB6DDB6PINB6PORTF5DDF5PINF5PORTD5DDD5PIND5PORTB5DDB5PINB5PORTF4DDF4PINF4PORTD4DDD4PIND4PORTB4DDB4PINB4PORTD3DDD3PIND3PORTB3DDB3PINB3PORTE2DDE2
PINE2
PORTD2DDD2PIND2PORTB2DDB2PINB2PORTF1DDF1PINF1PORTD1DDD1PIND1PORTB1DDB1PINB1PORTF0
DDF0
PINF0
PORTD0DDD0PIND0PORTB0
DDB0
PINB0

54
54
54
54
54
54
53
53
53
53
53
53
53
53
53

DORD

8

208
193
121
120
120
16
16
24
67
67
67
66
65
56
13

注: ()付きのﾋﾞｯﾄはATmega16U4で無効です。
(訳注) 原書本位置の注意は前頁に移動しました。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]272

32. 命令要約
ﾆｰﾓﾆｯｸ

ｵﾍﾟﾗﾝﾄﾞ

ADD
ADC
ADIW
SUB
SUBI
SBIW
SBC
SBCI
AND
ANDI
OR
ORI
EOR
COM
NEG
SBR
CBR
INC
DEC
TST
CLR
SER
MUL
MULS
MULSU
FMUL
FMULS
FMULSU

Rd,Rr
Rd,Rr
Rd,K6
Rd,Rr
Rd,K
Rd,K6
Rd,Rr
Rd,K
Rd,Rr
Rd,K
Rd,Rr
Rd,K
Rd,Rr
Rd
Rd
Rd,K
Rd,K
Rd
Rd
Rd
Rd
Rd
Rd,Rr
Rd,Rr
Rd,Rr
Rd,Rr
Rd,Rr
Rd,Rr

RJMP
IJMP
JMP
RCALL
ICALL
CALL
RET
RETI
CPSE
CP
CPC
CPI
SBRC
SBRS
SBIC
SBIS
BRBS
BRBC
BREQ
BRNE
BRCS
BRCC
BRSH
BRLO
BRMI
BRPL
BRGE
BRLT
BRHS
BRHC
BRTS
BRTC
BRVS
BRVC
BRIE
BRID

k
k
k
k
Rd,Rr
Rd,Rr
Rd,Rr
Rd,K
Rr,b
Rr,b
P,b
P,b
s,k
s,k
k
k
k
k
k
k
k
k
k
k
k
k
k
k
k
k
k
k

意味

動作
算術、論理演算命令
汎用ﾚｼﾞｽﾀ間の加算
Rd ← Rd + Rr
ｷｬﾘｰを含めた汎用ﾚｼﾞｽﾀ間の加算
Rd ← Rd + Rr + C
即値の語(ﾜｰﾄﾞ)長加算
RdH:RdL ← RdH:RdL + K6
汎用ﾚｼﾞｽﾀ間の減算
Rd ← Rd - Rr
汎用ﾚｼﾞｽﾀから即値の減算
Rd ← Rd - K
即値の語(ﾜｰﾄﾞ)長減算
RdH:RdL ← RdH:RdL - K6
ｷｬﾘｰを含めた汎用ﾚｼﾞｽﾀ間の減算
Rd ← Rd - Rr - C
汎用ﾚｼﾞｽﾀからｷｬﾘｰと即値の減算
Rd ← Rd - K - C
汎用ﾚｼﾞｽﾀ間の論理積(AND)Rd ← Rd AND Rr
汎用ﾚｼﾞｽﾀと即値の論理積(AND)Rd ← Rd AND K
汎用ﾚｼﾞｽﾀ間の論理和(OR)Rd ← Rd OR Rr
汎用ﾚｼﾞｽﾀと即値の論理和(OR)Rd ← Rd OR K
汎用ﾚｼﾞｽﾀ間の排他的論理和(Ex-OR)
Rd ← Rd EOR Rr
1の補数(論理反転)
Rd ← $FF - Rd
2の補数
Rd ← $00 - Rd
汎用ﾚｼﾞｽﾀの(複数)ﾋﾞｯﾄ設定(1)
Rd ← Rd OR K
汎用ﾚｼﾞｽﾀの(複数)ﾋﾞｯﾄ解除(0)Rd ← Rd AND ($FF - K)
汎用ﾚｼﾞｽﾀの増加(+1)
Rd ← Rd + 1
汎用ﾚｼﾞｽﾀの減少(-1)
Rd ← Rd - 1
汎用ﾚｼﾞｽﾀのｾﾞﾛとﾏｲﾅｽ検査
Rd ← Rd AND Rd
汎用ﾚｼﾞｽﾀの全0設定(=$00)
Rd ← Rd EOR Rd
汎用ﾚｼﾞｽﾀの全1設定(=$FF)
Rd ← $FF
符号なし間の乗算
R1:R0 ← Rd×Rr(U×U)
符号付き間の乗算
R1:R0 ← Rd×Rr(S×S)
符号付きと符号なしの乗算
R1:R0 ← Rd×Rr(S×U)
符号なし間の固定小数点乗算
R1:R0 ← (Rd×Rr)<<1(U×U)
符号付き間の固定小数点乗算
R1:R0 ← (Rd×Rr)<<1(S×S)
符号付きと符号なしの固定小数点乗算
R1:R0 ← (Rd×Rr)<<1
(S×U)
分岐命令
相対無条件分岐PC ← PC + k + 1
Zﾚｼﾞｽﾀ間接無条件分岐
PC ← Z
絶対無条件分岐PC ← k相対ｻﾌﾞﾙｰﾁﾝ呼び出し
STACK ← PC, PC ← PC + k + 1
Zﾚｼﾞｽﾀ間接ｻﾌﾞﾙｰﾁﾝ呼び出し
STACK ← PC, PC ← Z
絶対ｻﾌﾞﾙｰﾁﾝ呼び出し
STACK ← PC, PC ← k
ｻﾌﾞﾙｰﾁﾝからの復帰
PC ← STACK
割り込みからの復帰
PC ← STACK
汎用ﾚｼﾞｽﾀ間比較、一致でｽｷｯﾌﾟ
Rd=Rrなら, PC ← PC + 2or3
汎用ﾚｼﾞｽﾀ間の比較
Rd - Rr
ｷｬﾘｰを含めた汎用ﾚｼﾞｽﾀ間の比較
Rd - Rr - C
汎用ﾚｼﾞｽﾀと即値の比較
Rd - K
汎用ﾚｼﾞｽﾀのﾋﾞｯﾄが解除(0)でｽｷｯﾌﾟ
Rr(b)=0なら, PC ← PC + 2or3
汎用ﾚｼﾞｽﾀのﾋﾞｯﾄが設定(1)でｽｷｯﾌﾟ
Rr(b)=1なら, PC ← PC + 2or3
I/Oﾚｼﾞｽﾀのﾋﾞｯﾄが解除(0)でｽｷｯﾌﾟ
P(b)=0なら, PC ← PC + 2or3
I/Oﾚｼﾞｽﾀのﾋﾞｯﾄが設定(1)でｽｷｯﾌﾟ
P(b)=1なら, PC ← PC + 2or3
ｽﾃｰﾀｽ ﾌﾗｸﾞが設定(1)で分岐
SREG(s)=1なら, PC ← PC + K + 1
ｽﾃｰﾀｽ ﾌﾗｸﾞが解除(0)で分岐
SREG(s)=0なら, PC ← PC + K + 1
一致で分岐
Z=1なら, PC ← PC + K + 1
不一致で分岐Z=0なら, PC ← PC + K + 1
ｷｬﾘｰ ﾌﾗｸﾞが設定(1)で分岐
C=1なら, PC ← PC + K + 1
ｷｬﾘｰ ﾌﾗｸﾞが解除(0)で分岐
C=0なら, PC ← PC + K + 1
符号なしの≧で分岐
C=0なら, PC ← PC + K + 1
符号なしの＜で分岐
C=1なら, PC ← PC + K + 1-(ﾏｲﾅｽ)で分岐
N=1なら, PC ← PC + K + 1+(ﾌﾟﾗｽ)で分岐
N=0なら, PC ← PC + K + 1
符号付きの≧で分岐(N EOR V)=0なら, PC ← PC + K + 1
符号付きの＜で分岐(N EOR V)=1なら, PC ← PC + K + 1
ﾊｰﾌｷｬﾘｰ ﾌﾗｸﾞが設定(1)で分岐
H=1なら, PC ← PC + K + 1
ﾊｰﾌｷｬﾘｰ ﾌﾗｸﾞが解除(0)で分岐
H=0なら, PC ← PC + K + 1
一時ﾌﾗｸﾞが設定(1)で分岐
T=1なら, PC ← PC + K + 1
一時ﾌﾗｸﾞが解除(0)で分岐
T=0なら, PC ← PC + K + 12の補数溢れﾌﾗｸﾞが設定(1)で分岐
V=1なら, PC ← PC + K + 12の補数溢れﾌﾗｸﾞが解除(0)で分岐
V=0なら, PC ← PC + K + 1
割り込み許可で分岐
I=1なら, PC ← PC + K + 1
割り込み禁止で分岐
I=0なら, PC ← PC + K + 1

ﾌﾗｸﾞ

ｸﾛｯｸ

I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
0
1
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
00 01
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C

1
1
2
1
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2

I,T,H,S,V,N,Z,C
2
I,T,H,S,V,N,Z,C
2
I,T,H,S,V,N,Z,C
3
I,T,H,S,V,N,Z,C
3
I,T,H,S,V,N,Z,C
3
I,T,H,S,V,N,Z,C
4
I,T,H,S,V,N,Z,C
4
1I,T,H,S,V,N,Z,C
4
I,T,H,S,V,N,Z,C 1/2,3
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C 1/2,3
I,T,H,S,V,N,Z,C 1/2,3
I,T,H,S,V,N,Z,C 1/2,3
I,T,H,S,V,N,Z,C 1/2,3
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2
I,T,H,S,V,N,Z,C 1/2

K6, K : 6, 8ﾋﾞｯﾄ定数 P : I/Oﾚｼﾞｽﾀ
Rd, Rr : 汎用ﾚｼﾞｽﾀ(R0～R31)
X, Y, Z : X, Y, Zﾚｼﾞｽﾀb : ﾋﾞｯﾄ(0～7)
k : ｱﾄﾞﾚｽ定数(7,12,16ﾋﾞｯﾄ)q : 符号なし6ﾋﾞｯﾄ定数(変位)s : ｽﾃｰﾀｽ ﾌﾗｸﾞ(C,Z,N,V,X,H,T,I)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]273

ﾆｰﾓﾆｯｸ

ｵﾍﾟﾗﾝﾄﾞ

MOV
MOVW
LDI
LD
LD
LD
LD
LD
LD
LDD
LD
LD
LD
LDD
LDS
ST
ST
ST
ST
ST
ST
STD
ST
ST
ST
STD
STS
LPM
LPM
LPM
SPM
IN
OUT
PUSH
POP

Rd,Rr
Rd,Rr
Rd,K
Rd,X
Rd,X+
Rd,-X
Rd,Y
Rd,Y+
Rd,-Y
Rd,Y+q
Rd,Z
Rd,Z+
Rd,-Z
Rd,Z+q
Rd,k
X,Rr
X+,Rr
-X,Rr
Y,Rr
Y+,Rr
-Y,Rr
Y+q,Rr
Z,Rr
Z+,Rr
-Z,Rr
Z+q,Rr
k,Rr

SBI
CBI
LSL
LSR
ROL
ROR
ASR
SWAP
BSET
BCLR
BST
BLD
SEC
CLC
SEN
CLN
SEZ
CLZ
SEI
CLI
SES
CLS
SEV
CLV
SET
CLT
SEH
CLH

P,b
P,b
Rd
Rd
Rd
Rd
Rd
Rd
s
s
Rr,b
Rd,b

NOP
SLEEP
WDR
BREAK

Rd,Z
Rd,Z+
Rd,P
P,Rr
Rr
Rd

意味

動作
ﾃﾞｰﾀ移動命令
汎用ﾚｼﾞｽﾀ間の複写
Rd ← Rr
汎用ﾚｼﾞｽﾀ対間の複写
Rd+1:Rd ← Rr+1:Rr
即値の取得
Rd ← K
Xﾚｼﾞｽﾀ間接での取得
Rd ← (X)
事後増加付きXﾚｼﾞｽﾀ間接での取得
Rd ← (X), X ← X + 1
事前減少付きXﾚｼﾞｽﾀ間接での取得
X ← X - 1, Rd ← (X)Yﾚｼﾞｽﾀ間接での取得
Rd ← (Y)
事後増加付きYﾚｼﾞｽﾀ間接での取得
Rd ← (Y), Y ← Y + 1
事前減少付きYﾚｼﾞｽﾀ間接での取得
Y ← Y - 1, Rd ← (Y)
変位付きYﾚｼﾞｽﾀ間接での取得
Rd ← (Y + q)
Zﾚｼﾞｽﾀ間接での取得
Rd ← (Z)
事後増加付きZﾚｼﾞｽﾀ間接での取得
Rd ← (Z), Z ← Z + 1
事前減少付きZﾚｼﾞｽﾀ間接での取得
Z ← Z - 1, Rd ← (Z)
変位付きZﾚｼﾞｽﾀ間接での取得
Rd ← (Z + q)
ﾃﾞｰﾀ空間(SRAM)から直接取得
Rd ← (k)Xﾚｼﾞｽﾀ間接での設定(X) ← Rr
事後増加付きXﾚｼﾞｽﾀ間接での設定(X) ← Rr, X ← X + 1
事前減少付きXﾚｼﾞｽﾀ間接での設定
X ← X - 1, (X) ← Rr
Yﾚｼﾞｽﾀ間接での設定(Y) ← Rr
事後増加付きYﾚｼﾞｽﾀ間接での設定(Y) ← Rr, Y ← Y + 1
事前減少付きYﾚｼﾞｽﾀ間接での設定
Y ← Y - 1, (Y) ← Rr
変位付きYﾚｼﾞｽﾀ間接での設定(Y + q) ← Rr
Zﾚｼﾞｽﾀ間接での設定(Z) ← Rr
事後増加付きZﾚｼﾞｽﾀ間接での設定(Z) ← Rr, Z ← Z + 1
事前減少付きZﾚｼﾞｽﾀ間接での設定
Z ← Z - 1, (Z) ← Rr
変位付きZﾚｼﾞｽﾀ間接での設定(Z + q) ← Rr
ﾃﾞｰﾀ空間(SRAM)へ直接設定(k) ← Rr
ﾌﾟﾛｸﾞﾗﾑ領域からZﾚｼﾞｽﾀ間接での取得
R0 ← (Z)
同上 (任意のﾚｼﾞｽﾀへ)
Rd ← (Z)
同上 (事後増加付き)
Rd ← (Z), Z ← Z + 1
ﾌﾟﾛｸﾞﾗﾑ領域へZ ﾚｼﾞｽﾀ間接での設定(Z) ← R1:R0
I/Oﾚｼﾞｽﾀからの入力
Rd ← P
I/Oﾚｼﾞｽﾀへの出力
P ← Rr
汎用ﾚｼﾞｽﾀをｽﾀｯｸへ保存
STACK ← Rr
ｽﾀｯｸから汎用ﾚｼﾞｽﾀへ復帰
Rd ← STACK
ﾋﾞｯﾄ関係命令
I/Oﾚｼﾞｽﾀのﾋﾞｯﾄ設定(1)
I/O(P,b) ← 1
I/Oﾚｼﾞｽﾀのﾋﾞｯﾄ解除(0)I/O(P,b) ← 0
論理的左ﾋﾞｯﾄ移動
Rd(n+1) ← Rd(n), Rd(0) ← 0
論理的右ﾋﾞｯﾄ移動
Rd(n) ← Rd(n+1), Rd(7) ← 0
ｷｬﾘｰを含めた左回転
Rd(0) ← C, Rd(n+1) ← Rd(n), C ← Rd(7)ｷｬﾘｰを含めた右回転Rd(7) ← C, Rd(n) ← Rd(n+1), C ← Rd(0)算術的右ﾋﾞｯﾄ移動
Rd(n) ← Rd(n+1), n=0～6
ﾆﾌﾞﾙ(4ﾋﾞｯﾄ)上位/下位交換
Rd(7～4) ⇔ Rd(3～0)
ｽﾃｰﾀｽ ﾚｼﾞｽﾀのﾋﾞｯﾄ設定(1)
SREG(s) ← 1
ｽﾃｰﾀｽ ﾚｼﾞｽﾀのﾋﾞｯﾄ解除(0)SREG(s) ← 0
汎用ﾚｼﾞｽﾀのﾋﾞｯﾄを一時ﾌﾗｸﾞへ移動
T ← Rr(b)一時ﾌﾗｸﾞを汎用ﾚｼﾞｽﾀのﾋﾞｯﾄへ移動
Rd(b) ← Tｷｬﾘｰ ﾌﾗｸﾞを設定(1)C←1ｷｬﾘｰ ﾌﾗｸﾞを解除(0)C←0負ﾌﾗｸﾞを設定(1)N←1
負ﾌﾗｸﾞを解除(0)N←0ｾﾞﾛ ﾌﾗｸﾞを設定(1)Z←1ｾﾞﾛ ﾌﾗｸﾞを解除(0)Z←0
全割り込み許可I←1
全割り込み禁止I←0
符号ﾌﾗｸﾞを設定(1)S←1
符号ﾌﾗｸﾞを解除(0)S←02の補数溢れﾌﾗｸﾞを設定(1)V←12の補数溢れﾌﾗｸﾞを解除(0)V←0
一時ﾌﾗｸﾞを設定(1)T←1
一時ﾌﾗｸﾞを解除(0)T←0ﾊｰﾌｷｬﾘｰ ﾌﾗｸﾞを設定(1)H←1
ﾊｰﾌｷｬﾘｰ ﾌﾗｸﾞを解除(0)H←0MCU制御命令
無操作
休止形態開始休止形態参照ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ ﾘｾｯﾄ
ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ参照
一時停止
内蔵ﾃﾞﾊﾞｯｸﾞ機能専用

ﾌﾗｸﾞ

ｸﾛｯｸ

I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C

1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
1
1
2
2

I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
1I,T,H,S,V,N,Z,C
1 111 11 1
0I,T,H,S,V,N,Z,C
0 000 00 0
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
0
1I,T,H,S,V,N,Z,C
0I,T,H,S,V,N,Z,C
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
0
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
0

2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C
1
I,T,H,S,V,N,Z,C N/AATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]274

33. 注文情報
速度(MHz)

電源電圧

注文ｺｰﾄﾞ
既定発振器
外囲器
動作範囲
ATmega16U4-16AU
外部ｸﾘｽﾀﾙ用
44ML
ATmega16U4RC-16AU(注1,2,3) 校正付き内蔵RC
16
2.7～5.5V
ATmega16U4-16MU
外部ｸﾘｽﾀﾙ用
44PW
ATmega16U4RC-16MU(注1,2,3) 校正付き内蔵RC
工業用(-40℃～85℃)
ATmega32U4-16AU
外部ｸﾘｽﾀﾙ用
44ML
ATmega32U4RC-16AU(注1,2,3) 校正付き内蔵RC
16
2.7～5.5V
ATmega32U4-16MU
外部ｸﾘｽﾀﾙ用
44PW
ATmega32U4RC-16MU(注1,2,3) 校正付き内蔵RC
注1: 内蔵RC発振器からUSBを走行するより多くの情報については、「AVR291: Atmel ATmega32U4RCでのUSB低速(Low-speed)
用8MHz内部発振器校正」応用記述を調べてください。
注2: 内蔵RC発振器からのUSB動作は0～40℃間でだけ保証されます。
注3: これらのﾃﾞﾊﾞｲｽは予め書かれたUSBﾌﾞｰﾄﾛｰﾀﾞなしで出荷されます。
外囲器形式
44ﾘｰﾄﾞ 10×10mm, 1.0mm厚, 0.8mmﾋﾟｯﾁ 薄型ﾌﾟﾗｽﾃｨｯｸ4方向平板外囲器 (TQFP)
44ﾊﾟｯﾄﾞ 7×7mm, 0.5mmﾋﾟｯﾁ 4方向平板ﾘｰﾄﾞなし外囲器 (QFN)

TQFP44 (44ML)
QFN44 (44PW)

34. 外囲器情報
34.1. TQFP44

34.2. QFN44

44ﾘｰﾄﾞ 0.8mmﾋﾟｯﾁ ﾌﾟﾗｽﾃｨｯｸ4方向平板外囲器 (TQFP)

44ﾊﾟｯﾄﾞ 0.5mmﾋﾟｯﾁ 4方向平板ﾘｰﾄﾞなし外囲器 (QFN)JEDEC規格 MO-220変形VKKD-1
表面寸法: mm
7.00±0.10□

寸法: mmJEDEC規格 MS-026 ACB

選択A
三角形

1ﾋﾟﾝ印
44

12.00±0.25□
選択B
面取り(C0.30)

1
選択C
窪み(0.20R)

1ﾋﾟﾝ印
+0.08
0.37 -0.07

0.80 Typ

裏面+0.07
0.23 -0.05

44
1

0.08C

1ﾋﾟﾝ角

10.00±0.10□

5.20±0.20□

1.00±0.05

0.50 BSC
着座面

0°
～7°
1.20 Max+0.03
0.17 -0.08

0.60±0.15

0.05～0.15

0.35
0.55±0.10

0.02+0.03
0.20 Ref
0.80～1.00

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]275

35. 障害情報
この章の改訂番号はATmega16U4/32U4ﾃﾞﾊﾞｲｽの改訂版を参照してください。

ATmega16U4/ATmega32U4改訂C試供されていません。

TWI許可時のTWIﾋﾟﾝでのｽﾊﾟｲｸ
休止形態での高消費電流● ﾀｲﾏ/ｶｳﾝﾀ4の11ﾋﾞｯﾄ増強PWM動作の問題● VBUSTI割り込みﾙｰﾁﾝに対する不正なCPUの動き● OCR4A/B/DのMSBが11ﾋﾞｯﾄ増強PWMで書き込み専用● 余分な電力消費● 校正付き内蔵RC発振器起動の問題● 校正付き内蔵RC発振器校正の問題●●

16U4-A/B/D/E, 32U4-A/B/D/E
16U4-A/B/D/E, 32U4-A/B/D/E
16U4-A/B/D, 32U4-A/B/D
16U4-A/B, 32U4-A/B
16U4-E, 32U4-E
16U4-A, 32U4-A
16U4-A, 32U4-A
16U4-A, 32U4-A

1. TWI許可時のTWIﾋﾟﾝでのｽﾊﾟｲｸ (16U4-A/B/D/E, 32U4-A/B/D/E)
TWIが許可される時にSDAとSCLﾋﾟﾝで100nsの負のｽﾊﾟｲｸが発生します。
対策/対処
TWI網の他の接続点に対してATmega16U4/32U4を最初に許可してください。
2. 休止形態での高消費電流 (16U4-A/B/D/E, 32U4-A/B/D/E)
保留割り込みが選択した休止形態からﾃﾞﾊﾞｲｽを起動復帰し得ない場合、SEI命令直後のSLEEP命令実行時の休止中、消費電流が増加するでしょう。
対策/対処
休止移行に先立って休止形態からﾃﾞﾊﾞｲｽの起動復帰に使われない割り込みは禁止されるべきです。
3. ﾀｲﾏ/ｶｳﾝﾀ4の11ﾋﾞｯﾄ増強PWM動作 (16U4-A/B/D, 32U4-A/B/D)
ﾀｲﾏ/ｶｳﾝﾀ4の11ﾋﾞｯﾄ増強動作は機能しません。
対策/対処ありません。
4. VBUSTI割り込みﾙｰﾁﾝに対する不正なCPUの動き (16U4-A/B, 32U4-A/B)
CPUｺｱはVBUSTI割り込み要求ﾌﾗｸﾞに関連する割り込みﾍﾞｸﾀを不正に実行するかもしれません。
対策/対処
この割り込みを許可しないでください。ﾌｧｰﾑｳｪｱはVBUSTIのﾎﾟｰﾘﾝｸﾞによってこのUSB事象を処理しなければなりません。
5. OCR4A/B/DのMSBが11ﾋﾞｯﾄ増強PWMで書き込み専用 (16U4-E, 32U4-E)
11ﾋﾞｯﾄ増強PWM動作に於いてOCR4A/B/DのMSBは書き込み専用です。OCR4A/B/Dの読み込みは常にMSB位置に0を返します。
対策/対処ありません。
6. 余分な電力消費 (16U4-A, 32U4-A)
代表的な消費電力はﾊﾟﾜｰﾀﾞｳﾝ動作で約30µA増加されます。
対策/対処ありません。
7. 校正付き内蔵RC発振器起動の問題 (16U4-A, 32U4-A)
ﾃﾞﾊﾞｲｽが内蔵RC発振器での開始に構成設定されている時にこの発振器が電源ON後に正しく始まらないかもしれません。
対策/対処
ﾃﾞﾊﾞｲｽを内蔵RC発振器での開始に構成設定してはなりません(ﾃﾞﾊﾞｲｽ既定構成設定は外部ｸﾘｽﾀﾙ用発振器での開始です(非RC製品))。
8. 校正付き内蔵RC発振器校正の問題 (16U4-A, 32U4-A)
校正付き内蔵RC発振器既定周波数は8MHzよりも低くなるかもしれません。
対策/対処
ﾃﾞﾊﾞｲｽは内蔵RC発振器周波数が既定の8MHz目的周波数に可能な限り近くなるように設定されています。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]276

36. ﾃﾞｰﾀｼｰﾄ改訂履歴
この章内の参照頁番号はこの資料が参照されていることに注意してください。この章内の改訂番号は資料の改訂番号を参照してください。

36.1. 7766A - 2008年3月
1. 初版

36.2. 7766B - 2008年7月
1. ATmega16U4ﾃﾞﾊﾞｲｽ追加
2. 「障害情報」項目作成とATmega16U4追加
3. 90頁の「10ﾋﾞｯﾄ高速ﾀｲﾏ/ｶｳﾝﾀ4」で非同期記述を更新

36.3. 7766C - 2008年11月
1. 「障害情報」項を更新

36.4. 7766D - 2009年1月
1. 1頁の「特徴」でﾒﾓﾘ項目を更新
2. 5頁に「資料」項を追加
3. 5頁に「ﾃﾞｰﾀ保持力」項を追加
4. 275頁の「注文情報」を更新

36.5. 7766E - 2010年4月
1. 1頁の「特徴」を更新
2. 166頁の「特徴」を更新
3. 169頁の図21-9.を更新
4. 171頁の21.8.項を更新
5. 194頁の「特徴」を更新
6. 214頁の「ATmega16U4/32U4の境界走査順」を更新
7. 227頁の表28-5.を更新
8. 248頁の「電気的特性」を更新
9. 250頁の図29-2.を更新
10. 254頁から「代表特性」を追加
11. 275頁の「注文情報」を更新
12. 276頁の「障害情報」を更新

36.6. 7766F - 2010年11月
1. 192頁の「ADCSRB - A/D変換制御/状態ﾚｼﾞｽﾀB」を更新、203頁のように定義
2. 図更新によって275頁の「QFN44」を更新
3. 新しいAtmelの品質様式指針に従って最終頁を更新

36.7. 7766G - 2014年2月
1. 115頁で「比較出力変調器(COM1C0A)」の「説明」を更新。論理積(AND)と論理和(OR)がPORTB7に基づいて実行されることを詳述。
2. 138頁の「UCSRnD - USART制御/状態ﾚｼﾞｽﾀD」を更新。「ﾋﾞｯﾄ7～2 - 予約」は読み出し専用。
3. 168頁の「ｸﾘｽﾀﾙなし動作」を更新。温度範囲を「0～40℃内」に変更。
4. 192頁の「ADCSRB - A/D変換制御/状態ﾚｼﾞｽﾀB」のMUXﾋﾞｯﾄをR/Wに変更
5. 204頁の表24-6.を更新。起動元:ﾀｲﾏ/ｶｳﾝﾀ0比較一致をﾀｲﾏ/ｶｳﾝﾀ0比較A一致に更新。
6. 248頁の「DC特性」を更新。ICC/消費電流に16MHz,VCC=5Vでの活動動作が最大27mAを追加。
7. 269頁の「ﾚｼﾞｽﾀ要約」を更新。ｱﾄﾞﾚｽ $CBにUCSR1Dを追加。
8. 外囲器図更新によって275頁の「TQFP44」と「QFN44」を置換
9. 新しいAtmelの品質様式指針(新ﾛｺﾞ)に従って最終頁を更新 (訳注:本書は全頁に渡って新雛形を適用)

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]277

36.8. 7766H - 2014年9月
1. 表紙で暫定を削除
2. 1頁の「特徴」で既定USBﾌﾞｰﾄﾛｰﾀﾞで予め書かれたﾃﾞﾊﾞｲｽの記述を更新
3. 19頁の表6-3.と20頁の表6-6.で周波数範囲の脚注を削除
4. 35頁の表8-4.で値更新と脚注削除
5. 99頁の「位相/周波数基準PWM動作」の第1節を修正
6. 249頁の表29-2.でVCC=1.5～5.5Vの列を削除
7. 249頁の表29-2.に対する脚注を変更
8. 252頁の表29-5.で上昇/下降時間に対してMax値を追加
9. 275頁の「33. 注文情報」でRC部品番号に対して3つの脚注を追加
10. 2014年5月からの新ﾃﾞｰﾀｼｰﾄ雛形で更新
11. 新雛形に従って様々な修正が行われました。
12. 最終頁に商標が追加されました。

36.9. 7766I - 2015年7月
1. 内容全体を通してAtmel品質を適用して内容を評価
2. 25頁のPLLFRQ記述を更新。説明の一部が欠落していました。

36.10. 7766J - 2016年4月
1. 226頁の「ﾒﾓﾘ ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ」 : ATmega16U4とATmega32U4に対するﾌﾗｯｼｭ ﾒﾓﾘとEEPROMのﾍﾟｰｼﾞ数とﾍﾟｰｼﾞ内語数を更新。
230頁の表28-11.と表28-12.を参照してください。

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

278

目次
特徴 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1
1. ﾋﾟﾝ配置 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 2
2. 概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3
2.1. 構成図 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3
2.2. ﾋﾟﾝ説明 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 4

3. 諸注意 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 5
3.1.
3.2.
3.3.
3.4.

お断り ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 5
資料 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 5
ｺｰﾄﾞ例 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 5
ﾃﾞｰﾀ保持力 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 5

4. AVR CPU ｺｱ ・・・・・・・・・・・・・・・・・・・・・・・・・・ 6
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.
4.8.

序説 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 6
構造概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 6
ALU (Arithmetic Logic Unit) ・・・・・・・・・・・・・・・・ 6
ｽﾃｰﾀｽ ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 7
汎用ﾚｼﾞｽﾀ ﾌｧｲﾙ ・・・・・・・・・・・・・・・・・・・・・・・・・ 8ｽﾀｯｸ ﾎﾟｲﾝﾀ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 8
命令実行ﾀｲﾐﾝｸﾞ ・・・・・・・・・・・・・・・・・・・・・・・・・・ 9
ﾘｾｯﾄと割り込みの扱い ・・・・・・・・・・・・・・・・・・・・ 9

5. AVRのﾒﾓﾘ ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 11
5.1.
5.2.
5.3.
5.4.

実装書き換え可能なﾌﾟﾛｸﾞﾗﾑ用ﾌﾗｯｼｭ ﾒﾓﾘ ・・・ 12
ﾃﾞｰﾀ用SRAMﾒﾓﾘ ・・・・・・・・・・・・・・・・・・・・・・・・ 12
ﾃﾞｰﾀ用EEPROMﾒﾓﾘ ・・・・・・・・・・・・・・・・・・・・・・ 13
I/Oﾒﾓﾘ (ﾚｼﾞｽﾀ) ・・・・・・・・・・・・・・・・・・・・・・・・・ 16

6. ｼｽﾃﾑ ｸﾛｯｸとｸﾛｯｸ選択 ・・・・・・・・・・・・・・・・ 17

9. 割り込み ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 36
9.1. ATmega16U4/32U4の割り込みﾍﾞｸﾀ ・・・・・・・・・ 36
9.2. ﾍﾞｸﾀ移動用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・ 37

10. 外部割り込み ・・・・・・・・・・・・・・・・・・・・・・・・ 38
10.1. ﾋﾟﾝ変化割り込みﾀｲﾐﾝｸﾞ ・・・・・・・・・・・・・・・・・・ 38
10.2. 外部割込み用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・ 38

11. 入出力ﾎﾟｰﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・・ 41
11.1.
11.2.
11.3.
11.4.

序説 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 41
標準ﾃﾞｼﾞﾀﾙ入出力としてのﾎﾟｰﾄ ・・・・・・・・・・・ 41
交換ﾎﾟｰﾄ機能 ・・・・・・・・・・・・・・・・・・・・・・・・・ 44
I/Oﾎﾟｰﾄ用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・ 53

12. ﾀｲﾏ/ｶｳﾝﾀ0,1,3の前置分周器 ・・・・・・・・・・・ 55
12.1.
12.2.
12.3.
12.4.

内部ｸﾛｯｸ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 55
前置分周器ﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・ 55
外部ｸﾛｯｸ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 55
同期系ﾀｲﾏ/ｶｳﾝﾀ前置分周器用ﾚｼﾞｽﾀ ・・・・・ 56

13. 8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ0 (PWM) ・・・・・・・・・・・・・・ 57
13.1.
13.2.
13.3.
13.4.
13.5.
13.6.
13.7.
13.8.

概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 57
ﾀｲﾏ/ｶｳﾝﾀのｸﾛｯｸ ・・・・・・・・・・・・・・・・・・・・・・ 58
計数器部 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 58
比較出力部 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 59
比較一致出力部 ・・・・・・・・・・・・・・・・・・・・・・・ 60
動作種別 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 61
ﾀｲﾏ/ｶｳﾝﾀのﾀｲﾐﾝｸﾞ ・・・・・・・・・・・・・・・・・・・・・ 64
8ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ0用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・ 65

6.1. ｸﾛｯｸ系統とその配給 ・・・・・・・・・・・・・・・・・・・・・ 17
6.2. ｸﾛｯｸ元 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 18
6.3. ｸﾘｽﾀﾙ用低電力発振器 ・・・・・・・・・・・・・・・・・・・ 19
6.4. 低周波数ｸﾘｽﾀﾙ用発振器 ・・・・・・・・・・・・・・・・・ 19
6.5. 校正付き内蔵RC発振器 ・・・・・・・・・・・・・・・・・・ 20
6.6. 外部ｸﾛｯｸ信号 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 21
6.7. ｸﾛｯｸ切り替え ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 21
6.8. ｼｽﾃﾑ ｸﾛｯｸ出力緩衝部 ・・・・・・・・・・・・・・・・・・・ 22
6.9. ｼｽﾃﾑ ｸﾛｯｸ前置分周器 ・・・・・・・・・・・・・・・・・・・ 22
6.10. PLL ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 22
6.11. ｸﾛｯｸ切り替え方法 ・・・・・・・・・・・・・・・・・・・・・・・ 22
6.12. ｸﾛｯｸ関係用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・ 23

14. 16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ1と3 ・・・・・・・・・・・・・・・・・ 69

7. 電力管理と休止形態 ・・・・・・・・・・・・・・・・・・ 26

15.1. 特徴 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 90
15.2. 概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 90
15.3. 計数器部 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 92
15.4. 比較出力部 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 93
15.5. 沈黙時間生成器 ・・・・・・・・・・・・・・・・・・・・・・・ 94
15.6. 比較一致出力部 ・・・・・・・・・・・・・・・・・・・・・・・ 95
15.7. 同期更新 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 96
15.8. 動作種別 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 97
15.9. ﾀｲﾏ/ｶｳﾝﾀのﾀｲﾐﾝｸﾞ ・・・・・・・・・・・・・・・・・・・・ 102
15.10. 障害保護部 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 103
15.11. 10ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ ・・・・・・・・・・・・・・・・・・ 104
15.12. 10ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ4用ﾚｼﾞｽﾀ・・・・・・・・・・・・・・ 106

7.1.
7.2.
7.3.
7.4.
7.5.
7.6.
7.7.
7.8.
7.9.

ｱｲﾄﾞﾙ動作 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 26
A/D変換雑音低減動作 ・・・・・・・・・・・・・・・・・・・ 26
ﾊﾟﾜｰﾀﾞｳﾝ動作 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 26
ﾊﾟﾜｰｾｰﾌﾞ動作 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 26
ｽﾀﾝﾊﾞｲ動作 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 26
拡張ｽﾀﾝﾊﾞｲ動作 ・・・・・・・・・・・・・・・・・・・・・・・・ 26
電力削減(電力削減ﾚｼﾞｽﾀ) ・・・・・・・・・・・・・・・・ 27
消費電力の最小化 ・・・・・・・・・・・・・・・・・・・・・・ 27
電力管理用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・ 28

8. ｼｽﾃﾑ制御とﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・ 30
8.1. AVRのﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 30
8.2. ﾘｾｯﾄ元 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 30
8.3. 電源ONﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 30
8.4. 外部ﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 31
8.5. 低電圧(ﾌﾞﾗｳﾝｱｳﾄ)検出ﾘｾｯﾄ ・・・・・・・・・・・・・・ 31
8.6. ｳｫｯﾁﾄﾞｯｸﾞ ﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・ 31
8.7. USBﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 31
8.8. 内部基準電圧 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 32
8.9. ｳｫｯﾁﾄﾞｯｸﾞ ﾀｲﾏ ・・・・・・・・・・・・・・・・・・・・・・・・・・ 32
8.10. ﾘｾｯﾄ関係用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・ 34

14.1. 概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 69
14.2. 16ﾋﾞｯﾄ ﾚｼﾞｽﾀのｱｸｾｽ ・・・・・・・・・・・・・・・・・・・ 71
14.3. ﾀｲﾏ/ｶｳﾝﾀのｸﾛｯｸ ・・・・・・・・・・・・・・・・・・・・・・ 73
14.4. 計数器部 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 73
14.5. 捕獲入力部 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 74
14.6. 比較出力部 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 75
14.7. 比較一致出力部 ・・・・・・・・・・・・・・・・・・・・・・・ 77
14.8. 動作種別 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 78
14.9. ﾀｲﾏ/ｶｳﾝﾀのﾀｲﾐﾝｸﾞ ・・・・・・・・・・・・・・・・・・・・・ 82
14.10. 16ﾋﾞｯﾄ ﾀｲﾏ/ｶｳﾝﾀ1,3用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・ 83

15. 10ﾋﾞｯﾄ高速ﾀｲﾏ/ｶｳﾝﾀ4 ・・・・・・・・・・・・・・・・ 90

16. 比較出力変調器 (COM1C0A) ・・・・・・・・・・ 115
16.1. 概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 115
16.2. 説明 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 115

17. SPI (直列周辺ｲﾝﾀｰﾌｪｰｽ) ・・・・・・・・・・・・・ 116
17.1. SSﾋﾟﾝの機能 ・・・・・・・・・・・・・・・・・・・・・・・・・ 118
17.2. ﾃﾞｰﾀ転送形式 ・・・・・・・・・・・・・・・・・・・・・・・・ 119
17.3. SPI用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・・・・ 120

18. USART ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 122
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]279

18.1. 概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 122
18.2. ｸﾛｯｸ生成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 123
18.3. ﾌﾚｰﾑ形式 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 124
18.4. USARTの初期化 ・・・・・・・・・・・・・・・・・・・・・・ 125
18.5. USARTのﾃﾞｰﾀ送信 ・・・・・・・・・・・・・・・・・・・・ 126
18.6. USARTのﾃﾞｰﾀ受信 ・・・・・・・・・・・・・・・・・・・・ 127
18.7. 非同期受信 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 130
18.8. 複数ﾌﾟﾛｾｯｻ通信動作 ・・・・・・・・・・・・・・・・・・ 132
18.9. ﾊｰﾄﾞｳｪｱ流れ(ﾌﾛｰ)制御 ・・・・・・・・・・・・・・・・ 133
18.10. ﾎﾞｰﾚｰﾄ設定例 ・・・・・・・・・・・・・・・・・・・・・・・・ 134
18.11. USART用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・ 136

19. USARTでのSPI動作 ・・・・・・・・・・・・・・・・・・ 140
19.1.
19.2.
19.3.
19.4.
19.5.
19.6.
19.7.

概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 140
ｸﾛｯｸ生成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 140
ﾃﾞｰﾀ転送形式 ・・・・・・・・・・・・・・・・・・・・・・・・ 140
ﾌﾚｰﾑ形式 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 141
ﾃﾞｰﾀ転送 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 142
USARTでのMSPIMとSPIの比較 ・・・・・・・・・・ 143
MSPIMでのUSART用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・ 144

20. 2線直列ｲﾝﾀｰﾌｪｰｽ (TWI) ・・・・・・・・・・・・・ 146
20.1.
20.2.
20.3.
20.4.
20.5.
20.6.
20.7.
20.8.
20.9.

特徴 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 146
2線直列ｲﾝﾀｰﾌｪｰｽ ﾊﾞｽの定義 ・・・・・・・・・・ 146
ﾃﾞｰﾀ転送とﾌﾚｰﾑ形式 ・・・・・・・・・・・・・・・・・・ 146
複数主装置ﾊﾞｽ ｼｽﾃﾑの調停と同期 ・・・・・・ 148
TWI部の概要 ・・・・・・・・・・・・・・・・・・・・・・・・・ 149
TWIの使用法 ・・・・・・・・・・・・・・・・・・・・・・・・・ 151
転送種別 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 153
複数主装置ｼｽﾃﾑでのﾊﾞｽ競合と調停 ・・・・・ 162
TWI用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・・・・ 163

21. USB制御器 ・・・・・・・・・・・・・・・・・・・・・・・・・ 166
21.1. 特徴 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 166
21.2. 構成図 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 166
21.3. 代表的な応用実装 ・・・・・・・・・・・・・・・・・・・・ 166
21.4. ｸﾘｽﾀﾙなし動作 ・・・・・・・・・・・・・・・・・・・・・・・ 168
21.5. 設計の指針 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 168
21.6. 一般的な動作 ・・・・・・・・・・・・・・・・・・・・・・・・ 168
21.7. 電力動作種別 ・・・・・・・・・・・・・・・・・・・・・・・・ 170
21.8. 速度制御 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 171
21.9. ﾒﾓﾘ管理 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 171
21.10. ﾊﾟｯﾄﾞ休止 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 172
21.11. ﾌﾟﾗｸﾞ接続検出 ・・・・・・・・・・・・・・・・・・・・・・・・ 172
21.12. USBｿﾌﾄｳｪｱ操作種別 ・・・・・・・・・・・・・・・・・・ 173
21.13. USB一般用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・ 174

22. USB装置動作 ・・・・・・・・・・・・・・・・・・・・・・・ 176
22.1. 序説 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 176
22.2. 電源ONとﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・・ 176
22.3. ｴﾝﾄﾞﾎﾟｲﾝﾄ ﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・ 176
22.4. USBﾘｾｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 176
22.5. ｴﾝﾄﾞﾎﾟｲﾝﾄ選択 ・・・・・・・・・・・・・・・・・・・・・・・・ 176
22.6. ｴﾝﾄﾞﾎﾟｲﾝﾄの活性化(有効設定) ・・・・・・・・・・ 177
22.7. ｱﾄﾞﾚｽ設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 177
22.8. 休止、起動復帰と再開 ・・・・・・・・・・・・・・・・・ 178
22.9. 分離(切り離し) ・・・・・・・・・・・・・・・・・・・・・・・・ 178
22.10. 遠隔起動復帰 ・・・・・・・・・・・・・・・・・・・・・・・・ 178
22.11. 不能応答(STALL)要求 ・・・・・・・・・・・・・・・・・ 178
22.12. 制御ｴﾝﾄﾞﾎﾟｲﾝﾄ管理 ・・・・・・・・・・・・・・・・・・・・ 179
22.13. OUTｴﾝﾄﾞﾎﾟｲﾝﾄ管理 ・・・・・・・・・・・・・・・・・・・・ 180
22.14. INｴﾝﾄﾞﾎﾟｲﾝﾄ管理 ・・・・・・・・・・・・・・・・・・・・・・ 181
22.15. 等時(Isochronous)動作 ・・・・・・・・・・・・・・・・・ 182
22.16. ｵｰﾊﾞｰﾌﾛｰ ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 182

22.17. 装置割り込み ・・・・・・・・・・・・・・・・・・・・・・・・・ 183
22.18. USB装置一般用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・ 184
22.19. USB装置ｴﾝﾄﾞﾎﾟｲﾝﾄ用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・ 186

23. ｱﾅﾛｸﾞ比較器 ・・・・・・・・・・・・・・・・・・・・・・・ 192
23.1. ｱﾅﾛｸﾞ比較器入力選択 ・・・・・・・・・・・・・・・・・ 192
23.2. ｱﾅﾛｸﾞ比較器用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・ 192

24. A/D変換器 ・・・・・・・・・・・・・・・・・・・・・・・・・ 194
24.1.
24.2.
24.3.
24.4.
24.5.
24.6.
24.7.
24.8.
24.9.

特徴 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 194
操作 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 195
変換の開始 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 195
前置分周と変換ﾀｲﾐﾝｸﾞ ・・・・・・・・・・・・・・・・・ 196
ﾁｬﾈﾙ変更と基準電圧選択 ・・・・・・・・・・・・・・ 198
温度感知器 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 199
雑音低減機能 ・・・・・・・・・・・・・・・・・・・・・・・・ 200
A/D変換の結果 ・・・・・・・・・・・・・・・・・・・・・・・ 201
A/D変換用ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・ 202

25. JTAGｲﾝﾀｰﾌｪｰｽと内蔵ﾃﾞﾊﾞｯｸﾞ機能 ・・・・・ 206
25.1.
25.2.
25.3.
25.4.
25.5.

特徴 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 206
概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 206
検査入出力ﾎﾟｰﾄ (TAP:Test Access Port) ・・ 207
TAP制御器 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 207
境界走査ﾁｪｰﾝ(Boundary-Scan Chain) ・・・・ 208の使用
25.6. 内蔵ﾃﾞﾊﾞｯｸﾞ機能の使用 ・・・・・・・・・・・・・・・・ 208
25.7. 内蔵ﾃﾞﾊﾞｯｸﾞ特殊JTAG命令 ・・・・・・・・・・・・・ 208
25.8. 内蔵ﾃﾞﾊﾞｯｸﾞ関連I/Oﾒﾓﾘ内のﾚｼﾞｽﾀ ・・・・・・・ 208
25.9. JTAGﾌﾟﾛｸﾞﾗﾐﾝｸﾞ能力の使用 ・・・・・・・・・・・・ 209
25.10. 参考文献 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 209

26. IEEE1149.1(JTAG)境界走査 ・・・・・・・・・・・ 210
26.1.
26.2.
26.3.
26.4.
26.5.
26.6.
26.7.
26.8.

特徴 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 210
概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 210
ﾃﾞｰﾀ ﾚｼﾞｽﾀ ・・・・・・・・・・・・・・・・・・・・・・・・・・ 210
境界走査(Boundary-Scan)用JTAG命令 ・・・ 211
境界走査関連I/Oﾒﾓﾘ内のﾚｼﾞｽﾀ ・・・・・・・・・ 212
境界走査ﾁｪｰﾝ(Boundary-Scan Chain) ・・・・ 213
ATmega16U4/32U4の境界走査順 ・・・・・・・・ 214
境界走査記述言語(BSDL)ﾌｧｲﾙ ・・・・・・・・・・ 214

27. ﾌﾞｰﾄ ﾛｰﾀﾞ支援 - RWW 自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ・・・ 215
27.1.
27.2.
27.3.
27.4.
27.5.
27.6.
27.7.

特徴 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 215
ﾌﾗｯｼｭ ﾒﾓﾘの応用領域とﾌﾞｰﾄ ﾛｰﾀﾞ領域 ・・・ 215
書き中に読みが可能な領域と不能な領域 ・・ 215
ﾌﾞｰﾄ ﾛｰﾀﾞ施錠ﾋﾞｯﾄ ・・・・・・・・・・・・・・・・・・・・ 217
ﾌﾞｰﾄ ﾛｰﾀﾞ ﾌﾟﾛｸﾞﾗﾑへの移行 ・・・・・・・・・・・・・ 218
自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞでのﾌﾗｯｼｭ ｱﾄﾞﾚｽ指定 ・・・・ 220
ﾌﾗｯｼｭ ﾒﾓﾘの自己ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ・・・・・・・・・・・・ 220

28. ﾒﾓﾘ ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ・・・・・・・・・・・・・・・・・・・・・・ 226
28.1.
28.2.
28.3.
28.4.
28.5.
28.6.
28.7.
28.8.
28.9.

ﾌﾟﾛｸﾞﾗﾑ ﾒﾓﾘとﾃﾞｰﾀ ﾒﾓﾘ用施錠ﾋﾞｯﾄ ・・・・・・・ 226
ﾋｭｰｽﾞ ﾋﾞｯﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 227
識票ﾊﾞｲﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 228
校正ﾊﾞｲﾄ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 228
並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ・・・・・・・・・・・・・・・・・・・・・・・ 229
並列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ手順 ・・・・・・・・・・・・・・・・・・・ 230
直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ・・・・・・・・・・・・・・・・・・・・・・・ 238
直列ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ手順 ・・・・・・・・・・・・・・・・・・・ 238
JTAGｲﾝﾀｰﾌｪｰｽ経由ﾌﾟﾛｸﾞﾗﾐﾝｸﾞ ・・・・・・・・・ 241

29. 電気的特性 ・・・・・・・・・・・・・・・・・・・・・・・・・ 248
29.1.
29.2.
29.3.
29.4.

絶対最大定格 ・・・・・・・・・・・・・・・・・・・・・・・・ 248
DC特性 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 248
外部ｸﾛｯｸ特性 ・・・・・・・・・・・・・・・・・・・・・・・・ 249
ｼｽﾃﾑとﾘｾｯﾄの特性 ・・・・・・・・・・・・・・・・・・・・ 249
ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]280

29.5. 最高速と動作電圧 ・・・・・・・・・・・・・・・・・・・・・ 250
29.6. 2線直列ｲﾝﾀｰﾌｪｰｽ特性 ・・・・・・・・・・・・・・・・ 251
29.7. SPI ﾀｲﾐﾝｸﾞ特性 ・・・・・・・・・・・・・・・・・・・・・・・ 252
29.8. ﾊｰﾄﾞｳｪｱ ﾌﾞｰﾄ受付ﾀｲﾐﾝｸﾞ特性 ・・・・・・・・・・・ 252
29.9. A/D変換器特性 ・・・・・・・・・・・・・・・・・・・・・・・ 253
29.10. 校正付き内蔵RC発振器精度 ・・・・・・・・・・・・ 253

30. 代表特性 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 254
30.1. 活動動作消費電流 ・・・・・・・・・・・・・・・・・・・・ 254
30.2. ｱｲﾄﾞﾙ動作消費電流 ・・・・・・・・・・・・・・・・・・・ 256
30.3. ﾊﾟﾜｰﾀﾞｳﾝ動作消費電流 ・・・・・・・・・・・・・・・・ 257
30.4. ﾊﾟﾜｰｾｰﾌﾞ動作消費電流 ・・・・・・・・・・・・・・・・ 258
30.5. ﾋﾟﾝ ﾌﾟﾙｱｯﾌﾟ ・・・・・・・・・・・・・・・・・・・・・・・・・・ 258
30.6. ﾋﾟﾝ駆動能力 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 259
30.7. ﾋﾟﾝ 閾値とﾋｽﾃﾘｼｽ ・・・・・・・・・・・・・・・・・・・・・ 261
30.8. 低電圧検出器(BOD)閾値 ・・・・・・・・・・・・・・・ 263
30.9. 内部発振器周波数 ・・・・・・・・・・・・・・・・・・・・ 265
30.10. 周辺機能部消費電流 ・・・・・・・・・・・・・・・・・・ 267
30.11. ﾘｾｯﾄ消費電流とﾘｾｯﾄ ﾊﾟﾙｽ幅 ・・・・・・・・・・・ 268

31. ﾚｼﾞｽﾀ要約 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 269
32. 命令要約 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 273
33. 注文情報 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 275
34. 外囲器情報 ・・・・・・・・・・・・・・・・・・・・・・・・・ 275
35. 障害情報 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 276
36. ﾃﾞｰﾀｼｰﾄ改訂履歴 ・・・・・・・・・・・・・・・・・・・・ 277

ATmega16U4/32U4 [ﾃﾞｰﾀｼｰﾄ]

281

®

Atmel Corporation

Enabling Unlimited Possib i l i t i e s
1600 Technology Drive, San Jose, CA 95110 USA®

TEL:(+1)(408) 441-0311

FAX: (+1)(408) 436-4200|

www.atmel.com© 2016 Atmel Corporation. / 改訂:Atmel-7766J-USB-ATmega16U4-32U4-Datasheet_04/2016
Atmel®、Atmelﾛｺﾞとそれらの組み合わせ、AVR®、AVR Studio®、Enabling Unlimited Possibilities®とその他はAtmel Corporationとその子会社の登録商標または商標またはその付属物です。Windows®は米国とその他の国に於けるMicrosoft Corporationの登録商標です。他の用語と製品名は一般的に他の商標です。
お断り: 本資料内の情報はAtmel製品と関連して提供されています。本資料またはAtmel製品の販売と関連して承諾される何れの知的所有権も禁反言あるいはその逆によって明示的または暗示的に承諾されるものではありません。Atmelのｳｪﾌﾞｻｲﾄに位置する販売の条件とAtmelの定義での詳しい説明を除いて、商品性、特定目的に関する適合性、または適法性の暗黙保証に制限せず、Atmelはそれらを含むその製品に関連する暗示
的、明示的または法令による如何なる保証も否認し、何ら責任がないと認識します。たとえAtmelがそのような損害賠償の可能性を進言されたとしても、本資料を使用できない、または使用以外で発生する(情報の損失、事業中断、または利益と損失に関する制限なしの損害賠償を含み)直接、間接、必然、偶然、特別、または付随して起こる如何なる損害賠償に対しても決してAtmelに責任がないでしょう。Atmelは本資料の内容の正確さまたは完全性に関して断言または保証を行わず、予告なしでいつでも製品内容と仕様の変更を行う権利を保留します。Atmelはここに含まれた情報を更新することに対してどんな公約も行いません。特に別の方法で提供されなければ、Atmel製品は車載応用に対して適当ではなく、使用されるべきではありません。Atmel製品は延命または生命維持を意図した応用での部品としての使用に対して意図、認定、または保証されません。
安全重視、軍用、車載応用のお断り: Atmel製品はAtmelが提供する特別に書かれた承諾を除き、そのような製品の機能不全が著しく人に危害を加えたり死に至らしめることがかなり予期されるどんな応用(”安全重視応用”)に対しても設計されず、またそれらとの接続にも使用されません。安全重視応用は限定なしで、生命維持装置とｼｽﾃﾑ、核施設と武器ｼｽﾃﾑの操作用の装置やｼｽﾃﾑを含みます。Atmelによって軍用等級として特に明確に示される以外、Atmel製品は軍用や航空宇宙の応用や環境のために設計も意図もされていません。Atmelによって車載等級として特に明確に示される以外、Atmel製品は車載応用での使用のために設計も意図もされていません。
© HERO 2021.
本ﾃﾞｰﾀｼｰﾄはAtmelのATmega16U4/32U4英語版ﾃﾞｰﾀｼｰﾄ(Rev.7766J-04/2016)の翻訳日本語版です。日本語では不自然となる重複する形容表
現は省略されている場合があります。日本語では難解となる表現は大幅に意訳されている部分もあります。必要に応じて一部加筆されています。頁
割の変更により、原本より頁数が少なくなっています。
汎用入出力ﾎﾟｰﾄの出力ﾃﾞｰﾀ ﾚｼﾞｽﾀとﾋﾟﾝ入力は、対応関係からの理解の容易さから出力ﾚｼﾞｽﾀと入力ﾚｼﾞｽﾀで統一表現されています。一部の用語がより適切と思われる名称に変更されています。必要と思われる部分には( )内に英語表記や略称などを残す形で表記しています。
青字の部分はﾘﾝｸとなっています。一般的に赤字の0,1は論理0,1を表します。その他の赤字は重要な部分を表します。
原書に対して若干構成が異なるため、一部の節/項番号が異なります。更に一部の図表番号も異なります。