2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

modernAVR周辺機能比較一覧

Last updated at Posted at 2022-11-30

AVR各品種は型番からフラッシュメモリ搭載量、系統種別、外囲器ピン数を一意に知ることは出来るがより詳細な情報はデータシートやioヘッダファイルを参照しなければならない。この文書では似たような型番間での差異を要約する。

掲載対象製品系統

  • tinyAVR-0/1/2系統
    • tinyAVR-1 はアナログ周辺機能重視品種。
    • tinyAVR-2 はUSART2組+SRAM強化品種。
  • megaAVR-0系統
    • アナログ周辺回路は別電源区画。(AVDD/VDDが直結していない)
  • AVR_DA/DB/DD系統
    • AVR_DA はアナログ周辺機能重視品種。
    • AVR_DB は OPAMP機能と復電圧対応品種。(32pin以下ではPD0相当端子がVDD2に代替)
    • AVR_DD は復電圧対応品種。(少ピン)
    • AVR_DB/DD は主クロック用に外部高速水晶発振子を使用可能。(DA以前は方形波発振器のみ)

これ以前のAtmel世代製品(非UPDI品種)については論じない。
AVR_EA系統は2022末時点ではデータシート非公開(未発売)だが 64KiB品種の ioヘッダファイルのみ公開済。

  • megaAVR-0 系統は同一型番で端子数違いの品種があり、要所では次のように補足する。
    • ATmega4809 48pin → 4809(q)(quad-line-package)
    • ATmega4809 40pin → 4809(d)(dual-line-package)
    • ATmega4808 32pin → 4808(q)(quad-line-package)
    • ATmega4808 28pin → 4808(d)(dual-line-package)

周辺機能数比較

型番 pin GPIO TCA TCB TCD USART SPI TWI ADC AIN DAC AC AINP/N PTC ZCD OPAMP CCL EVSYS EVOUT
tinyAVR-0
ATtiny202/402 8 6/2 1 1 - 1 1 1 1 6 - 1 1/1 - - - 2 2+1 1
ATtiny204/404/804 14 12/3 1 1 - 1 1 1 1 10 - 1 1/1 - - - 2 2+1 2
ATtiny406/806/1606 20 18/4 1 1 - 1 1 1 1 12 - 1 2/2 - - - 2 2+1 3
ATtiny807/1607 24 22/5 1 1 - 1 1 1 1 12 - 1 2/2 - - - 2 2+1 3
tinyAVR-1
ATtiny212/412 8 6/2 1 1 1 1 1 1 1 6 1 1 1/1 - - - 2 4+2 1
ATtiny214/414 14 12/3 1 1 1 1 1 1 1 10 1 1 1/1 - - - 2 4+2 2
ATtiny416 20 18/4 1 1 1 1 1 1 1 12 1 1 2/2 - - - 2 4+2 3
ATtiny417 24 22/5 1 1 1 1 1 1 1 12 1 1 2/2 - - - 2 4+2 3
ATtiny814 14 12/3 1 1 1 1 1 1 1 10 1 1 1/1 6/9 - - 2 4+2 2
ATtiny816 20 18/4 1 1 1 1 1 1 1 12 1 1 2/2 6/9 - - 2 4+2 3
ATtiny817 24 22/5 1 1 1 1 1 1 1 12 1 1 2/2 6/9 - - 2 4+2 3
ATtiny1614 14 12/3 1 2 1 1 1 1 2 10+4 3 3 7/3 6/9 - - 2 4+2 2
ATtiny1616/3216 20 18/4 1 2 1 1 1 1 2 12+8 3 3 10/4 12/36 - - 2 4+2 3
ATtiny1617/3217 24 22/5 1 2 1 1 1 1 2 12+12 3 3 12/6 14/49 - - 2 4+2 3
tinyAVR-2
ATtiny424/824/1624/3224 14 12/3 1 2 - 2 1 1 1 9 - 1 2/2 - - - 4 6 2
ATtiny426/826/1626/3226 20 18/4 1 2 - 2 1 1 1 15 - 1 3/3 - - - 4 6 3
ATtiny427/827/1627/3227 24 22/5 1 2 - 2 1 1 1 15 - 1 4/4 - - - 4 6 3
型番 pin GPIO TCA TCB TCD USART SPI TWI ADC AIN DAC AC AINP/N PTC ZCD OPAMP CCL EVSYS EVOUT
megaAVR-0
ATmega808/1608/3208/4808(d) 28 23/6 1 3 - 3 1 1 1 8 - 1 4/3 - - - 4 6 3
ATmega808/1608/3208/4808(q) 32 27/7 1 3 - 3 1 1 1 12 - 1 4/3 - - - 4 6 4
ATmega4809(d) 40 33/8 1 4 - 4 1 1 1 16 - 1 4/3 - - - 4 8 5
ATmega809/1609/3209/4809(q) 48 41/10 1 4 - 4 1 1 1 16 - 1 4/3 - - - 4 10 6
AVR_DA
AVR32/64/128DA28 28 23 1 3 1 3 2 1 1 10 1 3 9/9 18/81 1 - 4 8 3
AVR32/64/128DA32 32 27 1 3 1 3 2 2 1 14 1 3 9/9 22/121 1 - 4 8 4
AVR32/64/128DA48 48 41 2 4 1 5 2 2 1 18 1 3 10/10 32/256 2 - 6 10 6
AVR32/64/128DA64 64 55 2 5 1 6 2 2 1 22 1 3 10/10 46/529 3 - 6 10 7
AVR_DB
AVR32/64/128DB28 28 22 1 3 1 3 2 1 1 9 1 3 5/5 - 1 2 4 8 3
AVR32/64/128DB32 32 26 1 3 1 3 2 2 1 13 1 3 5/5 - 1 2 4 8 4
AVR32/64/128DB48 48 40 2 4 1 5 2 2 1 18 1 3 6/8 - 2 3 6 10 6
AVR32/64/128DB64 64 54 2 5 1 6 2 2 1 22 1 3 6/8 - 3 3 6 10 7
AVR_DD
AVR16/32/64DD14 14 11 1 2 1 1 1 1 1 7 1 1 3/1 - 1 - 4 6 3
AVR16/32/64DD20 20 17 1 2 1 1 1 1 1 13 1 1 3/1 - 1 - 4 6 4
AVR16/32/64DD28 28 23 1 3 1 1 1 1 1 19 1 1 3/2 - 1 - 4 6 4
AVR16/32/64DD32 32 27 1 3 1 1 1 1 1 23 1 1 3/2 - 1 - 4 6 4

表にない RTC WDT CRCSCAN 機能は各1。
GPIO は外部入力同期/非同期割込数。(tinyAVR-0/1/2 megaAVR-0)
GPIO は外部入力割込数に一致。
AIN は ADC合計チャネル数。
DAC は機能数に関わらず OUT端子は1。
AINP/N は 正/負入力合計チャネル数。
PTC は自己/相互容量チャネル数。
CCL は機能数。
EVSYS は非同期/同期チャネル数。(tinyAVR-0/1)
EVSYS は総チャネル数。

UPDI

tinyAVR-0/1/2 megaAVR-0 AVR_DA/DB/DD
UPDI v0 UPDI v2

NVMCTRL の仕様が異なる。UPDI機能の USERROW外部書込方法は互換。

HV電圧 機能 端子 系統
12V UPDI/RESET PA0 tinyAVR-0/1
9V-12V UPDI/RESET PA0 tinyAVR-2
9V RESET PF6 AVR_DD
- UPDI PF7 AVR_DD

何れも HV電圧印加は単発パルス。(レベルではない)
tinyAVR-2 の HV許可電圧は 9V〜12V。(12V推奨)
AVR_DD の PF6端子定格は 9V。(12V非推奨)
megaAVR-0 AVR_DA/DB は HV機能なし。(UPDI端子は専用)

UPDI REVID

型番
$10 ATtiny1614 ATtiny1616/3216 ATtiny1617/3217 AVR128DB
$20 ATtiny202/402 ATtiny204/404/804/1604 ATtiny406 806/1606 ATtiny807/1607 ATtiny212/412 ATtiny214/414/814 ATtiny416/816 ATtiny417/817
$30 ATmega808/1608/3208/4808 ATtiny809/1609/3209/4809 AVR_DA AVR32DB AVR64DB AVR_DD
$40 ATtiny424/824/1624/3224 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227

UPDI_STATUSA が返す UPDI実装の改訂番号。(用途不明)

AVR系統識別子

書込器使用時に照会すべき識別子。

宣言名 説明
SIGNATURE_0 $1E 固定(マジックナンバー)
SIGNATURE_1 $98 フラッシュメモリ量256KiB(本書記述対象には存在しない)
$97 フラッシュメモリ量128KiB
$96 フラッシュメモリ量64KiBまたは48KiB
$95 フラッシュメモリ量32KiB
$94 フラッシュメモリ量16KiB
$93 フラッシュメモリ量8KiB
$92 フラッシュメモリ量4KiB
$91 フラッシュメモリ量2KiB
$90 フラッシュメモリ量1KiB(本書記述対象には存在しない)
SIGNATURE_2 - 後述

SIGNATURE_1=$96の場合、
コード中では __AVR_ARCH__
102=64KiB か 103=48KiB かで容量を判定できる。
UPDI層では SIB先頭が 'mega'か'AVR' かで判定できる。
SIGNATURE_2は $51か $52が 48KiBである。

SIGNATURE_1/2-型番対照表

$91 $92 $93 $94 $95 $96 $97
$07 128DA64
$08 128DA48
$09 128DA32
$0A 128DA28
$0B 128DB64
$0C 128DB48
$0D 128DB32
$0E 128DB28
$12 64DA64
$13 64DA48
$14 64DA32
$15 64DA28
$16 64DB64
$17 64DB48
$18 64DB32
$19 64DB28
$1A 64DD32
$1B 64DD28
$1C 64DD20
$1D 64DD14
$1E 64EA48
$1F 64EA32
$20 214 417 817 1617 64EA28
$21 212 416 816 1616 3216
$22 204 414 814 1614 3217
$23 202 412 807 1607
$24 806 1606
$25 406 804 1604
$26 404 808 1608 3227
$27 402 827 1609 3226
$28 826 1627 3224
$29 824 1626
$2A 427 809 1624
$2B 426
$2C 424
$30 3208
$31 16DD32 3209
$32 16DD28 32DA48
$33 16DD20 32DA32
$34 16DD14 32DA28
$35 32DB48
$36 32DB32
$37 32DB28
$38 32DD32
$39 32DD28
$3A 32DD20
$3B 32DD14
$51 4808
$52 4809

3〜4桁数値型番の末尾 08 または 09 は ATmega、その他は ATtiny を表す。
表中の空欄には他系統の品種が入っていて未使用というわけではない。

内蔵フラッシュメモリ

型番-フラッシュメモリ量一覧

