しばらく見ないうちに、Microchip Curiosity Nano Evalution Kit の種類がずいぶん増えていた。まあ増えた種類の多くは PIC版だし、自分の購入対象は AVR8シリーズ中心なのだけどいま何を持ってて、何が手元にないのか判らなくなってるので、ちょっとリストアップしてみる。
概要
一連の Curiosity Nano シリーズのうち AVR8系は、Atmel Xplained シリーズの後継という位置付けだ。Xplained には Nano/Mini/Pro というファミリー展開があり、流通価格も3000円台から3万円台と雑多だったが、Curiosity Nano の場合は Mikrobus などの統一規格拡張基板に差し替えて載せられるよう、MPU+USBデバッガー部分だけを Evalution Kit シリーズに分離して低価格を維持している。純正 Arduino が結構高価になった一方で、円安が進んだ今でも1個税抜2000円前後という Evalution Kit はなかなか有難い存在だ。
要約
以下に AVR8系に限った Evalution Kit の簡単な一覧を示す。この表は MPU プログラミングするのに必要な視点からまとめている。Atmel社時代最後期以降の MPU品種しかないことに注意。
| Model | USB | MHz | USART | TX | RX | LED0 | SW0 | MFR |
|---|---|---|---|---|---|---|---|---|
| ATtiny1607 | Micro-B | 10/20 | 0 def | PB2 | PB3 | PB7 | PC4 | DM080103 |
| ATtiny1627 | Micro-B | 10/20 | 0 def | PB2 | PB3 | PB7 | PC4 | DM080104 EOL |
| ATtiny3217 | Micro-B | 10/20 | 0 def | PB2 | PB3 | PA3 | PB7 | EV50J96A |
| ATtiny3227 | USB-C | 10/20 | 0 def | PB2 | PB3 | PB7 | PC4 | EV58A83A |
| ATmega4809 | Micro-B | 10/20 | 3 def | PB0 | PB1 | PF5 | PF6 | DM320115 |
| AVR128DA48 | Micro-B | 24 | 1 def | PC0 | PC1 | PC6 | PC7 | DM164151 |
| AVR128DB48 | Micro-B | 24 | 3 def | PB0 | PB1 | PB3 | PB2 | EV35L43A |
| AVR64DD32 | Micro-B | 24 | 0 alt3 | PD4 | PD5 | PF5 | PF6 | EV72Y42A |
| AVR64DU32 | USB-C | 24 | 1 alt2 | PD6 | PD7 | PF2 | PF6 | EV59F82A |
| AVR64EA48 | Micro-B | 10/20 | 1 def | PC0 | PC1 | PB3 | PB2 | EV66E56A |
| AVR16EB32 | USB-C | 10/20 | 0 alt4 | PC1 | PC2 | PF5 | PF6 | EV73J36A |
| AVR32LA32 | USB-C | 10/20 | 0 alt4 | PC1 | PC2 | PF5 | PC0 | EV24D63A |
| AVR32SD32 | USB-C | 20 | 0 alt3 | PD4 | PD5 | PF5 | PF2 | EV75S16A |
以下補足。
- MFR : Mouser や DigiKey の商品検索で使う Microchip社の型番。リンク先は Microchip社直販頁。
- Model : 搭載している MPU の型番。
- USB : デバッガーポートのレセプタクル形式。
- MHz : 最大動作周波数。10/20 と書いてあるのはそれぞれ動作電圧が 3.3V / 5V での最大保証速度。
- USART : デバッガーの USB-CDC と繋がっている USART周辺機能の番号。def と altN は PORTMUX代替機能の選択肢。
- TX,RX : USART周辺機能 の(MPU側)TX,RX ポートピン番号。
- LED0 : LED0インジケータに繋がっているポートピン番号。
- SW0 : SW0押釦に繋がっているポートピン番号。
tinyAVR-0 ファミリ - ATtiny1607 (DM080103)
tinyAVR-0 ファミリは modernAVR系統では一番古く低機能で、いまさら新規開発で選ぶ価値は薄い。最小8pinから用意されているのに DIP外囲器がないため一般個人客には馴染みがなかった。
ローエンドAVRで CCL が初めて採用されたファミリでもある。この時点ではまだ原始的な実装だが、元を辿れば Microchip 社の技術なので、すでに技術交流があったことを匂わせる。
LED0=PB7 は EVOUTB 出力に使えるので、EVSYSに出ている各種信号を PORTMUXでリダイレクトして外部観測するのに適している。
SW0=PC4 は LUT1_IN1 入力に使えるが、ハードウェアリセットには使えない。MPUリセットに使うにはソフトウェア割込をプログラムするしかない。かたや LUT1_IN1入力を CCL回路構成に繋げることで、チャタリングを除去したり、割込ベクタをトリガーできるのは便利である。
tinyAVR-1 ファミリ - ATtiny3217 (EV50J96A)
tinyAVR-1 ファミリは tinyAVR-0 ファミリの機能強化版で、QT-Touch(PTC、静電容量タッチパネル)にも対応している。
LED0=PA3 は TCA0_WO3、TCB1_WO、SPI0_SCK、USART0_XCK、EXTCLK の各出力に対応できる。もっとも LED0 の負荷に引っ張られて波形が鈍るため、SCK や EXTCLK の立場からすると好ましくない。
SW0=PC4 については前述通り。
tinyAVR-2 ファミリ - ATtiny1627 (EV50J96A) ATtiny3227 (EV58A83A)
tinyAVR-2 ファミリは ATtiny系列の最終形で、少ピンの割に2個目のハードウェアUSART(USART1)を持っているのが最大の利点。また 8pin 以下のパッケージが存在しないかわり、PB4 にハードウェアリセットを割り付けることができる。tinyAVR-0/1 ファミリはハードウェアリセットが UPDI(PA0)プログラムポートと排他になっている制約があった。
この制約を解消するために外部回路から UPDIコマンドを送信して強制リセットする方法がある。
CCL実装はかなり洗練され、以後のファミリの土台になっている。
Micro-B レセプタクルの EV50J96A はすでに EOLになっており、USB-C レセプタクルの EV58A83A に置き換えられた。フラッシュ容量も倍になったので悪い話ではない。
LED0=PB7、SW0=PC4 については前述通り。
megaAVR-0 ファミリ - ATmega4809 (DM320115)
megaAVR-0 ファミリは ATmega系列の最終形で、Arduino-IDE が標準で対応している最後の Atmel ATmega だ。
これに対応するがために他の ATmega用とは異なる AVR-GCC と AVRDUDE のバージョンを専用に用意していたりする。それを使えばそれ以前の ATtiny/ATmega に対応できるにも関わらず、である。おそらく専用ライブラリの C/C++ バージョン違い対応を分離したかっただろうと思われるが。
LED0=PF5 は TCA0_WO5 あるいは TCB1_WO 出力にも使える。EVOUTn でも LUT_OUTn でもないので、あまり有り難くはない。
SW0=PF6 は、ハードウェアリセットにも使える。LUT入力には繋がっていないので、自前のCCL回路でチャタリング除去をできたりはしない。
AVR_DA ファミリ - AVR128DA48 (DM164151)
AVR_DA ファミリは Microchip 社体制になって最初の AVR8 で、大容量フラッシュ/多ピン外囲器/QT-Touch対応を特徴とする。またこれ以後は PIC に倣って、ほぼ全てのファミリで 28pin DIP外囲器が用意されるようになり同容量の旧 ATmega の半額以下という流通価格で、個人趣味でも手を出しやすくなった。そしてまたAVRでありながら Atmel社のロゴマークを外囲器に刻印しなくなったのも、ここからである。
余談だが、ここから始まる AVR_Dx シリーズは最大動作保証周波数が 24MHz なのだが、実は 32MHz オーバークロックで動かすこともできる。
LED0=PC6 は TCA1_WO2、TCB4_WO、LUT1_OUT 出力に使える。
EVOUTn ほどではないが LUT1 経由でさまざまな信号を出すことができる。
SW0=PC7 は、困ったことに単なるスイッチ入力機能しかなく、それでいて遥かに多様な信号出力対応機能が多いという、実に残念な子である。そのせいか PC7 を SW0 に使ってしまったのは DM164151 だけである。
最近になって AVR128DA48S といった S 枝番付きのチップが追加されたが、
これは AVR_EB ファミリ以降で追加された、耐タンパー性能強化機能(PDICFG)対応バージョンである。
プログラムが正しく機能していない状態で不用意にこれを機能させると完全に文鎮化するので、一般個人開発者は決して触れない方が良い。
AVR_DB ファミリ - AVR128DB48 (EV35L43A)
AVR_DB ファミリは AVR_DA のポートD群を複電圧(MVIO)対応にしたものだ。代わりに QT-Touch 機能は削除され、PD0に対応するピンが第二のVDDIOに変更されている。つまり GPIOピンが一本少ない。そのため DM164151 と一見同じ外観ながら、EV35L43A は全く別の基板設計になっている。
LED=PB3 は TCA0_WO3、TCA1_WO3、LUT4_OUT 出力として利用できる。
SW0=PB2 はハードウェアリセットには使えないが、LUT4_IN2 入力に使える。それが最大の利点で、CCL回路構成でチャタリングを除去したり、割込ベクタをトリガーできる。
AVR_DD ファミリ - AVR64DD32 (EV72Y42A)
AVR_DD ファミリは、AVR_DB の少ピン小型外囲器版だ。旧 ATtiny に近い位置付けだが、ポートC群に対する複電圧に対応しているぶん、ただでさえ少ないピン数のうちさらに少ない GPIOしか持ってないので高機能の割に旧 ATtiny の担った役割を完全に置き換えられるわけではない。かなり吟味して使い所を選ぶという、なかなか微妙な立ち位置にあるファミリである。
LED0=PF5 は TCA0_WO5、TCB1_WO 出力として使える。EVOUTn でも LUT_OUTn でもないので、あまり有り難くはない。
SW0=PF6 は入力専用で、ハードウェアリセットを設定できる。この一点では使いやすい。しかし LUT入力には繋がっていないので、自前のCCL回路でチャタリング除去をできたりはしない。
AVR_DU ファミリ - AVR64DU32 (EV59F82A)
AVR_DU ファミリは、新世代の modernAVR系統で唯一、USB2.0周辺機能を持っている。かつ SSOP 14-pin 外囲器や、3x3mm角の VQFP 20-PIN 外囲器が用意されていてかなり小さい基板が作れる。同格のチップは旧 ATmega はおろか PICファミリにも見られない稀有なものだ。USB周辺機能実装の先祖は ATXmegaU4 ファミリのようで、Arduino でも使われる ATmega328U32 とはコード互換性がない。
その特徴から、EV59F82A には 2個の USB-Cポートが備わっている。つまり USB-CDC も使えるプログラミング・デバッグポートと別に、AVR64DU32 直結のアプリケーション応用ポートがある。このため EV59F82A は、Curiosity Nano シリーズ中でも際立って興味深い存在になっている。
その他 PDCFGにも対応する。
USB周辺機能は独立した内蔵LDOと PLLによる強制48MHzで駆動するため、MPU本体は 1MHz程度で動かしても全く問題がない。唯一の制約は 3.3V以上の動作電圧を MPU本体に加えなければならないことだけだ。USB周辺回路を完全に止めれば 1.8Vで駆動しても良い。
LDE0=PF2 は EVOUTF 出力に使えるので、EVSYSに出ている各種信号を PORTMUXでリダイレクトして外部観測するのに適している。
SW0=PF6 は入力専用で、ハードウェアリセットを設定できる。この一点では使いやすい。しかしLUT入力には繋がっていないので、自前のCCL回路でチャタリング除去をできたりはしない。
AVR_EA ファミリ - AVR64EA48 (EV66E56A)
AVR_EAファミリは、AVR_Dx の内蔵周波数発振器を megaAVR-0 と同等の 10Mhz/20Mhz 切替型に変更したものだ。これは消費電力の削減に効果があるものの、最大動作電圧によって保証される最大動作周波数が制限される短所がある。一方で周辺機能では特に PORTMUX を強化しているものの、全体的には尖った特徴がなく、使い所がよくわからない性質のファミリだ。
LED0=PB3 は、TCA0_WO3、TCA1_WO3 出力に使える。EVOUTn でも LUT_OUTn でもないので、あまり有り難くはない。
SW0=PB2 は、スイッチ入力用に使うには惜しいことに EVOUTB 出力を隠している。これはハードウェアリセットも LUT入力もないピンなので AVR_EA 自体の存在意義がわからないこともあって明白な欠点だ。
EV66E56A は新しいチップの割に USBデバッグポートが時代遅れの Micro-B であることからも察せられるが、あまり積極的に購入する商材という気はしない。
AVR_EB ファミリ - AVR16EB32 (EV73J36A)
AVR_EBファミリは、AVR_EAファミリの ATtiny に相当する商品展開で、14から32ピンの小外囲器が用意されたファミリとなる。一方で今まで当たり前に存在していたTCA計数機能がなく、代わりに新しく設計されたTCE計数機を持っている。これはカゴ型三相交流電動機の VVVF制御などを目的に設計されている。EVSYSも大幅に設計変更され、使い勝手が全く変わった。その他 PDCFGにも対応する。
LED0=PF5 は TCE0_WO5、TCB1_WO 出力として使える。EVOUTn でも LUT_OUTn でもないので、あまり有り難くはない。
SW0=PF6 は入力専用で、ハードウェアリセットを設定できる。この一点では使いやすい。しかしLUT入力には繋がっていないので、自前のCCL回路でチャタリング除去をできたりはしない。
AVR_LA ファミリ - AVR32LA32 (EV24D63A)
AVR_LA ファミリは AVR_EBファミリ(EAではない)をベースにした亜種で、一部機能の代わりに QT-Touch対応(PTC)を加えたものだ。最大の特徴は最低動作電圧を従来の1.8Vから1.62Vに減らしたことで、より低い消費電力動作に対応している。その他 PDCFGにも対応する。
LED0=PF5 は TCE0_WO5、TCB1_WO 出力として使える。EVOUTn でも LUT_OUTn でもないので、あまり有り難くはない。
SW0 は EV73J36A での PF6から PC0に変更(SW0=PC0)されている。ハードウェアリセットには対応しない代わりに LUT1_IN0 入力が使用できるので自前のCCL回路でのチャタリング除去や、イベントトリガー入力に使うことができる。
AVR_SD ファミリ - AVR32SD32 (EV75S16A)
AVR_SDファミリは AVR_DBから派生して、ECC付きフラッシュメモリと、相互監視二重動作CPUを備えた宇宙機向けの高放射線耐性チップだ。ポートC群の複電圧対応と、20/28/32/48-pin の外囲器が用意されている。最低動作電圧2.7V以上の全動作電圧範囲で動作周波数 20MHzを保証する。その他 PDCFGにも対応する。
LED0=PF5 は TCA0_WO5、TCB1_WO 出力として使える。EVOUTn でも LUT_OUTn でもないので、あまり有り難くはない。
SW0=PF2 は、スイッチ入力用に使うには惜しいことに EVOUTF 出力を隠している。ハードウェアリセットにも対応しない代わりに LUT3_IN2 入力が使用できるので自前のCCL回路でのチャタリング除去や、イベントトリガー入力に使うことができる。
まとめ
用途にもよるのだが、まず一つ購入してみたいとするならどれを選ぶのが良いか。
- USB応用デバイスを開発するならコレ一択。
- -> AVR64DU32 (EV59F82A)
- 人工衛星関係に使いたいならコレ一択。
- -> AVR32SD32 (EV75S16A)
- いまどき USB Micro-B なんか使いたくない。
- -> ATtiny3227 (EV58A83A) 複数UART
- -> AVR64DU32 (EV59F82A) USB対応
- -> AVR16EB32 (EV73J36A) 電動機制御が得意
- -> AVR32LA32 (EV24D63A) 省電力用途
- -> AVR32SD32 (EV75S16A) 複電圧対応 高放射線対応
- GPIOや UARTをたくさん使いたいなら 48pin タイプ。
- -> ATmega4809 (DM320115)
- -> AVR128DA48 (DM164151)
- -> AVR128DB48 (EV35L43A) 複電圧対応
- -> AVR64EA48 (EV66E56A)
- 主動作電圧と違う異電圧回路と UART/SPI/I2C を繋ぎたいなら、複電圧対応タイプ。
- -> AVR128DB48 (EV35L43A) 48pinタイプ
- -> AVR64DD32 (EV72Y42A)
- -> AVR32SD32 (EV75S16A)
- カゴ型三相交流電動機の VVVF制御などに使いたい。
- -> AVR16EB32 (EV73J36A)
- 静電容量タッチパネル入力検出に使いたいなら PTC(QT-Touch)対応タイプ。
- -> ATtiny3217 (EV50J96A)
- -> AVR128DA48 (DM164151)
- -> AVR32LA32 (EV24D63A)
- 最終的にはできるだけ小さな基板にしたいが、まずはピン数の多い上位チップで動作検証してみたい。
- -> ATtiny3217 (EV50J96A) 8pinアリ PTC対応
- -> ATtiny3227 (EV58A83A) 複数UART
- -> AVR64DD32 (EV72Y42A) 複電圧対応
- -> AVR64DU32 (EV59F82A) USB対応
- -> AVR16EB32 (EV73J36A) 電動機制御が得意
- -> AVR32LA32 (EV24D63A) 省電力用途
- -> AVR32SD32 (EV75S16A) 複電圧対応 高放射線対応
サーボ制御用途では、1個の MPUで複数サーボを頑張って同時制御するより、安価で小さなMPUを多数使って1個1台制御とし、I2Cや高速SPIを経由して中央MPU(パソコンでも良い)で統合するほうがスケーリングしやすい設計になる。熱電対のようなADC性能が必要なセンサー系も同様だ。つまり一つの機能は扱いやすいAssy単位に切り分けるという思想で、今時の自動車や航空機ではそういう実装で数十〜数百個のマイコンを当たり前のように使いわけている。修理やメンテナンスがAssy単位交換になるのは、当然なのだろう。
Copyright and Contact
Twitter(X): @askn37
BlueSky Social: @multix.jp
GitHub: https://github.com/askn37/
Product: https://askn37.github.io/
Copyright (c) askn (K.Sato) multix.jp
Released under the MIT license
https://opensource.org/licenses/mit-license.php
https://www.oshwa.org/