-
Notifications
You must be signed in to change notification settings - Fork 0
Peripheral
AVR各品種は型番からフラッシュメモリ搭載量、系統種別、外囲器ピン数を一意に知ることは出来るが より詳細な情報はデータシートやioヘッダファイルを参照しなければならない。 この文書では似たような型番間での差異を要約する。
- tinyAVR-0/1/2系統
- tinyAVR-1 はアナログ周辺機能重視品種。
- tinyAVR-2 はUSART2組+SRAM強化品種。
- PA0/UPDIに対してHV制御可能。
- megaAVR-0系統
- アナログ周辺回路は別電源区画。(AVDD/VDDが直結していない)
- AVR_DA/DB/DD系統
- AVR_DA はアナログ周辺機能重視品種。
- AVR_DB は OPAMP機能と復電圧対応品種。(32pin以下ではPD0相当端子がVDD2に代替)
- AVR_DD は復電圧対応品種。(少ピン)
- AVR_DB/DD は主クロック用に外部高速水晶発振子を使用可能。(DA以前は方形波発振器のみ)
- AVR_DDはPF6に対してHV制御可能。
- AVR_EA系統
- AVR_DA 相当のメモリマップ/周辺機能と tinyAVR-2 相当の 最大20MHz 主クロック制御器の組み合わせ。
- 28/32/48pin外囲器。
- 主クロック用に外部高速水晶発振子を使用可能。
- PF6に対してHV制御可能。(8.2V?)
- NVMCTRL も tinyAVR-2 との折衷仕様になりページバッファが復活。
- 全種で TCA2組、TCB4組、USART3組。(TCDは削除)
- EVSYS の PORT および RTC_PIT イベントが仕様変更。
- AVR_EB系統(2023/07時点では詳細不明)
- tinyAVR 相当の新品種で、内蔵主クロックは最大20Mhz?
- 14/20/28/32pin外囲器。(AVR_DDに似る)
- TCA/TCDが削除され、新たにTCE/TCFが搭載された。PLLが使用できる。
- USART1組。
- 新たにWEX機能(波形制御器?)が搭載された。
- 新たにBOOTROW領域が用意され、PRODSIG、USERSIG番地が移動している。
- AVR_DU系統
- AVR_DBの設計をベースとし、復電圧対応の代わりに USB-IFを備えた品種。
- USART2組。
- 新たにBOOTROW領域が用意され、PRODSIG、USERSIG番地が移動している。
これら以前のAtmel世代製品(非UPDI品種)については論じない。
- 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/416auto | 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 |
型番 | pin | GPIO | TCA | TCB | TCD | USART | SPI | TWI | ADC | AIN | DAC | AC | AINP/N | PTC | ZCD | OPAMP | CCL | EVSYS | EVOUT |
AVR_EA | |||||||||||||||||||
AVR16/32/64EA28 | 28 | 23 | 2 | 4 | - | 3 | 1 | 1 | 1 | 20 | 1 | 2 | 5/2 | - | - | - | 4 | 6 | 3 |
AVR16/32/64EA32 | 32 | 27 | 2 | 4 | - | 3 | 1 | 1 | 1 | 24 | 1 | 2 | 5/2 | - | - | - | 4 | 6 | 4 |
AVR16/32/64EA48 | 48 | 41 | 2 | 4 | - | 3 | 1 | 1 | 1 | 28 | 1 | 2 | 5/2 | - | - | - | 4 | 6 | 6 |
表にない 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 は総チャネル数。
なお。AVR_EB系統にTCA/TCBはなく、代わりにTCE/TCFが存在する。
tinyAVR-0/1/2 megaAVR-0 | AVR_DA/DB/DD | DU | EA | EB |
---|---|---|---|---|
NVMCTRL v0 | v2 | v4 | v3 | v5 |
NVMCTRL の仕様が異なる。 UPDI機能の USERROW外部書込方法は互換。
HV電圧 | 機能 | 端子 | 系統 |
---|---|---|---|
12V | UPDI/RESET | PA0 | tinyAVR-0/1 |
9V-12V | UPDI/RESET | PA0 | tinyAVR-2 |
8.2V | RESET | PF6 | AVR_DD/DU/EA/EB |
- | UPDI | PF7 | AVR_DD/DU/EA/EB |
megaAVR-0 AVR_DA/DB は HV機能なし。(UPDI端子は専用)
何れも HV電圧印加は単発パルス。(レベルではない)
tinyAVR-2 の HV許可電圧は 9V〜12V。(12V推奨)
AVR_DD の PF6端子定格は 9V。(8.2V推奨)
AVR_DU/EA/EB の PF6端子 絶対 定格は 9V。(8.2V推奨)
値 | 型番 |
---|---|
$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 ATmega809/1609/3209/4809 AVR_DA AVR32DB AVR64DB AVR_DD AVR_EA |
$40 | ATtiny424/824/1624/3224 ATtiny426/826/1626/3226 ATtiny427/827/1627/3227 |
UPDI_STATUSA が返す UPDI実装の改訂番号。(用途不明)
書込器使用時に照会すべき識別子。
PRODSIG
と通称されるIOレジスタ領域にあり、
個々はヘッダファイルでSIGNATURE_0/1/2
と命名されている。
宣言名 | 値 | 説明 |
---|---|---|
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_0のアドレスは一般に 0x1100だが、AVR_EB系統のみは 0x1080である。
値 | $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 | 64DU32 | |
$22 | 204 | 414 | 814 | 1614 | 3217 | 64DU28 | |
$23 | 202 | 412 | 807 | 1607 | |||
$24 | 806 | 1606 | |||||
$25 | 406 | 804 | 1604 | ||||
$26 | 404 | 808 | 1608 | 3227 | |||
$27 | 402 | 827 | 1609 | 3226 | |||
$28 | 416auto | 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 | 16EA48 | 32DB48 | |||||
$36 | 16EA32 | 32DB32 | |||||
$37 | 16EA28 | 32DB28 | |||||
$38 | 16DU32 | 32DD32 | |||||
$39 | 16DU28 | 32DD28 | |||||
$3A | 16DU20 | 32DD20 | |||||
$3B | 16DU14 | 32DD14 | |||||
$3C | 32EA48 | ||||||
$3D | 32EA32 | ||||||
$3E | 16EB32 | 32EA28 | |||||
$3F | 16EB28 | 32DU32 | |||||
$40 | 16EB20 | 32DU28 | |||||
$49 | 16EB14 | ||||||
$4E | 32DU20 | ||||||
$4F | 32DU14 | ||||||
$51 | 4808 | ||||||
$52 | 4809 |
3〜4桁数値型番の末尾 08 または 09 は ATmega、その他は ATtiny を表す。
表中の空欄には他系統の品種が入っていて未使用というわけではない。
マクロ定数__AVR_ARCH__
は、デバイスのメモリマップ(およびリンカースクリプト)と密接な関係にある。
-
__AVR_ARCH__=103
は、CODE領域とDATA領域の合計が 64KiB未満で、CODE領域はDATA領域中の一部に全て固定的に MAPPING されている。AVR**以外は SPM/ELPM を使用できない。 -
__AVR_ARCH__=103
は、CODE領域が 64KiBで、FLMAP(0か1、初期値1)が指定でき、CODE領域は 32KiBずつ DATA領域に MAPPING できる。RAMPZレジスタはなく(0固定で)、SPM/ELPM で CODE領域にリニアにアクセスできる。 -
__AVR_ARCH__=104
は、CODE領域が 128KiBで、FLMAP(0から3、初期値3)が指定でき、CODE領域は 32KiBずつ DATA領域に MAPPING できる。RAMPZレジスタがあり(0か1が指定でき)、SPM/ELPM で CODE領域にリニアにアクセスできる。
Num | Linker | FLMAP | RAMPZ | 型番 |
---|---|---|---|---|
103 | avrxmega3.x | - | - | tinyAVR-0/1/2、mrgaAVR-0、AVR16**、AVR32**(AVR8**) |
102 | avrxmega2.x | o | - | AVR64** |
104 | avrxmega4.x | o | o | AVR128** |
AVR8**に相当する製品の販売や、公開ATDFは確認されていない。(ブリーフノート中には記載がある)
ベクターテーブルの粒度_VECTOR_SIZE
は、__AVR_ARCH__
とは無関係に、CODE領域が 8KiB以下なら 2、そうでなければ 4となる。
系統 | 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_DU | ||||||
14 | AVR16DU14 | AVR32DU14 | ||||
20 | AVR16DU20 | AVR32DU20 | ||||
28 | AVR16DU28 | AVR32DU28 | AVR64DU28 | |||
32 | AVR16DU32 | AVR32DU32 | AVR64DU32 | |||
AVR_EA | ||||||
28 | AVR16EA28 | AVR32EA28 | AVR64EA28 | |||
32 | AVR16EA32 | AVR32EA32 | AVR64EA32 | |||
48 | AVR16EA48 | AVR32EA48 | AVR64EA48 | |||
AVR_EB | ||||||
14 | AVR16EB14 | |||||
20 | AVR16EB20 | |||||
28 | AVR16EB28 | |||||
32 | AVR16EB32 |
AVR_EA の ioヘッダファイルは 2023/03時点では 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 AVR16EAnn AVR16EBnn |
32 | 32768 | 128 | 256 | ATmega3208/3209 |
48 | 49152 | 128 | 384 | ATmega4808/4809 |
32 | 32768 | 64 | 512 | AVR32EAnn |
64 | 65536 | 128 | 512 | AVR64EAnn |
16 | 16384 | 512 | 32 | AVR16DDnn AVR16DUnn |
32 | 32768 | 512 | 64 | AVR32DAnn AVR32DBnn AVR32DDnn AVR32DUnn |
64 | 65536 | 512 | 128 | AVR64DAnn AVR64DBnn AVR64DDnn AVR64DUnn |
128 | 131072 | 512 | 256 | AVR128DAnn AVR128DBnn |
以下は ioヘッダファイルで関係する宣言。
宣言名 | 説明 | 備考 |
---|---|---|
__AVR_ARCH__ | AVRアーキテクチャ識別値 | フラッシュメモリ量は 103:64KiB未満 102:64KiB 104:128KiB |
MAPPED_PROGMEM_START | データ空間内フラッシュメモリ領域先頭番地 | 0x8000または0x4000(megaAVRのみ) |
PROGMEM_START | フラッシュメモリ開始番地 | 常にゼロ |
FLASHSTART | 同 | |
PROGMEM_SIZE | フラッシュメモリ領域総バイト量 | |
PROGMEM_PAGE_SIZE | フラッシュメモリ消去単位バイト量 | |
PROGMEM_END | フラッシュメモリ終了番地 | 総バイト量-1 |
FLASHEND | 同 |
tinyAVR-0/1/2 と megaAVR-0 と AVR16/32Dx では、フラッシュメモリ全領域はデータアドレス空間内で見える。ただし megaAVR-0 は先頭番地が異なる。
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/DU | 512 B | 16 | 32 | 64 | 128 | 256 | |||
AVR EA/EB | 256 B | 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搭載量は型番(フラッシュ総量)とは関わりがなく、比例関係もない。
割込などで全レジスタ・演算フラグ・復帰番地をスタックに積む場合 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 |
2 | 2048 | 0x3800 | ATtiny1614/1616/1617/3216/3217 ATtiny1624/1626/1627 ATmega1608/1609 |
2 | 2048 | 0x7800 | AVR16DDnn AVR16DUnn AVR16EAnn AVR16EBnn |
3 | 3072 | 0x3400 | ATtiny3224/3226/3227 |
4 | 4096 | 0x3000 | ATmega3208/3209 |
4 | 4096 | 0x7000 | AVR32DAnn AVR32DBnn AVR32DDnn AVR32DUnn AVR32EAnn |
6 | 6144 | 0x2800 | ATmega4808/4809 |
6 | 6144 | 0x6800 | AVR64EAnn |
8 | 8192 | 0x6000 | AVR64DAnn AVR64DBnn AVR64DDnn AVR64DUnn |
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領域はバイト単位で書込/消去ができる。 外部書込器からはページ粒度単位で読み書きする。
avrdudeでの1バイト単位転送はFUSE操作にしか行えない制約がある。 AVR Dx/Ex系列でのioヘッダ記載粒度は1だがこの定義のままだと実行エラーになるので 普通は他系列に倣って 16や 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 | 256 | AVR_DDnn AVR_DUnn |
512 | 1 | 512 | AVR_DAnn AVR_DBnn |
512 | 8 | 64 | AVR_EAnn AVR_EBnn |
ページバッファが存在するため tinyAVR-0/1/2 と megaAVR-0 のEEPROMは、バルク転送により Flashメモリ並みの高速で書くことができる。AVR_EAも同様にバルク転送可能だが、粒度が小さいため高速ではない。
AVR_DA/DB/DD/DU
の EEPROM粒度は公称1byteだが、実際は2byteペア単位で書くことができる。それ以上は NVMCTRL_STATUS を確認しながらでないと書けないため、盲目的なバルク転送はできない。ページバッファもないため非常に書き込みが遅い。
以下は 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
あるいはUSER_SIGNATURES
と呼ばれる領域は、
追加のEEPROM領域として使用できる。
この領域はチップ消去に影響されない。
応用コード内からはバイト単位で読み書き可能。
外部書込器からは通常、ページ粒度単位で読み書きする。
チップが施錠されている場合でも、この領域のみは特別な手順で一方的に書き込みできる。
想定される用途は一般に製品シリアル番号や工場書込初期値の保存である。
よってコード内では普通、アドレス直接指定のデータ空間として読出しのみ行い、 書換には外部書込器を使用する。
- 総量 -- USERROW総バイト量
- 粒度 -- USERROWページ粒度バイト量
- 総数 -- USERROWページ総数
総量 | 粒度 | 総数 | 型番 |
---|---|---|---|
32 | 32 | 1 | 以下を除く |
64 | 64 | 1 | ATmega3208/3209/4808/4809 AVR_EAnn AVR_EBnn |
256 | 256 | 1 | AVR_DUnn |
以下はioヘッダファイルで関係する宣言。
宣言名 | 説明 | 備考 |
---|---|---|
USER_SIGNATURES_START | USERROW開始番地 | 0x1300、0x1080(AVR_Dx/EA)、0x1200(AVR_EB) |
USER_SIGNATURES_SIZE | USERROW総量 | |
USER_SIGNATURES_PAGE_SIZE | USERROWページ粒度 |
USERROW
はmegaAVR/tinyAVR
ではEEPROM
として、AVR_Dx
以降ではFlash
メモリとして実装されている。従って(施錠中のUPDI書き換えを例外として)書き換えと消去方法は全く異なる。
また施錠中のUPDI特殊書き換えは読み戻しができず、またSRAM先頭番地を知らなければ書き込めないため、これを実装した書換器実装は稀である。少なくともavrdudeは対応していない。
AVR_DU/EB 系統で新たに設定された不揮発メモリ。総量はUSERROW
に同じであるが、
番地は従来のSIGNATURE_x
位置 0x1100 にあり、 AVR_EB系統非対応書込器ではここが PRODSIG
(SIGNATURES_START
)として読まれることに注意を要する。
代わりに本来のSIGNATURE_x
は 0x1080(従来のUSERSIG
)に、USERROW
は 0x1200 に、それぞれ番地が移動している。
- このため仮にEA系統のブートローダーを書き込むと、BOOTROWに真の情報が隠蔽されて騙されることになる。EB系統には他に拡張されたFUSE保護機能があるため、専用のブートローダーや書込器対応が必要になければ真に意図したNVM制御は獲得できないだろう。
Symbol | tinyAVR / megaAVR | DA/DB/DD/EA | DU/EB |
---|---|---|---|
SIGNATURES_START / SIGNATURE_0 | 0x1100 | 0x1100 | 0x1080 |
USER_SIGNATURES_START (USERROW) | 0x1300 | 0x1080 | 0x1200 |
BOOTROW_START (BOOTROW) | - | - | 0x1100 |
総量 | 粒度 | 総数 | 型番 |
---|---|---|---|
64 | 64 | 1 | AVR_EBnn |
256 | 256 | 1 | AVR_DUnn |
CLKCTRL(クロック制御器)の仕様は3種類の世代に分かれる。
tinyAVR-0/1/2 megaAVR-0 | AVR_DA/DB/DD | DU | EA/EB |
---|---|---|---|
最大20/16MHz選択 | 最大24MHz | 最大32MHz | 最大20/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)
AVR_EA の CLKCTRL は同様に設定できるが、シンボル定義は異なるためソースの直交性はない。
前世代と異なり、主クロック周波数選択には FUSEを使わず、動的に変更できる。 これに分周比を動的に変更して掛けられるので、F_CPUは以下の表から自由に選択できる。 しかしながら普通は1MHzの整数倍になるどれかを選択するだろう。
- 非公式に、主クロック供給には32MHzと28Mhzも選択できるが定格外であって動作保証はない。
- AVR_DUでは公式に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は起動する。
AVR64DU28/32の初期ロット(A3シリコン)はエラッタにより20MHz動作が推奨される
なお、主クロック発振器には超低電力発振器 OSCULPを選ぶことも出来る。 この場合は分周比1として 32.768kHzとするのが普通だが、 分周比64を選べば 512Hz駆動とすることも出来る。(実用性についてはともかく)
主クロック供給にEXTCLKを選択した場合でも 動的に主クロック元選択と分周比設定は必要だ。 それを行うまでは既定のOSCHFで動作する。 従って旧世代のようにFUSE設定を間違えて主クロック停止状態になることはない。 この世代ではアナログ水晶発振子も、 方形波出力のデジタル発振器も利用できる。
EXTCLKあるいはXTAL入力端子は多くの型番で USART0既定端子と排他選択になる。
外部クロック供給は 32MHz まで支援。
EVSYS(事象システム)は旧世代AVRにはなかった周辺機能のひとつだ。 これは割込やCPUコード実行なしに、ある周辺機能が生成した事象イベントを 事象チャネル通信網を通じて 他の周辺機能に向けて転送・分配する。
EVSYSは tinyAVR-0系統で最初に採用されたが、 再三仕様が改定されたため以下の4世代が存在する。
版番号は本書で便宜的に付したもので、データシート原書に記述されたものではない。\
tinyAVR-0 | tinyAVR-1 | megaAVR-0 | tinyAVR-2 AVR_DA/DB/DD | DU/EA/EB |
---|---|---|---|---|
v1 | v1.1 | v2 | v2.1 | v2.2 |
- v1.1以降は非同期事象元にPIT分周クロックを選べる。
- v2では非同期/同期チャネル選択を使用部で区別しない。コード記述にも前後の互換性はない。
- v2.1でTCBn計数器に事象計数が追加された。
- v2とv2.1ではシンボル定義が異なるが糖衣構文(別名)を用意すれば前方互換にできる。
- v2.2はv2.1とほぼ同じだがPORTとRTC_PITにEventGeneretorが導入された。
- AVR_DUと AVR_EA/EBは同機能だが若干列挙体宣言名が異なる。
使用可能な事象チャネル数は型番により差異がある。
事象チャネル数 | 世代 | 型番 |
---|---|---|
非同期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 |
6 | v2.2 | AVR64EA28/32/48 AVR_DUnn |
tinyAVR-2が、tinyAVR-0/1とは EVSYS非互換であることに注意。
この世代では事象チャネルに非同期型と同期型で明確な区別があり、分けて扱う必要がある。 事象使用部にも非同期型と同期型があり、同期使用部は非同期事象を受け取ることが出来ない。 非同期使用部はどちらの種別も受け取ることが出来る。
同期と非同期の区別は、事象処理に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をひとつ消費する。
v2.0と v2.1には追加された事象以外に機能的な差はないが、 megaAVR-0 とそれ以外とでレジスタ名称が異なる。 以下では後発世代の記述を範として次のように読み替える。
- 名称が違う=IOレジスタ番地が違うためもあるが、実現される機能は同一である。
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 | 同期型 |
事象イベントに同期・非同期の区別はあるが、生成部-使用部の接続に制約はない。 異種接続はあいだに同期化回路が暗黙の内に挿入され、 故に使用部への事象到着は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%のクロックレベル信号。
v2.2(AVR_EA)ではRTC_PIT*
とPORT_PIN*
が全て削除され、EventGeneretorが導入された。
レジスタ名 | 型 | レジスタ名 | 型 | レジスタ名 | 型 | ||
---|---|---|---|---|---|---|---|
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サイクル内で)事象検出する。ただし計数の確実さは計時器駆動サイクルに依存。
ほとんどv2.1を継承しているが、事象チャネル生成部からRTC_PIT*
とPORT_PIN*
が全て削除され、EventGeneretorが導入された。
削除された事象に代わり以下が追加され、これに伴って全てのチャネルで機能が統一され、参照番号も全て振り直されている。
置き換えられた事象 | ||
---|---|---|
RTC_PITEV0 | RTC_PITEV1 | *AVR_EA/EB |
RTC_EVGEN0 | RTC_EVGEN1 | *AVR_DU |
PORTA_EV0 | PORTA_EV1 | |
PORTB_EV0 | PORTB_EV1 | |
PORTC_EV0 | PORTC_EV1 | |
PORTD_EV0 | PORTD_EV1 | |
PORTE_EV0 | PORTE_EV1 | |
PORTF_EV0 | PORTF_EV1 |
これらは新設されたRTC_PITEVGENCTRLA
およびPORTxEVGENCTRL
レジスタに接続され、そちらで周波数選択およびピン番号を指定するようになった。要約すると、
- 全ての事象チャネルは同等となり、機能によって番号を使い分ける必要はなくなった。
- 各々は最大でも
EV0
とEV1
のふたつしか指定できなくなった。旧来に比べてRTC_PIT同時使用数は半減、PORT_PINは同時使用数が1/4に制限されたことになる。 - チャネル間の差異がなくなったことに伴い、
EVSYS_CHANNEL[n]_***_gc
は全てEVSYS_CHANNEL_***_gc
に改名・統一された。 - AVR_EA/EBの
RTC_PITEVn
は、AVR_DUではRTC_EVGENn
に改名された。
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から | |
AVR_EA | ||||
AC0_OUT | AC1_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から |
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(ポート多重器)は旧世代AVRにはなかった周辺機能のひとつだ。 これはマルチプレクサ/セレクタの集合で、 周辺機能と外部端子との内部配線を受け持つ。 代替配線先は事前に決められており、 クロスバー機構のような自由度はない。 周辺機能によって端子個別切替と PORT群単位切替とがある。
PORTMUX機能は EVSYS事象システムと密な関係にあり、 以下の2世代3種に分けることが出来る。
tinyAVR-0/1 | megaAVR-0 tinyAVR-2 AVR_DA/DB/EA | AVR_DD |
---|---|---|
v1 | v2 | v2' |
v1/v2間は IOレジスタ名が異なり、EVOUTnの制御仕様も異なる。
AVR_DDは AVR_DBがベースだが独自の拡張がある。
v1 | v2 |
---|---|
CTRLA | EVSYSROUTEA と CCLROUTEA |
CTRLB | USARTROUTEA と SPIROUTEA と TWIROUTEA |
CTRLC | TCAROUTEA |
CTRLD | TCBROUTEA |
CTRLC は TCA0_WOn信号端子出力個別の有効・無効制御ビット。
tinyAVR-0/1/2以外の TCAROUTEA は TCA0_WOn 全体の対応 PORT群切替で、機能が違う。(制御互換性なし)
各種の内部割込みや事象信号を外部端子に直接出力できる EVSYSの機能。
- 信号名は 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。
- EVSYSROUTEAの該当ビット0で PIN2を既定選択、1で PIN7を代替選択。
- EVSYSチャネル選択で EVOUTnに事象配送すると有効化され、
PORT出力設定を覆す。(push-pull)
- EVSYSチャネル選択で EVOUTnに事象配送すると有効化され、
機能 | 代替 | 出力 | 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は存在しないので無効。
機能 | 代替 | 出力 | 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機能と排他。
機能 | 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 AVR_EA28/32/48 |
CCL0 | PA0 | PA1 | - | - | - | ○ | × | × | × | × | × | × | AVR_DD14 |
CCL1 | PC0 | PC1 | PC2 | PC3 | PC6 | × | × | × | × | ○ | ○ | ○ | ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
CCL1 | PC0 | PC1 | PC2 | PC3 | - | ○ | ○ | ○ | ○ | × | × | × | ATmega808/1608/3208/4808 AVR_DA28/32 AVR_DB28/32 AVR_DD14/20/28/32 AVR_EA28/32 |
CCL2 | PD0 | PD1 | PD2 | PD3 | PD6 | × | × | ○ | ○ | ○ | ○ | ○ | ATmega808/1608/3208/4808 ATmega809/1609/3209/4809 AVR_DA28/32/48/64 AVR_EA28/32/48 |
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 AVR_EA32/48 |
CCL3 | PF0 | PF1 | - | - | PF6 | ○ | ○ | ○ | × | × | × | × | ATmega808/1608/3208/4808 AVR_DA/DB28 AVR_EA28 |
CCL4 | PB0 | PB1 | PB2 | PB3 | PB6 | × | × | × | × | × | ○ | ○ | AVR_DA/DB64 AVR_DA/DB48 AVR_EA48 |
CCL5 | PG0 | PG1 | PG2 | PG3 | PG6 | × | × | × | × | × | ○ | ○ | AVR_DA/DB64 AVR_DA/DB48 AVR_EA48 |
代替設定で切り替えられるのは 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機能と排他。
機能 | 代替 | 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 | PC3 | × | ○ | ○ | ○ | 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 AVR_EA28/32/48 |
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 2 AVR_EA28/32/48 |
USART0 | ALT2 | PA2 | PA3 | - | - | × | ○ | ○ | ○ | × | ○ | × | AVR_DD20/28/32 AVR_EA28/32/48 |
USART0 | ALT3 | PD4 | PD5 | PD6 | PD7 | ○ | ○ | ○ | ○ | × | ○ | × | AVR_DD14/20/28/32 AVR_EA28/32/48 |
USART0 | ALT4 | PC1 | PC2 | PC3 | - | ○ | ○ | ○ | ○ | × | ○ | × | AVR_DD14/20/28/32 AVR_EA28/32/48 |
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 AVR_EA28/32/48 |
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 AVR_EA48 |
USART1 | ALT1 | PC4 | PC5 | -** | - | × | × | × | × | ○ | × | × | ATmega4809(d) |
USART1 | ALT2 | PD6 | PD7 | - | - | ○ | ○ | ○ | ○ | × | ○ | × | AVR_DD14/20/28/32 AVR_EA28/32/48 |
機能 | 代替 | 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 AVR_EA32/48 |
USART2 | DEFAULT | PF0 | PF1 | - | - | × | × | ○ | × | × | × | × | ATmega808/1608/3208/4808(d) AVR_DA28 AVR_DB28 AVR_EA28 |
USART2 | ALT1 | PF4 | PF5 | - | - | × | × | × | ○ | ○ | ○ | ○ | AVR_DA32/48/64 AVR_DB32/48/64 AVR_EA32/48 |
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は送信有効時のみで使われ、 未動作または無効時は使用されないため空き端子は他の用途に用いても良い。
- AVR_DD14/20 では
PC0
端子が欠けているため複数USART同時使用には制約がある。 これについては [Special_AVR_DD14]が詳しい。
機能 | 代替 | 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 AVR_EA28/32/48 |
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 AVR_EA48 |
SPI0 | ALT3 | PA0 | PA1 | PC0 | PC1 | × | × | ○ | ○ | × | ○ | × | AVR_DD28/32 AVR_EA28/32/48 |
SPI0 | ALT3 | PA0 | PA1 | - | PC1 | ○ | ○ | × | × | × | × | × | AVR_DD14/20 |
SPI0 | ALT4 | PD4 | PD5 | PD6 | PD7 | ○ | ○ | ○ | ○ | × | ○ | × | AVR_DD14/20/28/32 AVR_EA28/32/48 |
SPI0 | ALT5 | PC0 | PC1 | PC2 | PC3 | × | × | ○ | ○ | × | ○ | × | AVR_DD28/32 AVR_EA28/32/48 |
SPI0 | ALT5 | - | PC1 | PC2 | PC3 | ○ | ○ | × | × | × | × | × | AVR_DD14/20 |
SPI0 | ALT6 | PC1 | PC2 | PC3 | PF7 | ○ | ○ | ○ | ○ | × | ○ | × | AVR_DD14/20/28/32 AVR_EA28/32/48 |
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方向が主装置動作、従装置動作の何れかを決定する。
機能 | 代替 | 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 AVR_EA28/32/48 |
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 AVR_EA28/32 |
TWI0 | ALT1 | PA2 | PA3 | PC6 | PC7 | × | × | × | × | × | ○ | ○ | AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
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 AVR_EA28/32 |
TWI0 | ALT2 | PC2 | PC3 | PC6 | PC7 | × | × | × | × | × | ○ | ○ | AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
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種。
機能 | 代替 | 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 AVR_EA28/32/48 |
TCA0 | DEFAULT | PA0 | PA1 | - | - | - | - | ○ | × | × | × | × | × | × | AVR_DD14 |
TCA0 | ALT1 | PB0 | PB1 | PB2 | PB3 | PB4 | PB5 | × | × | × | × | ○ | × | ○ | ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
TCA0 | ALT2 | PC0 | PC1 | PC2 | PC3 | PC4 | PC5 | × | × | × | × | ○ | ○ | ○ | ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
TCA0 | ALT2 | PC0 | PC1 | PC2 | PC3 | - | - | × | × | ○ | ○ | × | × | × | ATmega808/1608/3208/4808 AVR_DA28/32 AVR_DB28/32 AVR_DD28/32 AVR_EA28/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 AVR_EA28/32/48 |
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 | ALT4 | PE0 | PE1 | PE2 | PE3 | - | - | × | × | × | × | × | ○ | × | AVR_EA48 |
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 AVR_EA32/48 |
TCA0 | ALT5 | PF0 | PF1 | - | - | - | - | × | × | ○ | × | × | × | × | ATmega808/1608/3208/4808 AVR_DA28 AVR_DB28 AVR_DD28 AVR_EA28 |
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 AVR_EA48 |
TCA1 | ALT1 | PC4 | PC5 | PC6 | - | - | - | × | × | × | × | × | ○ | ○ | AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
TCA1 | ALT2 | PE4 | PE5 | PE6 | - | - | - | × | × | × | × | × | × | ○ | AVR_DA64 AVR_DB64 |
TCA1 | ALT2 | PA4 | PA5 | PA6 | - | - | - | × | × | × | ○ | ○ | ○ | × | AVR_EA28/32/48 |
TCA1 | ALT3 | PG0 | PG1 | PG2 | PG3 | PG4 | PG5 | × | × | × | × | × | × | ○ | AVR_DA64 AVR_DB64 |
TCA1 | ALT3 | PD4 | PD5 | PD6 | - | - | - | × | × | × | ○ | ○ | ○ | × | AVR_EA28/32/48 |
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増し相当にすることができる。
機能 | 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 AVR_EA48 |
TCB0 | PA2 | PF4 | × | × | × | ○ | × | × | × | ATmega808/1608/3208/4808 AVR_DA32 AVR_DB32 AVR_DD32 AVR_EA32 |
TCB0 | PA2 | - | × | ○ | ○ | × | × | × | × | ATmega808/1608/3208/4808 AVR_DA28 AVR_DB28 AVR_DD20/28 AVR_EA28 |
TCB1 | PA3 | PF5 | × | × | × | × | ○ | ○ | ○ | ATmega809/1609/3209/4809 AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
TCB1 | PA3 | PF5 | × | × | × | ○ | × | × | × | ATmega808/1608/3208/4808 AVR_DA32 AVR_DB32 AVR_DD32 AVR_EA32 |
TCB1 | PA3 | - | × | ○ | ○ | × | × | × | × | ATmega808/1608/3208/4808 AVR_DA28 AVR_DB28 AVR_DD20/28 AVR_EA28 |
TCB2 | PC0 | PB4 | × | × | × | × | × | ○ | ○ | ATmega809/1609/3209/4809(q) AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
TCB2 | PC0 | - | × | × | ○ | ○ | ○ | × | × | ATmega4809(d) ATmega808/1608/3208/4808 AVR_DA28/32 AVR_DB28/32 AVR_DD28/32 AVR_EA28/32 |
TCB3 | PB5 | PC2 | × | × | × | × | × | ○ | ○ | ATmega809/1609/3209/4809(q) AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
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信号を転送できる。
機能 | 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 動作まで増速できる。
機能 | 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 AVR_EA48 |
AC0 | PD2 | PD3 | - | PD0 | - | PD7 | PD6 | PA7 | - | ○ | ○ | × | × | × | AVR_DA28/32 AVR_DB28/32 AVR_EA28/32 |
AC1 | PD2 | PD5 | PD3 | PD0 | PD4 | PD7 | PD6 | PA7 | PC6 | × | × | × | ○ | ○ | AVR_DA48/64 AVR_DB48/64 AVR_EA48 |
AC1 | PD2 | PD5 | PD3 | PD0 | PD4 | PD7 | PD6 | PA7 | - | ○ | ○ | × | × | × | AVR_DA28/32 AVR_DB28/32 AVR_EA28/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)に使用可能。
機能 | 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 AVR_EA32/48 |
ADC0 | PD1 | PD2 | PD3 | PD4 | PD5 | PD6 | PD7 | PF0 | PF1 | - | - | - | - | PA2 | PA3 | PA4 | PA5 | PA6 | PA7 | PC0 | PC1 | PC2 | PC3 | × | × | ○ | × | AVR_DD28 AVR_EA28 |
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)
機能 | 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 AVR_EA28/32/48 |
DAC機能は tinyAVR-0/2 と megaAVR-0 にはない。
DAC0 だけが OUT端子を持つ。DAC1/2に外部端子割当はない。
機能 | 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を専有。
機能 | 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にチップ外から供給して復電圧動作を補助しても良い。
機能 | 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 | PD7 | PA7 | PF0 | PF1 | PA0 | PA1 | |
AVR_EA | - | PF7 | PF6 | PA0 | PD7 | 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相当を増やす。
なお tinyAVRは各PORTのPIN2及びPIN6は非同期割込対応(CLK_PER非依存)である。 このため割込を許可する以前に、割込許可ビットが立っている場合がある。 従って割込許可前に許可ビットをクリアしないと意図しない割込が発生する場合がある。
例えば外部PUがなく内蔵PUを使用してかつLOWレベル割込とした場合、プルアップ設定以前のPOR時点で既に割込発生条件を満たしていることになり、INTCTRLをセットしてCLIすると同時に初回割込が発生してしまう。
- 浮動小数点演算、除算を避ける。
- 論外。
- 32bit変数操作を避ける。
- RMW(Read-Modify-Write)に伴う PUSH/POP/演算操作コストが重い。(8bit幅の12倍、16bit幅の4倍程度)
- 長時間タイマー計数/計時/捕獲は、32bit連結 TCB対応品種なら効率よく実装できる。
- 汎用GPIORレジスタを活用する。
- ビットフラグRMWに長ける。
- アセンブラ記述の活用。
- 特にシビアな条件下では不可避。
旧世代での 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コードが単純になる。(無限ループで良い)
Twitter(X): @askn37
BlueSky Social: @multix.jp
GitHub: https://github.com/askn37/
Product: https://askn37.github.io/
Copyright (c) 2022,2023 askn (K.Sato) multix.jp
Released under the MIT license
https://opensource.org/licenses/mit-license.php
https://www.oshwa.org/
multix.jp/てくにかるむ(休眠中)
Multix Zinnia Product SDK [*AVR]
AVR.JP(日本語訳)
AVR-LIBC(日本語訳)