系統 pin 2KiB 4KiB 8KiB 16KiB 32KiB
tinyAVR-0
8 ATtiny202 ATtiny402
14 ATtiny204 ATtiny404 ATtiny804 ATtiny1604
20 ATtiny406 ATtiny806 ATtiny1606
24 ATtiny807 ATtiny1607
tinyAVR-1
8 ATtiny212 ATtiny412
14 ATtiny214 ATtiny414 ATtiny814 ATtiny1614
20 ATtiny416 ATtiny816 ATtiny1616 ATtiny3216
24 ATtiny417 ATtiny817 ATtiny1617 ATtiny3217
tinyAVR-2
14 ATtiny424 ATtiny824 ATtiny1624 ATtiny3224
20 ATtiny426 ATtiny826 ATtiny1626 ATtiny3226
24 ATtiny427 ATtiny827 ATtiny1627 ATtiny3227
系統 pin 8KiB 16KiB 32KiB 48KiB
megaAVR-0
28 ATmega808 ATmega1608 ATmega3208 ATmega4808
32 ATmega808 ATmega1608 ATmega3208 ATmega4808
40 ATmega4809(d)
48 ATmega809 ATmega1609 ATmega3209 ATmega4809
系統 pin 8KiB 16KiB 32KiB 64KiB 128KiB
AVR_DA
28 AVR32DA28 AVR64DA28 AVR128DA28
32 AVR32DA32 AVR64DA32 AVR128DA32
48 AVR32DA48 AVR64DA48 AVR128DA48
64 AVR64DA64 AVR128DA64
AVR_DB
28 AVR32DB28 AVR64DB28 AVR128DB28
32 AVR32DB32 AVR64DB32 AVR128DB32
48 AVR32DB48 AVR64DB48 AVR128DB48
64 AVR64DB64 AVR128DB64
AVR_DD
14 AVR16DD14 AVR32DD14 AVR64DD14
20 AVR16DD20 AVR32DD20 AVR64DD20
28 AVR16DD28 AVR32DD28 AVR64DD28
32 AVR16DD32 AVR32DD32 AVR64DD32
AVR_EA
28 AVR8EA28 AVR16EA28 AVR32EA28 AVR64EA28
32 AVR8EA32 AVR16EA32 AVR32EA32 AVR64EA32
48 AVR8EA48 AVR16EA48 AVR32EA48 AVR64EA48

AVR_EA の ioヘッダファイルは 2022末時点では 64KiB品種だけしか公開されていない。

フラッシュメモリ量目

  • KiB -- キロバイト単位のフラッシュメモリ量(型番から一意に求まる)
  • 総量 -- フラッシュメモリ総バイト量
  • 粒度 -- フラッシュメモリページ単位(消去単位)バイト量
  • 総数 -- フラッシュメモリページ総数

消去/書換操作はページ粒度単位でとなる。
この情報はブートローダーのような自己書換機構の実装で重要。NVMCTRLを参照。
粒度はそのまま消去アライメント境界になる。

KiB 総量 粒度 総数 型番
2 2048 64 32 ATtiny202/204 ATtiny212/214
4 4096 64 64 ATtiny402/404/406 ATtiny412/414/416/417 ATtiny424/426/427
8 8192 64 128 ATtiny804/806/807 ATtiny814/816/817 ATtiny824/826/827
16 16384 64 256 ATtiny1604/1606/1607 ATtiny1614/1616/1617 ATtiny1624/1626/1627
32 32768 128 256 ATtiny3216/3217 ATtiny3224/3226/3227
8 8192 64 128 ATmega808/809
16 16384 64 256 ATmega1608/1609
32 32768 128 256 ATmega3208/3209
48 49152 128 384 ATmega4808/4809
8 8192 64 128 AVR8EAnn
16 16384 64 256 AVR16EAnn
16 16384 64 512 AVR32EAnn
64 65536 64 1024 AVR64EAnn
16 16384 512 32 AVR16DDnn
32 32768 512 64 AVR32DAnn AVR32DBnn AVR32DDnn
64 65536 512 128 AVR64DAnn AVR64DBnn AVR64DDnn
128 131072 512 256 AVR128DAnn AVR128DBnn

以下は ioヘッダファイルで関係する宣言。

宣言名 説明 備考
__AVR_ARCH__ AVRアーキテクチャ識別値 フラッシュメモリ量は 103:64KiB未満 102:64KiB 104:128KiB
MAPPED_PROGMEM_START データ空間内フラッシュメモリ領域先頭番地 0x4000または0x8000(AVR Dx以降)
PROGMEM_START フラッシュメモリ開始番地 常にゼロ
FLASHSTART
PROGMEM_SIZE フラッシュメモリ領域総バイト量
PROGMEM_PAGE_SIZE フラッシュメモリ消去単位バイト量
PROGMEM_END フラッシュメモリ終了番地 総バイト量-1
FLASHEND

tinyAVR-0/1/2 と megaAVR-0 と AVR16/32Dx では、フラッシュメモリ全領域はデータアドレス空間内で見える。
AVR64/128Dx では切替選択されている 32KiB領域のみがデータアドレス空間内で見える。

ブート/コード/データ領域分割

FUSE項目に書くブート領域/応用領域分割制御値は前述のフラッシュメモリページ粒度量 ではなく 専用のページ量単位を持つ。この情報は ioヘッダファイルには記載されておらず、データシートを確認しなければ判明しない。

系統 粒度 2KiB 4KiB 8KiB 16KiB 32KiB 48KiB 64KiB 128KiB
tinyAVR-0/1/2 256 B 8 16 32 64 128
megaAVR-0 256 B 32 64 128 192
AVR DA/DB/DD/EA 512 B 16 32 64 128 256

以下は ioヘッダファイルで関係する宣言。
いずれも応用コード内からは読出専用のデータメモリ。
ゼロ値はフラッシュメモリ領域の最後まで使うことを意味する。
(ページ総数値が書かれていると見做す)

宣言名 説明 備考
FUSE_APPEND 応用領域境界ページ番号FUSE番地 256B単位品種
FUSE_BOOTEND ブート領域境界ページ番号FUSE番地 256B単位品種
FUSE_CODESIZE 応用領域境界ページ番号FUSE番地 512B単位品種
FUSE_BOOTSIZE ブート領域境界ページ番号FUSE番地 512B単位品種
__vectors * 割込ベクタ表先頭番地 ブート領域がなければゼロ、非ゼロでブートローダー有
_etext * 応用プログラム直後の先頭番地 ここから __data_load_end 前までは SRAM定数初期化値
__data_load_end * フラッシュメモリ未使用先頭番地 これ-1の次の粒度境界までを書込器は書き換える

* extern 参照が必要。リンクプロセスで確定する。

内蔵SRAM量目

各品種のSRAM搭載量は型番(フラッシュ総量)とは関わりがなく、比例関係もない。

割込などで全レジスタ・演算フラグ・復帰番地をスタックに積む場合 1段で 35byteを消費する。

KiB 総量 先頭番地 型番
1/8 128 0x3F80 ATtiny202/204 ATtiny212/214
1/4 256 0x3F00 ATtiny402/404/406 ATtiny412/414/416/417
1/2 512 0x3E00 ATtiny804/806/807 ATtiny814/816/817 ATtiny424/426/427
1 1024 0x3C00 ATtiny1604/1606/1607 ATtiny824/826/827 ATmega808/809
1 1024 0x7C00 AVR8EAnn
2 2048 0x3800 ATtiny1614/1616/1617/3216/3217 ATtiny1624/1626/1627 ATmega1608/1609
2 2048 0x7800 AVR16DDnn AVR16EAnn
3 3072 0x3400 ATtiny3224/3226/3227
4 4096 0x3000 ATmega3208/3209
4 4096 0x7000 AVR32DAnn AVR32DBnn AVR32DDnn AVR32EAnn
6 6144 0x2800 ATmega4808/4809
6 6144 0x6800 AVR64EAnn
8 8192 0x6000 AVR64DAnn AVR64DBnn AVR64DDnn
16 16384 0x4000 AVR128DAnn AVR128DBnn

フラッシュ容量が同格のチップでもより後発の世代ほど SRAMは増量されている。

以下はioヘッダファイルで関係する宣言。

宣言名 説明 備考
INTERNAL_SRAM_START SRAM領域開始番地
RAMSTART
INTERNAL_SRAM_SIZE SRAM総バイト量
RAMSIZE
INTERNAL_SRAM_END SRAM領域終了番地 RAMSTART+RAMSIZE-1
RAMEND スタックポインタ初期値(0x3FFFか0x7FFF)

RAMSTART位置はチップ施錠時の USERROW特殊書込時に要求されるためこれに対応する外部書込器は個別型番毎の相違を承知していなければならない。

内蔵EEPROM量目

EEPROM領域はバイト単位で書込/消去ができる。
外部書込器からはページ粒度単位で読み書きする。

avrdudeでの1バイト単位転送はFUSE操作にしか行えない制約がある。
AVR Dx系列でのioヘッダ記載粒度は1だがこの定義だと実行エラーになるので普通は他系列に倣って 32や 8を仮設定する。
(既定の avrdude.conf は ioヘッダファイル通りに書かれ、対策されていないので EEPROMをブロック読み書きできない)

  • 総量 -- EEPROM総バイト量
  • 粒度 -- EEPROMページ粒度バイト量
  • 総数 -- EEPROMページ総数
総量 粒度 総数 型番
64 32 2 ATtiny202/204 ATtiny212/214
128 32 4 ATtiny402/404/406/804/806/807 ATtiny412/414/416/417/814/816/817 ATtiny424/426/427/824/826/827
256 32 8 ATtiny1604/1606/1607 ATtiny1614/1616/1617 ATtiny1624/1626/1627 ATmega808/809/1608/1609
256 64 4 ATtiny3216/3217 ATtiny3224/3226/3227 ATmega1608/1609/3208/3209/4808/4809
256 1(32) 256(8) AVR_DDnn
512 1(32) 512(16) AVR_DAnn AVR_DBnn
512 8 64 AVR_EAnn

以下は ioヘッダファイルで関係する宣言。

宣言名 説明 備考
EEPROM_START EEPROM開始番地 本書対照の全型番で 0x1400
MAPPED_PROGMEM_START
EEPROM_SIZE EEPROM総量
EEPROM_PAGE_SIZE EEPROMページ粒度
E2PAGESIZE
EEPROM_END EEPROM終了番地 EEPROM_START + EEPROM_SIZE - 1
E2END

USERROW量目

USERROWあるいはUSER_SIGNATURESと呼ばれる領域は、追加のEEPROM領域として使用できる。この領域はチップ消去に影響されない。応用コード内からはバイト単位で読み書き可能。外部書込器からは通常、ページ粒度単位で読み書きする。チップが施錠されている場合でも、この領域のみは特別な手順で一方的に書き込みできる。

想定される用途は一般に製品シリアル番号や工場書込初期値の保存である。
よってコード内では普通、アドレス直接指定のデータ空間として読出しのみ行い、書換には外部書込器を使用する。

  • 総量 -- USERROW総バイト量
  • 粒度 -- USERROWページ粒度バイト量
  • 総数 -- USERROWページ総数
総量 粒度 総数 型番
32 32 1 以下を除く
64 64 1 ATmega3208/3209/4808/4809 AVR8/16/32/64EAnn

以下はioヘッダファイルで関係する宣言。

宣言名 説明 備考
USER_SIGNATURES_START USERROW開始番地 0x1300または0x1080(AVR Dx以降)
USER_SIGNATURES_SIZE USERROW総量
USER_SIGNATURES_PAGE_SIZE USERROWページ粒度

CLKCTRL

CLKCTRL(クロック制御器)の仕様は3種類の世代に分かれる。

tinyAVR-0/1/2 megaAVR-0 AVR_DA/DB/DD AVR_EA
最大20/16MHz選択 最大24MHz 最大20MHz(詳細不明)

AVR_EA系統の詳細は 2022年末時点ではデータシート未公開のため、他の2形式について論じる。

20MHz/16MHz世代

まず主クロック発振器OSCHFの発振周波数を FUSE設定で 20MHzと16MHzから選択しなければならない。これは応用コード内で動的に変更できないためF_CPU コンパイル定数と乖離する状況が発生しうる。それに応用コードで動的に変更できる主クロック分周比を掛けることにより、F_CPUは次のように選択できる。普通には 1MHzの整数倍になるどれかを選択する。(1マイクロ秒を CPUクロックの整数倍にするため)

分周比 20MHz 16MHz
1 20000000L 16000000L
2 10000000L 8000000L
4 5000000L 4000000L
6 3333333L 2666666L
8 2500000L 2000000L
10 2000000L 1600000L
12 1666666L 1333333L
16 1250000L 1000000L
24 833333L 666666L
32 625000L 500000L
48 416666L 333333L
64 312500L 250000L

リセット後の既定分周比は6であるから、3.33MHzか2.66MHz動作で CPUは起動する。

スタートアップコードにてF_CPUから設定すべき分周比を求める場合、2MHz選択は両系統にあるため実行時に FUSE値を調べなければこれを確定できない。同様にブートローダー実装でも、FUSEを調べてUART分周比を定める必要がある。

なお、主クロック発振器には超低電力発振器 OSCULPを選ぶことも出来る。この場合は分周比1として 32.768kHzとするのが普通だが、分周比64を選べば 512Hz駆動とすることも出来る。(実用性についてはともかく)

主クロック供給にEXTCLKを選択した場合でも動的に主クロック元選択と分周比設定は必要だ。それを行うまでは既定のOSCHFで動作する。従って旧世代のようにFUSE設定を間違えて主クロック停止状態になることはない。ただしこの 20MHz/16MHz世代 では外部クロック供給元にアナログ水晶発振 を使うことは出来ない。方形波出力の デジタル発振器を用意する必要がある。

EXTCLK入力端子は多くの型番で USART0既定端子と排他選択になる。
外部クロック供給上限は不明。(データシートに明言なし。おそらく20MHz)

24Mhz世代

前世代と異なり、主クロック周波数選択には FUSEを使わず、動的に変更できる。これに分周比を動的に変更して掛けられるので、F_CPUは以下の表から自由に選択できる。しかしながら普通は1MHzの整数倍になるどれかを選択するだろう。

  • 非公式に、主クロック供給には32MHzと28Mhzも選択できるが定格外であって動作保証はない。
分周比 24MHz 20MHz 16MHz 12MHz 8MHz 4MHz 2MHz 1MHz 32MHz 28Mhz
1 24000000L 20000000L 16000000L 12000000L 8000000L 4000000L 2000000L 1000000L 32000000L 28000000L
2 - 10000000L - 6000000L - - - 500000L - 14000000L
4 - 5000000L - 3000000L - - - 250000L - 7000000L
6 (4000000L) 3333333L 2666666L - 1333333L 666666L 333333L 166666L 5333333L 4666666L
8 - - - 1500000L - - 125000L - 3500000L
10 2400000L - 1600000L 1200000L 800000L 400000L 200000L 100000L 3200000L 2800000L
12 - 1666666L - - - - - 83333L - 2333333L
16 - - - 750000L - - - 62500L - 1750000L
24 - 833333L - - - - - 41666L - 1166666L
32 - - - 375000L - - - 31250L - 875000L
48 - 416666L - - - - - 20833L - 583333L
64 - - - 187500L - - - 15625L - 437500L

分周して他と重複する設定は除いた。
目的の動作周波数が同じなら分周しないほうが電力効率と EMI静粛性に勝る。
リセット後既定分周比は6であるから、4MHz動作で CPUは起動する。

なお、主クロック発振器には超低電力発振器 OSCULPを選ぶことも出来る。この場合は分周比1として 32.768kHzとするのが普通だが、分周比64を選べば 512Hz駆動とすることも出来る。(実用性についてはともかく)

主クロック供給にEXTCLKを選択した場合でも動的に主クロック元選択と分周比設定は必要だ。それを行うまでは既定のOSCHFで動作する。従って旧世代のようにFUSE設定を間違えて主クロック停止状態になることはない。この世代ではアナログ水晶発振子も、方形波出力のデジタル発振器も利用できる。

EXTCLKあるいはXTAL入力端子は多くの型番で USART0既定端子と排他選択になる。
外部クロック供給は 32MHz まで支援。

EVSYS

EVSYS(事象システム)は旧世代AVRにはなかった周辺機能のひとつだ。これは割込やCPUコード実行なしに、ある周辺機能が生成した事象イベントを事象チャネル通信網を通じて他の周辺機能に向けて転送・分配する。

EVSYSは tinyAVR-0系統で最初に採用されたが、再三仕様が改定されたため以下の4世代が存在する。

版番号は本書で便宜的に付したもので、データシート原書に記述されたものではない。
AVR EA系統は詳細不明のため現時点では論じない。

tinyAVR-0 tinyAVR-1 megaAVR-0 tinyAVR-2 AVR_DA/DB/DD
v1 v1.1 v2 v2.1
  • v1.1以降は非同期事象元にPIT分周クロックを選べる。
  • v2では非同期/同期チャネル選択を使用部で区別しない。コード記述にも前後の互換性はない。
  • v2.1でTCBn計数器に事象計数が追加された。
  • v2とv2.1ではシンボル定義が異なるが糖衣構文(別名)を用意すれば前方互換にできる。

使用可能な事象チャネル数は型番により差異がある。

事象チャネル数 世代 型番
非同期2+同期1 v1 ATtiny202/204/402/404/406/804/806/807/1604/1606/1607
非同期4+同期2 v1.1 ATtiny212/214/412/414/416/417/814/816/817/1614/1616/1617/3216/3217
6 v2 ATmega808/1608/3208/4808
8 v2 ATmega809/1609/3209/4809
6 v2.1 ATtiny824/826/827/1624/1626/1627/3224/3226/3227 AVR_DDnn
8 v2.1 AVR_DA28/32 AVR_DB28/32
10 v2.1 AVR_DA48/64 AVR_DB48/64

tinyAVR-2が、tinyAVR-0/1とは EVSYS非互換であることに注意。

EVSYS v1x

この世代では事象チャネルに非同期型と同期型で明確な区別があり、分けて扱う必要がある。事象使用部にも非同期型と同期型があり、同期使用部は非同期事象を受け取ることが出来ない。非同期使用部はどちらの種別も受け取ることが出来る。

同期と非同期の区別は、事象処理にCPUクロックを必要とするか否かだ。非同期型はCPUクロックと無関係に事象信号が伝播し、CPU休止状態でも生成される。同期型はCPUクロックとタイミングを併せて(待機して)事象信号が伝播する。従ってこれに満たない時間粒度の事象は無視されるかもしれない。

v1.1ではチャネル数が倍増し、PIT分周クロックに追加対応した。これは DutyCycle 50%の非同期レベル事象である。

非同期チャネル生成部選択

ASYNCCH0 ASYNCCH1 ASYNCCH2 ASYNCCH3
$00 OFF
$01 CCL_LUT0
$02 CCL_LUT1
$03 AC0_OUT
$04 TCD0_CMPBCLR
$05 TCD0_CMPASET
$06 TCD0_CMPBSET
$07 TCD0_PROGEV
$08 RTC_OVF
$09 RTC_CMP
$0A PORTA_PIN0 PORTB_PIN0 PORTC_PIN0 PIT_DIV8192
$0B PORTA_PIN1 PORTB_PIN1 PORTC_PIN1 PIT_DIV4096
$0C PORTA_PIN2 PORTB_PIN2 PORTC_PIN2 PIT_DIV2048
$0D PORTA_PIN3 PORTB_PIN3 PORTC_PIN3 PIT_DIV1024
$0E PORTA_PIN4 PORTB_PIN4 PORTC_PIN4 PIT_DIV512
$0F PORTA_PIN5 PORTB_PIN5 PORTC_PIN5 PIT_DIV256
$10 PORTA_PIN6 PORTB_PIN6 AC1_OUT PIT_DIV128
$11 PORTA_PIN7 PORTB_PIN7 AC2_OUT PIT_DIV64
$12 UPDI AC1_OUT AC1_OUT
$13 AC1_OUT AC2_OUT AC2_OUT
$14 AC2_OUT

品種により実装されていない生成部は選択不可。
太字はv1(2ch+1ch品種)でも使用可能な事象。

同期チャネル生成部選択

SYNCCH0 SYNCCH1 SYNCCH0 SYNCCH1
$00 OFF $0B PORTC_PIN4 PORTB_PIN3
$01 TCB0 $0C PORTC_PIN5 PORTB_PIN4
$02 TCA0_OVF_LUNF $0D PORTA_PIN0 PORTB_PIN5
$03 TCA0_HUNF $0E PORTA_PIN1 PORTB_PIN6
$04 TCA0_CMP0 $1F PORTA_PIN2 PORTB_PIN7
$05 TCA0_CMP1 $10 PORTA_PIN3 TCB1
$06 TCA0_CMP2 $11 PORTA_PIN4
$07 PORTC_PIN0 $12 PORTA_PIN5
$08 PORTC_PIN1 PORTB_PIN0 $13 PORTA_PIN6
$09 PORTC_PIN2 PORTB_PIN1 $14 PORTA_PIN7
$0A PORTC_PIN3 PORTB_PIN2 $15 TCB1

品種により実装されていない生成部は選択不可。
SYNCCH0で扱える事象は v1(太字)と v1.1 で共通。

TCBnのシンボルはCAPTイベントを示す。これは割込生成に同じだが、INTFLAGSビットを消去しなくとも関係なく生成条件を満たせばパルス生成される点で割込と異なる。これはTCAn事象等の他の事象イベントについても同じ。

非同期チャネル使用部

レジスタ名 使用部 レジスタ名 使用部
ASYNCUSER0 TCB0 ASYNCUSER6 TCD0EV0
ASYNCUSER1 ADC0 ASYNCUSER7 TCD0EV1
ASYNCUSER2 CCL_LUT0EV0 ASYNCUSER8 EVOUT0
ASYNCUSER3 CCL_LUT1EV0 ASYNCUSER9 EVOUT1
ASYNCUSER4 CCL_LUT0EV1 ASYNCUSER10 EVOUT2
ASYNCUSER5 CCL_LUT1EV1 ASYNCUSER11 TCB1
ASYNCUSER12 ADC1
$00 $01 $02 $03 $04 $05 $06
説明 OFF SYNCCH0 SYNCCH1 ASYNCCH0 ASYNCCH1 ASYNCCH2 ASYNCCH3

太字はv1(2ch+1ch品種)でも使用可能。

同期チャネル使用部

レジスタ名 使用部
SYNCUSER0 TCA0
SYNCUSER1 USART0
$00 $01 $02
説明 OFF SYNCCH0 SYNCCH1

太字はv1(2ch+1ch品種)でも使用可能。
TCA0は 計数事象で、形態は設定依存。
USART0は IrDA事象入力用。

TCA0事象入力が同期チャネル選択部に限定されていることに注意。つまり非同期事象は直接計数対象に選べない。この制限はv2で改正されたが、v1でこれを緩和するには(TCA駆動サイクルのあいだ事象信号が継続するなら)一旦非同期チャネル使用部のEVOUTnに転送し、それと対応する同期チャネル選択部の PORTx_PIN2入力で受け取れば良い。当然ながら複数のチャネル使用部と EVOUTnをひとつ消費する。

EVSYS v2x

v2とv2.1には追加された事象以外に機能的な差はないが、megaAVR-0 とそれ以外とでレジスタ名称が異なる。以下では後発世代の記述を範として次のように読み替える。

  • 名称が違う=IOレジスタ番地が違うためもあるが、実現される機能は同一である。

事象システムレジスタ名相違対照表(EVSYS_~)

v2(megaAVR-0のみ) v2.1
STROBE SWEVENTA
- SWEVENTB
USERADCn USERADCnSTART
USEREVOUTx USEREVSYSEVOUTx
USERUSARTn USERUSARTnIRDA
USERTCAn USERTCAnCNTA
- USERTCAnCNTB
USERTCBx USERTCBnCAPT
- USERTCBnCOUNT

SWEVENTBは10チャネル品種のみにある。
megaAVR-0 は TCBで事象計数が出来ない。

型種別

記号 説明
A 非同期型
S 同期型

事象チャネル生成部選択(EVSYS_CHANNELn_~)

事象イベントに同期・非同期の区別はあるが、生成部-使用部の接続に制約はない。異種接続はあいだに同期化回路が暗黙の内に挿入され、故に使用部への事象到着は2~3CPUクロック遅延する。非同期-非同期接続は CPU休止状態と無関係に(CPUクロックを待たずに)事象が到着する。

CHANNEL0 1 2 3 4 5 6 7 8 9
$00 OFF
$01 S UPDI_SYNC
$05 A MVIO
$06 A RTC_OVF
$07 A RTC_CMP
$08 A RTC_PIT_DIV8192 512 8192 512 8192 512 8192 512 8192 512
$09 A RTC_PIT_DIV4096 256 4096 256 4096 256 4096 256 4096 256
$0A A RTC_PIT_DIV2048 128 2048 128 2048 128 2048 128 2048 128
$0B A RTC_PIT_DIV1024 64 1024 64 1024 64 1024 64 1024 64
$10 A CCL_LUT0
$11 A CCL_LUT1
$12 A CCL_LUT2
$13 A CCL_LUT3
$14 A CCL_LUT4
$15 A CCL_LUT5
$20 A AC0_OUT
$21 A AC1_OUT
$22 A AC2_OUT
$24 S ADC0_RESRDY
$30 A ZCD0_OUT
$31 A ZCD1_OUT
$32 A ZCD2_OUT
$34 S OPAMP0_READY
$35 S OPAMP1_READY
$36 S OPAMP2_READY
$40 A PORTA_PIN0 PORTC_PIN0 PORTE_PIN0 PORTG_PIN0
$41 A PORTA_PIN1 PORTC_PIN1 PORTE_PIN1 PORTG_PIN1
$42 A PORTA_PIN2 PORTC_PIN2 PORTE_PIN2 PORTG_PIN2
$43 A PORTA_PIN3 PORTC_PIN3 PORTE_PIN3 PORTG_PIN3
$44 A PORTA_PIN4 PORTC_PIN4 PORTE_PIN4 PORTG_PIN4
$45 A PORTA_PIN5 PORTC_PIN5 PORTE_PIN5 PORTG_PIN5
$46 A PORTA_PIN6 PORTC_PIN6 PORTE_PIN6 PORTG_PIN6
$47 A PORTA_PIN7 PORTC_PIN7 PORTE_PIN7 PORTG_PIN7
$48 A PORTB_PIN0 PORTD_PIN0 PORTF_PIN0
$49 A PORTB_PIN1 PORTD_PIN1 PORTF_PIN1
$4A A PORTB_PIN2 PORTD_PIN2 PORTF_PIN2
$4B A PORTB_PIN3 PORTD_PIN3 PORTF_PIN3
$4C A PORTB_PIN4 PORTD_PIN4 PORTF_PIN4
$4D A PORTB_PIN5 PORTD_PIN5 PORTF_PIN5
$4E A PORTB_PIN6 PORTD_PIN6 PORTF_PIN6
$4F A PORTB_PIN7 PORTD_PIN7 PORTF_PIN7
CHANNEL0 1 2 3 4 5 6 7 8 9
$60 S USART0_XCK
$61 S USART1_XCK
$62 S USART2_XCK
$63 S USART3_XCK
$64 S USART4_XCK
$65 S USART5_XCK
$68 S SPI0_SCK
$69 S SPI1_SCK
$80 S TCA0_OVF_LUNF
$81 S TCA0_HUNF
$84 S TCA0_CMP0_LCMP0
$85 S TCA0_CMP1_LCMP1
$86 S TCA0_CMP2_LCMP2
$88 S TCA1_OVF_LUNF
$89 S TCA1_HUNF
$8C S TCA1_CMP0_LCMP0
$8D S TCA1_CMP1_LCMP1
$8E S TCA1_CMP2_LCMP2
$A0 S TCB0_CAPT
$A1 S TCB0_OVF
$A2 S TCB1_CAPT
$A3 S TCB1_OVF
$A4 S TCB2_CAPT
$A5 S TCB2_OVF
$A6 S TCB3_CAPT
$A7 S TCB3_OVF
$A8 S TCB4_CAPT
$A9 S TCB5_OVF
$B0 A TCD0_CMPBCLR
$B1 A TCD0_CMPASET
$B2 A TCD0_CMPBSET
$B3 A TCD0_PROGEV

品種により実装されていない生成部は選択不可。
RTC_PIT_DIVnn、USARTn_XCK、SPIn_SCK は DutyCycle 50%のクロックレベル信号。

事象チャネル使用部(EVSYS_USER~)

レジスタ名 レジスタ名 レジスタ名
CCLLUT0A A EVSYSEVOUTF A TCB3CAPT AS
CCLLUT0B A EVSYSEVOUTG A TCB3COUNT S
CCLLUT1A A USART0IRDA S TCB4CAPT AS
CCLLUT1B A USART1IRDA S TCB4COUNT S
CCLLUT2A A USART2IRDA S TCD0INPUTA A
CCLLUT2B A USART3IRDA S TCD0INPUTB A
CCLLUT3A A USART4IRDA S OPAMP0ENABLE A
CCLLUT3B A USART5IRDA S OPAMP0DISABLE S
CCLLUT4A A TCA0CNTA AS OPAMP0DUMP A
CCLLUT4B A TCA0CNTB S OPAMP0DRIVE A
CCLLUT5A A TCA1CNTA AS OPAMP1ENABLE A
CCLLUT5B A TCA1CNTB S OPAMP1DISABLE S
ADC0START A TCB0CAPT AS OPAMP1DUMP A
EVSYSEVOUTA A TCB0COUNT S OPAMP1DRIVE A
EVSYSEVOUTB A TCB1CAPT AS OPAMP2ENABLE A
EVSYSEVOUTC A TCB1COUNT S OPAMP2DISABLE S
EVSYSEVOUTD A TCB2CAPT AS OPAMP2DUMP A
EVSYSEVOUTE A TCB2COUNT S OPAMP2DRIVE A
$00 $01-$0A
説明 EVSYS_USER_OFF_gc EVSYS_USER_CHANNEL[0-9]_gc

品種により実装されていない使用部は選択不可。

TCAnCNTA と TCBnCAPT は同期・非同期事象のいずれでも緩衝なしに(1CPUサイクル内で)事象検出する。ただし計数の確実さは計時器駆動サイクルに依存。

CCL/LUT

CCL(構成設定可能な注文論理回路:Configurable Custom Logic)は旧世代AVRにはなかった周辺機能のひとつだ。CPU動作と無関係に周辺機能同士あるいは外部端子との信号伝達を取り持つ。この項は CCLの LUT(LookUp Table)への入力供給元選択について一覧する。

  • tinyAVR-0/1 と それ以後の USART と SPI の対応には相違がある。
系統 INSEL0 INSEL1 INSEL2 説明
共通
MASK 入力遮蔽(0固定:既定値)
FEEDBACK 自身のLUT[n]OUT(帰還)
LINK LUT[n+1]OUT(連結)
EVENTA 事象入力A(EVSYS)
EVENTB 事象入力B(EVSYS)
IO_IN0 IO_IN1 IO_IN2 外部端子から(PORTMUX)
tinyAVR-0
AC0_OUT AC0_OUT AC0_OUT AC0出力から
USART0_XCK USART0_TXD - USART0出力から
SPI0_SCK SPI0_MOSI SPI0_MISO SPI0出力から
TCA0_WO0 TCA0_WO1 TCA0_WO2 TCA0のWOnから
TCB0_WO TCB0_WO TCB0_WO TCB0のWOから
TCB1_WO TCB1_WO TCB1_WO TCB1のWOから
tinyAVR-1
AC0_OUT AC0_OUT AC0_OUT AC0出力から
AC1_OUT AC1_OUT AC1_OUT AC1出力から
AC2_OUT AC2_OUT AC2_OUT AC2出力から
USART0_XCK USART0_TXD - USART0出力から
SPI0_SCK SPI0_MOSI SPI0_MISO SPI0出力から
TCA0_WO0 TCA0_WO1 TCA0_WO2 TCA0のWOnから
TCB0_WO TCB0_WO TCB0_WO TCB0のWOから
TCB1_WO TCB1_WO TCB1_WO TCB1のWOから
TCD0_WOA TCD0_WOB TCD0_WOA TCD0のWOxから
tinyAVR-2
AC0_OUT AC0_OUT AC0_OUT AC0出力から
USART0_TXD USART1_TXD - USART[01]出力から
SPI0_MOSI SPI0_MOSI SPI0_SCK SPI0出力から
TCA0_WO0 TCA0_WO1 TCA0_WO2 TCA0のWOnから
TCB0_WO TCB1_WO - TCB[01]のWOから
megaAVR-0
AC0_OUT AC0_OUT AC0_OUT AC0出力から
USART0_TXD USART1_TXD USART2_TXD USART[012]出力から
SPI0_MOSI SPI0_MOSI SPI0_SCK SPI0出力から
TCA0_WO0 TCA0_WO1 TCA0_WO2 TCA0のWOnから
TCB0_WO TCB1_WO TCB2_WO TCB[012]のWOから
AVR_DA/DB
AC0_OUT AC1_OUT AC2_OUT AC[012]出力から
ZCD0_OUT ZCD1_OUT ZCD2_OUT ZCD[012]出力から
USART0_TXD USART1_TXD USART2_TXD USART[012]出力から
SPI0_MOSI SPI0_MOSI SPI0_SCK SPI0出力から
TCA0_WO0 TCA0_WO1 TCA0_WO2 TCA0のWOnから
TCA1_WO0 TCA1_WO1 TCA1_WO2 TCA1のWOnから
TCB0_WO TCB1_WO TCB2_WO TCB[012]のWOから
TCD0_WOA TCD0_WOB TCD0_WOC TCD0のWOxから
AVR_DD
AC0_OUT AC0_OUT AC0_OUT AC0出力から
ZCD3_OUT ZCD3_OUT ZCD3_OUT ZCD3出力から
USART0_TXD USART1_TXD USART1_TXD USART[01]出力から
SPI0_MOSI SPI0_MOSI SPI0_SCK SPI0出力から
TCA0_WO0 TCA0_WO1 TCA0_WO2 TCA0のWOnから
TCA1_WO0 TCA1_WO1 TCA1_WO2 TCA1のWOnから
TCB0_WO TCB1_WO TCB2_WO TCB[012]のWOから
TCD0_WOA TCD0_WOB TCD0_WOC TCD0のWOxから

USARTn_xxx は 非同期USART または 同期USART主装置 動作時に有効。
SPIn_xxx は 主装置動作時に有効。
tinyAVR-0/1の SPIn_MISO 入力は結果的に外部からの信号入力に等価。(後続世代で廃止)
USART3以降 と TCAn_WO[345] と TCDn_WOD からの入力はない。

EVSYSに配送されていない信号も入力に含まれている点に注意。例えば AVR_DD14/20品種で USART1_TXD端子の代替選択先が不足するのをCCL/LUT で補うことが出来る。

複数の TC[ABD]_WOn 信号を CCL/LUT で XOR すると 1bit PFM信号を得ることができる。

PORTMUX

PORTMUX(ポート多重器)は旧世代AVRにはなかった周辺機能のひとつだ。これはマルチプレクサ/セレクタの集合で、周辺機能と外部端子との内部配線を受け持つ。代替配線先は事前に決められており、クロスバー機構のような自由度はない。周辺機能によって端子個別切替と PORT群単位切替とがある。

PORTMUX 対応世代

PORTMUX機能は EVSYS事象システムと密な関係にあり、以下の2世代3種に分けることが出来る。

tinyAVR-0/1 megaAVR-0 tinyAVR-2 AVR_DA/DB AVR_DD
v1 v2 v2'

v1/v2間は IOレジスタ名が異なり、EVOUTnの制御仕様も異なる。
AVR_DDは AVR_DBがベースだが独自の拡張がある。

PORTMUX 制御レジスタ対照表

v1 v2
CTRLA EVSYSROUTEA と CCLROUTEA
CTRLB USARTROUTEA と SPIROUTEA と TWIROUTEA
CTRLC TCAROUTEA
CTRLD TCBROUTEA

CTRLC は TCA0_WOn信号端子出力個別の有効・無効制御ビット。
tinyAVR-0/1/2以外の TCAROUTEA は TCA0_WOn 全体の対応 PORT群切替で、機能が違う。(制御互換性なし)

EVOUT 対応端子割付

各種の内部割込みや事象信号を外部端子に直接出力できる EVSYSの機能。

tinyAVR-0/1 EVOUT (v1)

  • 信号名は EVOUT0 EVOUT1 EVOUT2 となる。(数字)
    • 各々は次世代での EVOUTA EVOUTB EVOUTC と対応。(PORT[A-C])
  • CTRLA の対応ビット1でポート出力有効、0で無効。
    • 有効で該当PORT出力設定を覆す。(push-pull)
    • 代替ピン機能はない。
    • 無効でも EVSYSへの事象配送は有効。
機能 出力 8p 14p 20p 24p
EVOUT0 PA2
EVOUT1 PB2 ×
EVOUT2 PC2 × ×

tinyAVR-0/1 の EVOUT数は最大3。

megaAVR-0 tinyAVR-2 AVR_DA/DB EVOUT (v2)

  • EVSYSROUTEAの該当ビット0で PIN2を既定選択、1で PIN7を代替選択。
    • EVSYSチャネル選択で EVOUTnに事象配送すると有効化され、
      PORT出力設定を覆す。(push-pull)
機能 代替 出力 14p 20p 24p 28p 32p 40p 48p 64p
EVOUTA DEFAULT PA2
ALT1 PA7
EVOUTB DEFAULT PB2 × × ×
ALT1 PB7 × × × × × ×
EVOUTC DEFAULT PC2 ×
ALT1 PC7 × × × × × ×
EVOUTD DEFAULT PD2 × × ×
ALT1 PD7 × × ×
EVOUTE DEFAULT PE2 × × × × ×
ALT1 PE7 × × × × × × ×
EVOUTF DEFAULT PF2 × × ×
ALT1 -* × × × × × × × ×
EVOUTG DEFAULT PG2 × × × × × × ×
ALT1 PG7 × × × × × × ×

* PF7は存在しないので無効。

AVR_DD EVOUT (v2')

機能 代替 出力 14p 20p 24p 28p 32p
EVOUTA DEFAULT PA2 ×
ALT1 PA7 ×
EVOUTC DEFAULT PC2
ALT1 PC7 × × × × ×
EVOUTD DEFAULT PD2 × × ×
ALT1 PD7
EVOUTF DEFAULT PF2 × × ×
ALT1 PF7

AVR_DD全外囲器に共通する端子はPC2/PD7/PF7で、他と異なる。
PF7は UPDI機能と排他。

CCL/LUT 対応端子割付

機能 IN0 IN1 IN2 OUT ALT 8p 14p 20p 24p 型番
CCL0 PA0 PA1 PA2 PA4 PB4 × × ATtiny406/806/1606 ATtiny1607 ATtiny816/1616/3216 ATtiny417/817/1617/3217 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
CCL0 PA0 PA1 PA2 PA4 - × × ATtiny202/402 ATtiny204/404/804/1604 ATtiny212/412 ATtiny214/414/814/1614 ATtiny424/824/1624/3224
CCL1 PC3 - - PA7 PC1 × × ATtiny406/806/1606 ATtiny1607 ATtiny816/1616/3216 ATtiny417/817/1617/3217 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
CCL1 - - - PA7 - × × ATtiny204/404/804/1604 ATtiny214/414/814/1614 ATtiny424/824/1624/3224
CCL2 PB0 PB1 PB2 PB3 PC6 × × × ATtiny427/827/1627/3227
CCL2 PB0 PB1 PB2 PB3 - × × ATtiny424/824/1624/3224 ATtiny426/826/1626/3226
CCL3 PC0 PC1 PC2 PC4 PA5 × × × ATtiny427/827/1627/3227
CCL3 PC0 PC1 PC2 - PA5 × × × ATtiny426/826/1626/3226
CCL3 - - - - PA5 × × × ATtiny424/824/1624/3224

代替設定可能なのは OUT端子のみで、INn端子は不変。
OUT先は EVSYS経由で EVOUTx に出すこともできる。
tinyAVR-0/1 の CCL/LUT数は2組。
tinyAVR-2 の CCL/LUT数は4組。

機能 IN0 IN1 IN2 OUT ALT 14p 20p 28p 32p 40p 48p 64p 型番
CCL0 PA0 PA1 PA2 PA3 PA6 × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64 AVR_DB28/32/48/64 AVR_DD20/28/32
CCL0 PA0 PA1 - - - × × × × × × AVR_DD14
CCL1 PC0 PC1 PC2 PC3 PC6 × × × × ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64
CCL1 PC0 PC1 PC2 PC3 - × × × ATmega808/1608/3208/4808 AVR_DA28/32 AVR_DB28/32 AVR_DD14/20/28/32
CCL2 PD0 PD1 PD2 PD3 PD6 × × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64
CCL2 - PD1 PD2 PD3 PD6 × × × AVR_DB28/32/48/64 AVR_DD28/32
CCL2 - - - - PD6 × × × × × AVR_DD20/14
CCL3 PF0 PF1 PF2 PF3 PF6 × × × ATmega809/1609/3209/4809 ATmega808/1608/3208/4808 AVR_DA/DB64 AVR_DA/DB48 AVR_DA/DB32
CCL3 PF0 PF1 - - PF6 × × × × ATmega808/1608/3208/4808 AVR_DA/DB28
CCL4 PB0 PB1 PB2 PB3 PB6 × × × × × AVR_DA/DB64 AVR_DA/DB48
CCL5 PG0 PG1 PG2 PG3 PG6 × × × × × AVR_DA/DB64 AVR_DA/DB48

代替設定で切り替えられるのは OUT端子のみで、INn端子は不変。
OUT先は EVSYS経由で EVOUTx に出すこともできる。
megaAVR-0 の CCL/LUT数は 4組。
AVR_DA/DB48/64 の CCL/LUT数は 6組。
AVR_DA/DB32/28 の CCL/LUT数は 4組。
megaAVR-0 と AVR_DA/DB の PF6 は RESET機能と排他。

USART 対応端子割付

機能 代替 TxD RxD XCK XDIR 8p 14p 20p 24p 型番
USART0 DEFAULT PB2 PB3 PB1 PB0 × ATtiny204/404/804/1604 ATtiny406/806/1606 ATtiny1607 ATtiny214/414/814/1614 ATtiny416/1616/3216 ATtiny417/817/1617/3217 ATtiny424/824/1624/3224 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
USART0 DEFAULT PA6 PA7 PA3 PA0 × × × ATtiny202/402 ATtiny212/412
USART0 ALT1 PA1 PA2 PA3 PA4 × ATtiny204/404/804/1604 ATtiny406/806/1606 ATtiny1607 ATtiny214/414/814/1614 ATtiny416/1616/3216 ATtiny417/817/1617/3217 ATtiny424/824/1624/3224 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
USART0 ALT1 PA1 PA2 - - × × × ATtiny202/402 ATtiny212/412
USART1 DEFAULT PA1 PA2 PA3 PA4 × ATtiny424/824/1624/3224 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
USART1 ALT1 PC2 PC1 PC0 PC1 × ATtiny424/824/1624/3224 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227

tinyAVR-0/1/2 の PA0 は RESET/UPDI機能と排他。
tinyAVR-0/1 の UARTは1組。
tinyAVR-2 の UARTは2組。

機能 代替 TxD RxD XCK XDIR 14p 20p 28p 32p 40p 48p 64p 型番
USART0 DEFAULT PA0 PA1 PA2 PA3 × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64 AVR_DB28/32/48/64 AVR_DD20/28/32
USART0 DEFAULT PA0 PA1 - - × × × × × × AVR_DD14
USART0 ALT1 PA4 PA5 PA6 PA7 × × × × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64 AVR_DB28/32/48/64 AVR_DD20/28/32
USART0 ALT2 PA2 PA3 - - × × × × AVR_DD20/28/32
USART0 ALT3 PD4 PD5 PD6 PD7 × × × AVR_DD14/20/28/32
USART0 ALT4 PC1 PC2 PC3 - × × × AVR_DD14/20/28/32
USART1 DEFAULT PC0 PC1 PC2 PC3 × × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64 AVR_DB28/32/48/64 AVR_DD28/32
USART1 DEFAULT - * PC1 PC2 PC3 × × × × × AVR_DD14/20
USART1 ALT1 PC4 PC5 PC6 PC7 × × × × × ATmega809/1609/3209/4809(q) AVR_DA48/64 AVR_DB48/64
USART1 ALT1 PC4 PC5 -** - × × × × × × ATmega4809(d)
USART1 ALT2 PD6 PD7 - - × × × AVR_DD14/20/28/32
機能 代替 TxD RxD XCK XDIR 14p 20p 28p 32p 40p 48p 64p 型番
USART2 DEFAULT PF0 PF1 PF2 PF3 × × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA32/48/64 AVR_DB32/48/64
USART2 DEFAULT PF0 PF1 - - × × × × × × ATmega808/1608/3208/4808(d) AVR_DA28 AVR_DB28
USART2 ALT1 PF4 PF5 - - × × × AVR_DA32/48/64 AVR_DB32/48/64
USART2 ALT1 PF4 PF5 PF6 - × × × ATmega808/1608/3208/4808(q) ATmega809/1609/3209/4809
USART3 DEFAULT PB0 PB1 PB2 PB3 × × × × ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64
USART3 ALT1 PB4 PB5 PB6 PB7 × × × × × × AVR_DA64 AVR_DB64
USART3 ALT1 PB4 PB5 - - × × × × × ATmega809/1609/3209/4809 AVR_DA48 AVR_DB48
USART4 DEFAULT PE0 PE1 PE2 PE3 × × × × × AVR_DA48/64 AVR_DB48/64
USART4 ALT1 PE4 PE5 PE6 PE7 × × × × × × AVR_DA64 AVR_DB64
USART5 DEFAULT PG0 PG1 PG2 PG3 × × × × × × AVR_DA64 AVR_DB64
USART5 ALT1 PG4 PG5 PG6 PG7 × × × × × × AVR_DA64 AVR_DB64

megaAVR-0 と AVR_DA/DB/DD の PF6 は RESET機能と排他。
megaAVR-0 の USART2_ALTn には XCK代替あり。
megaAVR-0 28/32pin の UARTは3組各2選択。
megaAVR-0 40/48pin の UARTは4組各2選択。
AVR_DA/DB64 の UARTは6組各2選択。
AVR_DA/DB48 の UARTは5組各2選択。
AVR_DA/DB32/28 の UARTは3組各2選択。
AVR_DD の UARTは2組最大5選択。
* 対応外部端子はないが CCL/LUT 経由で外部端子に出力できる。(単線半二重動作は不可)
** 対応外部端子はないが EVSYS 経由で外部端子に出力できる。(同期主装置動作のみ)

XDIR は RS485動作時、XCK は同期動作時、RxDは受信有効時、TxDは送信有効時のみで使われ、未動作または無効時は使用されないため空き端子は他の用途に用いても良い。

SPI 対応端子割付

機能 代替 MOSI MISO SCK SS 8p 14p 20p 24p 型番
SPI0 DEFAULT PA1 PA2 PA3 PA4 × ATtiny204/404/804/1604 ATtiny406/806/1606 ATtiny1607 ATtiny214/414/814/1614 ATtiny416/816/1616/3216 ATtiny417/817/1617/3217 ATtiny424/824/1624/3224 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
SPI0 DEFAULT PA1 PA2 PA3 PA0 × × × ATtiny202/402 ATtiny212/412
SPI0 ALT1 PC2 PC1 PC0 PC3 × × ATtiny406/806/1606 ATtiny1607 ATtiny416/816/1616/3216 ATtiny417/817/1617/3217 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
SPI0 ALT1 PC2 PC1 - - × × × ATtiny424/824/1624/3224
SPI0 ALT1 PA6 PA7 - - × × ATtiny202/402 ATtiny204/404/804/1604 ATtiny212/412 ATtiny214/414/814/1614

tinyAVR-0/1/2 の代替選択肢は2種。
tinyAVR-0/1/2 の PA0 は RESET/UPDI機能と排他。
SS端子の PORT方向が主装置動作、従装置動作の何れかを決定する。

tinyAVR-0/1/2 の 8pin/14pin品種は SCK/SS端子の代替先がないため代替選択は機能しない。ただし SCKは CCL/LUTに配送されるので、シフトレジスタ接続等には使用可能。

機能 代替 MOSI MISO SCK SS 14p 20p 28p 32p 40p 48p 64p 型番
SPI0 DEFAULT PA4 PA5 PA6 PA7 × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64 AVR_DB28/32/48/64 AVR_DD20/28/32
SPI0 ALT1 PC0 PC1 PC2 PC3 × × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64 AVR_DB28/32/48/64
SPI0 ALT2 PE0 PE1 PE2 PE3 × × × × ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64
SPI0 ALT3 PA0 PA1 PC0 PC1 × × × × × AVR_DD28/32
SPI0 ALT3 PA0 PA1 - PC1 × × × × × AVR_DD14/20
SPI0 ALT4 PD4 PD5 PD6 PD7 × × × AVR_DD14/20/28/32
SPI0 ALT5 PC0 PC1 PC2 PC3 × × × × × AVR_DD28/32
SPI0 ALT5 - PC1 PC2 PC3 × × × × × AVR_DD14/20
SPI0 ALT6 PC1 PC2 PC3 PF7 × × × AVR_DD14/20/28/32
SPI1 DEFAULT PC0 PC1 PC2 PC3 × × × AVR_DA28/32/48/64 AVR_DB28/32/48/64
SPI1 ALT1 PC4 PC5 PC6 PC7 × × × × × AVR_DA48/64 AVR_DB48/64
SPI1 ALT2 PB4 PB5 PB6 PB7 × × × × × × AVR_DA64 AVR_DB64
SPI1 ALT2 PB4 PB5 - - × × × × × × AVR_DA48 AVR_DB48

megaAVR-0 と AVR_DA/DB の代替選択肢は3種。
AVR_DA/DB は SPI2組。
AVR_DD の PF7 は UPDI機能と排他。
SS端子の PORT方向が主装置動作、従装置動作の何れかを決定する。

TWI 対応端子割付

機能 代替 SCL SDA 8p 14p 20p 24p 型番
TWI0 DEFAULT PB0 PB1 × ATtiny204/404/804/1604 ATtiny406/806/1606 ATtiny1607 ATtiny214/414/814/1614 ATtiny416/816/1616/3216 ATtiny417/817/1617/3217 ATtiny424/824/1624/3224 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
TWI0 DEFAULT PA1 PA2 × × × ATtiny202/402 ATtiny212/412
TWI0 ALT1 PA1 PA2 × ATtiny214/414/814/1614 ATtiny416/816/1616/3216 ATtiny417/817/1617/3217

tinyAVR-0/2 は代替設定未対応。
tinyAVR-1 の代替選択肢は2種。

機能 代替 SCL SDA SCL(S) SDA(S) 14p 20p 28p 32p 40p 48p 64p 型番
TWI0 DEFAULT PA2 PA3 PC2 PC3 × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64 AVR_DB28/32/48/64 AVR_DD20/28/32
TWI0 ALT1 PA2 PA3 PF2 PF3 × × × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA32/48/64 AVR_DB32/48/64
TWI0 ALT1 PA2 PA3 - - × × × × × × ATmega808/1608/3208/4808
TWI0 ALT1 PA2 PA3 - - × × × × AVR_DA28 AVR_DB28 AVR_DD20/28/32
TWI0 ALT1 PA2 PA3 PC6 PC7 × × × × × AVR_DA48/64 AVR_DB48/64
TWI0 ALT2 PC2 PC3 PF2 PF3 × × × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809
TWI0 ALT2 PC2 PC3 - - × × × × × × ATmega808/1608/3208/4808
TWI0 ALT2 PC2 PC3 - - × × × AVR_DA28/32 AVR_DB28/32 AVR_DD14/20/28/32
TWI0 ALT2 PC2 PC3 PC6 PC7 × × × × × AVR_DA48/64 AVR_DB48/64
TWI0 ALT3 PA0 PA1 PC2 PC3 × × × AVR_DD14/20/28/32
機能 代替 SCL SDA SCL(S) SDA(S) 14p 20p 28p 32p 40p 48p 64p 型番
TWI1 DEFAULT PF2 PF3 PB2 PB3 × × × × × AVR_DA48/64 AVR_DB48/64
TWI1 DEFAULT PF2 PF3 - - × × × × × AVR_DA28/32 AVR_DB28/32
TWI1 ALT1 PF2 PF3 PB6 PB7 × × × × × × AVR_DA64 AVR_DB64
TWI1 ALT1 PF2 PF3 - - × × × × × AVR_DA32/48 AVR_DB32/48
TWI1 ALT2 PB2 PB3 PB6 PB7 × × × × × × AVR_DA64 AVR_DB64
TWI1 ALT2 PB2 PB3 - - × × × × × × AVR_DA48 AVR_DB48

(S)は二元動作従装置端子。
megaAVR-0 の代替選択肢は3種。

TCA 対応端子割付

機能 代替 WO0 WO1 WO2 WO3 WO4 WO5 8p 14p 20p 24p 型番
TCA0 DEFAULT PB0 PB1 PB2 PA3 PA4 PA5 × ATtiny204/404/804/1604 ATtiny406/806/1606 ATtiny1607 ATtiny214/414/814/1614 ATtiny416/816/1616/3216 ATtiny417/817/1617/3217 ATtiny424/824/1624/3224 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
TCA0 DEFAULT PA3 PA1 PA2 PA3 - - × × × ATtiny202/402 ATtiny212/412
TCA0 ALT PB3 PB4 PB5 PC3 PC4 PC5 × × × ATtiny807/1607 ATtiny417/817 ATtiny427/827/1627/3227
TCA0 ALT PB3 PB4 PB5 PC3 - - × × × ATtiny406/806/1606 ATtiny416/816 ATtiny426/826/1626/3226
TCA0 ALT PB3 - - PC3 - - × × × ATtiny204/404/804/1604 ATtiny214/414 ATtiny424/824/1624/3224
TCA0 ALT PA7 - - - - - × × × ATtiny202/402 ATtiny212/412

tinyAVR-0/1 8pin 品種の既定の WO0/WO3 は共にPA3。同時有効化非推奨。WO0 のみ代替可。
tinyAVR-0/1/2系統の TCA0出力は、端子個別で標準/代替選択。PORT群切替ではない。

機能 代替 WO0 WO1 WO2 WO3 WO4 WO5 14p 20p 28p 32p 40p 48p 64p 型番
TCA0 DEFAULT PA0 PA1 PA2 PA3 PA4 PA5 × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64 AVR_DB28/32/48/64 AVR_DD20/28/32
TCA0 DEFAULT PA0 PA1 - - - - × × × × × × AVR_DD14
TCA0 ALT1 PB0 PB1 PB2 PB3 PB4 PB5 × × × × × ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64
TCA0 ALT2 PC0 PC1 PC2 PC3 PC4 PC5 × × × × ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64
TCA0 ALT2 PC0 PC1 PC2 PC3 - - × × × × × ATmega808/1608/3208/4808 AVR_DA28/32 AVR_DB28/32 AVR_DD28/32
TCA0 ALT2 - PC1 PC2 PC3 - - × × × × × AVR_DD14/20
TCA0 ALT3 PD0 PD1 PD2 PD3 PD4 PD5 × × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64
TCA0 ALT3 - PD1 PD2 PD3 PD4 PD5 × × × AVR_DB28/32/48/64 AVR_DD28/32
TCA0 ALT3 - - - - PD4 PD5 × × × × × AVR_DD14/20
TCA0 ALT4 PE0 PE1 PE2 PE3 PE4 PE5 × × × × ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64
TCA0 ALT5 PF0 PF1 PF2 PF3 PF4 PF5 × × × ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA32/48/64 AVR_DB32/48/64 AVR_DD32
TCA0 ALT5 PF0 PF1 - - - - × × × × × × ATmega808/1608/3208/4808 AVR_DA28 AVR_DB28 AVR_DD28
TCA0 ALT6 PG0 PG1 PG2 PG3 PG4 PG5 × × × × × × AVR_DA64 AVR_DB64
機能 代替 WO0 WO1 WO2 WO3 WO4 WO5 14p 20p 28p 32p 40p 48p 64p 型番
TCA1 DEFAULT PB0 PB1 PB2 PB3 PB4 PB5 × × × × × AVR_DA48/64 AVR_DB48/64
TCA1 ALT1 PC4 PC5 PC6 - - - × × × × × AVR_DA48/64 AVR_DB48/64
TCA1 ALT2 PE4 PE5 PE6 - - - × × × × × × AVR_DA64 AVR_DB64
TCA1 ALT3 PG0 PG1 PG2 PG3 PG4 PG5 × × × × × × AVR_DA64 AVR_DB64

megaAVR-0 の代替選択肢は6種で、PORT[A-F]に対応。PORT群切替。
AVR_DA/DB の代替選択肢は7種で、PORT[A-G]に対応。PORT群切替。
TCA1 は AVR_DA/DB48/64 にあり、代替選択肢は4種。

TCA は 8bit/16bit 計数/計時器だが、分周比で 10bit増し相当にすることができる。

TCB 対応端子割付

機能 WO ALT 8p 14p 20p 24p 型番
TCB0 PA5 PC0 × ATtiny807/1607 ATtiny406/806/1606 ATtiny416/816/1616/3216 ATtiny817/1617/3217 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
TCB0 PA5 - × ATtiny204/404/804 ATtiny214/414/814/1614 ATtiny424/824/1624/3224
TCB0 PA6 - × ATtiny202/402 ATtiny212/412
TCB1 PA3 PC4 × × × ATtiny1617/3217 ATtiny427/827/1627/3227
TCB1 PA3 - × × ATtiny1614 ATtiny1616/3216 ATtiny424/824/1624/3224

TCB1は tinyAVR-2 と tinyAVR-1 の 16KiB/32KiB品種にある。

機能 WO ALT 14p 20p 28p 32p 40p 48p 64p 型番
TCB0 PA2 PF4 × × × × ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64
TCB0 PA2 PF4 × × × × × × ATmega808/1608/3208/4808 AVR_DA32 AVR_DB32 AVR_DD32
TCB0 PA2 - × × × × × ATmega808/1608/3208/4808 AVR_DA28 AVR_DB28 AVR_DD20/28
TCB1 PA3 PF5 × × × × ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64
TCB1 PA3 PF5 × × × × × × ATmega808/1608/3208/4808 AVR_DA32 AVR_DB32 AVR_DD32
TCB1 PA3 - × × × × × ATmega808/1608/3208/4808 AVR_DA28 AVR_DB28 AVR_DD20/28
TCB2 PC0 PB4 × × × × × ATmega809/1609/3209/4809(q) AVR_DA48/64 AVR_DB48/64
TCB2 PC0 - × × × × ATmega4809(d) ATmega808/1608/3208/4808 AVR_DA28/32 AVR_DB28/32 AVR_DD28/32
TCB3 PB5 PC2 × × × × × ATmega809/1609/3209/4809(q) AVR_DA48/64 AVR_DB48/64
TCB3 - PC2 × × × × × × ATmega4809(d)
TCB4 PG3 PC6 × × × × × × AVR_DA64 AVR_DB64

AVR_DA/DB64 の TCB は 5組各2個別選択。
AVR_DA/DB48 の TCB は 4組各2個別選択。
AVR_DA/DB28/32 の TCB は 3組各2個別選択。
AVR_DD28/32 の TCB は3組。
AVR_DD20 の TCB は2組。
AVR_DD14 の TCB は2組だが WO端子なし。
megaAVR-0 40/48pin の TCB は 4組各2個別選択。
megaAVR-0 28/32pin の TCB は 3組各2個別選択。

TCB は 16bit計数/計時器だが、分周比で 1bit増し(二重傾斜動作併用で 2bit増し)相当にすることができる。

tinyAVR-2 と AVR_Dx以降は連続する2個のTCBを連結して 32bit計数/計時/捕獲器にすることができる。これは 24MHz等速で 178.95秒までの 計数を可能とする。またクロック元に EVSYSで RTC_PIT_DIV64を選ぶと 512Hz刻みで 97日までの連続累積計時が可能。

AVR_DD14には TCB[01]_WO 端子がないが、EVSYSや CCL/LUT経由で WO信号を転送できる。

TCD 対応端子割付

機能 WOA WOB WOC WOD 8p 14p 20p 24p 型番
TCD0 PA4 PA5 PC0 PC1 × × ATtiny416/816/1616/3216 ATtiny417/817/1617/3217
TCD0 PA4 PA5 - - × × × ATtiny214/414/1614
TCD0 PA6 PA7 - - × × × ATtiny212/412

TCD0 は tinyAVR-0/2 と megaAVR-0 にはない。
tinyAVR-1 では 代替選択不可。

機能 代替 WOA WOB WOC WOD 14p 20p 28p 32p 48p 64p 型番
TCD0 DEFAULT PA4 PA5 PA6 PA7 × × AVR_DA28/32/48/64 AVR_DB28/32/48/64 AVR_DD14/20/28/32
TCD0 ALT1 PB4 PB5 PB6 PB7 × × × × AVR_DA48/64 AVR_DB48/64
TCD0 ALT2 PF0 PF1 PF2 PF3 × × × AVR_DA32/48/64 AVR_DB32/48/64 AVR_DD32
TCD0 ALT2 PF0 PF1 - - × × × × × AVR_DA28 AVR_DB28 AVR_DD28
TCD0 ALT3 PG4 PG5 PG6 PG7 × × × × × AVR_DA64 AVR_DB64
TCD0 ALT4 PA4 PA5 PD4 PD5 × × AVR_DD14/20/28/32

AVR_DA/DB/DD の TCD0 代替は PORT群選択。

TCDは 12bit計時器/位相信号発生器だが、2段の分周比組み合わせで 8bit増し(二重傾斜動作併用で 9bit増し)相当にできる。

AVR_Dx以降では専用内蔵PLL を介して CPU主クロックと別に 48MHz 動作まで増速できる。

AC 対応端子割付

機能 AINP0 AINN0 AINP1 AINN1 AINP2 AINP3 OUT 8p 14p 20p 24p 型番
AC0 PA7 PA6 PB5 PB4 PB1 PB6 PA5 × × × ATtiny1617/3217 ATtiny427/827/1627/3227
AC0 PA7 PA6 PB5 PB4 PB1 - PA5 × × × ATtiny1616/3216 ATtiny426/826/1626/3226
AC0 PA7 PA6 - - PB1 - PA5 × × × ATtiny1614 ATtiny424/824/1624/3224
AC0 PA7 PA6 PB5 PB4 - - PA5 × × ATtiny807/1607 ATtiny406/806/1606 ATtiny416/816 ATtiny817
AC0 PA7 PA6 - - - - PA5 × × × ATtiny204/404/804 ATtiny214/414/814
AC0 PA7 PA6 - - - - PA3 × × × ATtiny202/402 ATtiny212/412
AC1 PA7 PA5 PA6 PB7 PB0 PB4 PB3 × × × ATtiny1617/3217
AC1 PA7 PA5 PA6 - PB0 PB4 PB3 × × × ATtiny1616/3216
AC1 PA7 PA5 PA6 - PB0 - PB3 × × × ATtiny1614
AC2 PA6 PA7 PB0 PB6 PB5 PB7 PB2 × × × ATtiny1617/3217
AC2 PA6 PA7 PB0 - PB5 - PB2 × × ATtiny1614 ATtiny1616/3216

AC1/2 は tinyAVR-1 の 16KiB/32KiB 限定。

機能 AINP0 AINN0 AINP1 AINN1 AINP2 AINN2 AINP3 OUT ALT 28p 32p 40p 48p 64p 型番
AC0 PD2 PD3 PD4 PD5 PD6 PD7 - PA7 - ATmega808/1608/3208/4808 ATmega809/1609/3209/4809
AC0 PD2 PD3 PE0 PD0 PE2 PD7 PD6 PA7 PC6 × × × AVR_DA48/64 AVR_DB48/64
AC0 PD2 PD3 - PD0 - PD7 PD6 PA7 - × × × AVR_DA28/32 AVR_DB28/32
AC1 PD2 PD5 PD3 PD0 PD4 PD7 PD6 PA7 PC6 × × × AVR_DA48/64 AVR_DB48/64
AC1 PD2 PD5 PD3 PD0 PD4 PD7 PD6 PA7 - × × × AVR_DA28/32 AVR_DB28/32
AC2 PD2 PD7 PD4 PD0 PE1 PD7 PD6 PA7 PC6 × × × AVR_DA48/64 AVR_DB48/64
AC2 PD2 PD7 PD4 PD0 PE1 PD7 PD6 PA7 - × × × AVR_DA28/32 AVR_DB28/32

AC0 の megaAVR-0 と AVR_Dx 以降は部分的ピン互換。
megaAVR-0 は AC0 のみで OUT端子代替選択不可。
AVR_DA/DB は AC0/1/2 を持ち OUT端子のみ代替選択可。

機能 AINP0 AINN0 AINN2 AINP3 AINN3 AINN4 OUT 14p 20p 28p 32p 型番
AC0 PD2 PD3 PD7 PD6 PC2 PC3 PA7 × × AVR_DD28/32
AC0 - - PD7 PD6 PC2 PC3 PA7 × × × AVR_DD20
AC0 - - PD7 PD6 PC2 PC3 - × × × AVR_DD14

AVR_DD は OUT端子代替選択を持たない。
PC[23]は MVIO構成FUSE が無効時(SYSCFG1_MVSYSCFG=SINGLE)に使用可能。

ADC 対応端子割付

機能 AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AIN8 AIN9 AIN10 AIN11 AIN12 AIN13 AIN14 AIN15 8p 14p 20p 24p 型番
ACD0 - PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB5 PB4 PB1 PB0 PC0 PC1 PC2 PC3 × × ATtiny426/826/1626/3226 ATtiny427/827/1627/3227
ACD0 - PA1 PA2 PA3 PA4 PA5 PA6 PA7 - - PB1 PB0 - - - - × × × ATtiny424/824/1624/3224
ACD0 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB5 PB4 PB1 PB0 - - - - × × ATtiny406/806/1606 ATtiny807/1607 ATtiny416/816/1616/3216 ATtiny417/817/1617/3217
ACD0 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 - - PB1 PB0 - - - - × × × ATtiny204/404/804/1604 ATtiny414/814/1614
ADC0 PA0 PA1 PA2 PA3 - - PA6 PA7 - - - - - - - - × × × ATtiny202/402 ATtiny212/412
ADC1 PA4 PA5 PA6 PA7 PB7 PB6 PC0 PC1 PC2 PC3 PC4 PC5 - - - - × × × ATtiny1617/3217
ADC1 PA4 PA5 PA6 PA7 - - PC0 PC1 PC2 PC3 - - - - - - × × × ATtiny1616/3216
ADC1 PA4 PA5 PA6 PA7 - - - - - - - - - - - - × × × ATtiny1614

tinyAVR-0/1/2系統の PA0は UPDI/RESET機能と排他。
tinyAVR-1 の ADC0 は PTC有効時に使用不可。

機能 AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AIN8 AIN9 AIN10 AIN11 AIN12 AIN13 AIN14 AIN15 28p 32p 40p 48p 64p 型番
ACD0 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PE0 PE1 PE2 PE3 PF2 PF3 PF4 PF5 × × × ATmega809/1609/3209/4809
ACD0 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 - - - - PF2 PF3 PF4 PF5 × × × × ATmega808/1608/3208/4808
ACD0 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 - - - - - - - - × × × × ATmega808/1608/3208/4808
機能 AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AIN8 AIN9 AIN10 AIN11 AIN12 AIN13 AIN14 AIN15 AIN16 AIN17 AIN18 AIN19 AIN20 AIN21 28p 32p 48p 64p 型番
ACD0 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PE0 PE1 PE2 PE3 PE4 PE5 PE6 PE7 PF0 PF1 PF2 PF3 PF4 PF5 × × × AVR_DA64 AVR_DB64
ACD0 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PE0 PE1 PE2 PE3 - - - - PF0 PF1 PF2 PF3 PF4 PF5 × × × AVR_DA48 AVR_DB48
ACD0 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 - - - - - - - - PF0 PF1 PF2 PF3 PF4 PF5 × × × AVR_DA32 AVR_DB32
ACD0 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 - - - - - - - - PF0 PF1 - - - - × × × AVR_DA28 AVR_DB28

AVR_DA の AIN16-21 は正入力専用。

機能 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AIN16 AIN17 AIN18 AIN19 AIN20 AIN21 AIN22 AIN23 AIN24 AIN25 AIN26 AIN27 AIN28 AIN29 AIN30 AIN31 14p 20p 28p 32p 型番
ADC0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PF0 PF1 PF2 PF3 PF4 PF5 PA2 PA3 PA4 PA5 PA6 PA7 PC0 PC1 PC2 PC3 × × × AVR_DD32
ADC0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 PF0 PF1 - - - - PA2 PA3 PA4 PA5 PA6 PA7 PC0 PC1 PC2 PC3 × × × AVR_DD28
ADC0 - - - PD4 PD5 PD6 PD7 - - - - - - PA2 PA3 PA4 PA5 PA6 PA7 PC0 PC1 PC2 PC3 × × × AVR_DD20
ADC0 - - - PD4 PD5 PD6 PD7 - - - - - - - - - - - - - PC1 PC2 PC3 × × × AVR_DD14

AVR_DD の PC[123]は MVIO構成FUSE が無効時に使用可能。(FUSE.SYSCFG1.MVSYSCFG=SINGLE)

DAC 対応端子割付

機能 OUT 8p 14p 20p 24p 28p 32p 48p 64p 型番
DAC0 PA6 × × × × × × × ATtiny417/817/1617/3217
DAC0 PA6 × × × × × × × ATtiny416/816/1616/3216
DAC0 PA6 × × × × × × × ATtiny214/414/814/1614
DAC0 PA6 × × × × × × × ATtiny212/412
DAC0 PD6 × × AVR_DA28/32/48/64 AVR_DB28/32/48/64 AVR_DD14/20/28/32

DAC機能は tinyAVR-0/2 と megaAVR-0 にはない。
DAC0 だけが OUT端子を持つ。DAC1/2に外部端子割当はない。

PTC 対応端子割付

機能 X0/Y0-3 4 5 6-9 10 11 14p 20p 24p 型番
ADC0 PA4-7 PB1 PB0 PC0-3 PC4 PC5 × × ATtiny1617/3217
ADC0 PA4-7 PB1 PB0 PC0-3 - - × × ATtiny1616/3216
ADC0 PA4-7 PB1 PB0 - - - ATtiny814 ATtiny816 ATtiny817
機能 X0/Y0-7 8-15 16-23 24-27 28-31 32-37 40-47 28p 32p 48p 64p 型番
ADC0 PA0-7 PB0-7 PD0-7 PE0-7 PF0-5 PG0-3 PG4-7 × × × AVR_DA64
ADC0 PA0-7 PB0-5 PD0-7 PE0-3 PF0-5 - - × × × AVR_DA48
ADC0 PA0-7 - PD0-7 - PF0-5 - - × × × AVR_DA32
ADC0 PA0-7 - PD0-7 - PF0,1 - - × × × AVR_DA28

PTC対応は掲出の型番に限られる。
AVR_DAは PORTC群と PF6以外の全外部PORT端子が PTC対応。
PTC有効化には専用プロプライエタリライブラリが必要。制御詳細非公開。ADC0を専有。

OPAMP 対応端子割付

機能 INP INN OUT 28p 32p 48p 64p 型番
OPAMP0 PD1 PD3 PD2 AVR_DB28/32/48/64
OPAMP1 PD4 PD7 PD5 AVR_DB28/32/48/64
OPAMP2 PE1 PE3 PE2 × × × AVR_DB64

AVR_DB系統だけが OPAMPnを持つ。
AVR_DB64 は3組。
AVR_DB28/32/48 は2組。

DACや VREFAを参照電圧として外付け部品なしに外部回路用定電圧回路(VDD-1V以下/20mA程度まで)を実装することもできる。これを自身の VDD2にチップ外から供給して復電圧動作を補助しても良い。

ZCD 対応端子割付

機能 ZCIN OUT ALT 14p 20p 28p 32p 48p 64p 型番
ZCD0 PD1 PA7 PC7 × × AVR_DA28/32/48/64 AVR_DB28/32/48/64
ZCD1 PE3 PA7 PC7 × × × × AVR_DA48/64 AVR_DB48/64
ZCD2 PE7 PA7 PC7 × × × × × AVR_DA64 AVR_DB64
ZCD3 PC2 PA7 - × × AVR_DD14/20/28/32

AVR_DA/DB64 は ZCD0/1/2 の3組。
AVR_DA/DB48 は ZCD0/1 の 2組。
AVR_DA/DB32/28 は ZCD0のみ。
AVR_DD は ZCD3のみ。
OUT端子のみ代替選択可。

その他特殊端子割付

系統 p UPDI RESET EXTCLK VREFA CLKOUT TOSC1 TOSC2 XTALHF1 XTALHF2
tinyAVR-0 8/14 PA0 PA3 - - - - - -
20/24 PA0 PA3 - PB5 - - - -
tinyAVR-1 8/14 PA0 PA3 - - - - - -
20/24 PA0 PA3 - PB5 PB3 PB2 - -
tinyAVR-2 14 PA0 PA3 PA5 - - - - -
20/24 PA0 PA0/PB4 PA3 PA5 PB5 PB3 PB2 - -
megaAVR-0 - 専用 PF6 PA0 PF7 PA7 PF0 PF1 - -
AVR_DA - 専用 PF6 PA0 PF7 PA7 PF0 PF1 - -
AVR_DB - 専用 PF6 PA0 PF7 PA7 PF0 PF1 PA0 PA1
AVR_DD 14 PF7 PF6 PA0 PF7 - PA0 PA1 PA0 PA1
20 PF7 PF6 PA0 PF7 PA7 PA0 PA1 PA0 PA1
28/32 PF7 PF6 PA0 PF7 PA7 PF0 PF1 PA0 PA1

PA0 の RESET/UPDI 選択は、FUSE設定。(PORTMUXではない)
tinyAVR-2 の PB4 RESET代替選択は、FUSE設定。(PORTMUXではない)
AVR_DA/DB/DD は TOSCn→XTAL32Kn。(名称変更)(低速発振子/発振器入力)
XTALHFn は AVR_DB/DDのみ存在。(主クロック用高速水晶発振子入力対)

割込

割込時間考察

進行処理内容 周期 補足
進行中の命令終了 1 多重割込は4周期自動禁止
PCをスタックに格納 2
割込処理へ移動 3 JMP命令。8KiB以下品種では2周期(RJMP)
レジスタPUSH 1x 最大32レジスタ(〜32周期)
(全体フラグ保存) 3+1 拡張IOレジスタからLDS+PUSH
割込実処理実行 - 例えば周辺機能割込フラグ解除には1+2周期(LDI+STS)
(全体フラグ復帰) 2+2 POP+拡張IOレジスタへSTS
レジスタPOP 2x 最大32レジスタ(〜64周期)
スタックからPCを復帰 4 RETI命令
最短 10 空ベクタ復帰
最長 114 全数レジスタ+全体フラグ保存

スタック操作は自命令を含む最長4周期内の次命令まで割込自動禁止。

24Mhz動作の場合 1us=24周期 なので、最短0.416us、最長4.75us のあいだ主処理は進行しない。

割込実処理が IOレジスタをひとつ操作するだけなら全体フラグを変更しないので、1ワークレジスタ保存+IO書換は 6周期消費であるから計16周期必要で 0.66us 処理時間を要する。実用上はこれが最短。

外部端子割込

旧世代にある専用端子割込(EXTINT)は削除され、PORT群割込(PCINT相当)だけとなった。このため割込処理内で個別の端子別割込元判定分岐が必要となる。このオーバーヘッドを避けるには次のようにする。

  • 割込イベントを起動トリガとして必要とする周辺機能には直接 EVSYS や CCL/LUT で事象配信する。
    • 割込ベクタとCPU処理が関係しない+全体割込禁止中でも動作するので、可能なら最良。
  • ひとつのPORT群でひとつの端子割込だけを有効にする。
    • 分岐判断をせずに済むので EXTINT 相当になる。
  • CCL/LUT 割込ベクタを使う。
    • 1ベクタだけだが EXTINT 相当をひとつ増やせる。
  • EVSYSで EVOUTに転送し、その先のPORT群割込ベクタを使う。
    • 直接PORT群割込に使わない(余っている)ベクタと端子を活用して EXTINT相当を増やす。

割込処理効率化

  • 浮動小数点演算、除算を避ける。
    • 論外。
  • 32bit変数操作を避ける。
    • RMW(Read-Modify-Write)に伴う PUSH/POP/演算操作コストが重い。(8bit幅の12倍、16bit幅の4倍程度)
    • 長時間タイマー計数/計時/捕獲は、32bit連結 TCB対応品種なら効率よく実装できる。
  • 汎用GPIORレジスタを活用する。
    • ビットフラグRMWに長ける。
  • アセンブラ記述の活用。
    • 特にシビアな条件下では不可避。

RTC周期的休止解除

旧世代での WDT汎用割込ベクタは削除され、WDTは障害再起動専用になった。変わって RTC(Real-Time-Counter)周辺機能が追加されたので、これを活用する。

RTCとは言うが計時機能やカレンダー保持機能はない。
ioヘッダファイルでの予約語なので他の RTCライブラリを使う時はシンボル衝突に注意。

  • PIT周期割込機能が、いかなる休止状態からでも CPUを活性化できる。
    • 通常は最長1秒周期。RTCを他の用途と兼務しないなら 32秒周期が可能。
  • 16bit汎用RTC計時は、アイドル/スタンバイ状態から CPUを活性化できる。
    • パワーダウン休止を使わないなら、65535秒(あるいはその32倍の2097120秒)までの長周期休止が可能。
    • パワーダウン休止中は計時が進まないので、PIT周期割込と組み合わせると更にその 32768倍までの長周期化ができる。

RTC計時は CPU主クロックと非同期なので、F_CPUと無関係に実時間計時ができる。(本来の用途)

  • EVSYSと 32bit連結TCBとも組み合わせて 512Hz(1953.125us)粒度の長周期計時ができる。
    • 8388608秒(97日)周期のシステム時計となり、割込も追加の保存変数もなしに delay/millis 相当関数を実装できる。
  • <setjmp.h> と組み合わせるとタイムアウト脱出が実装できる。
    • CPU処理で計数ポーリングせずに済むので CPUコードが単純になる。(無限ループで良い)
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?