askn が 2026年08月02日15時54分07秒 に編集
初版
タイトルの変更
[modernAVR] AVR32LA32を使ってみる
タグの変更
modernAVR
Microchip
AVR32LA32
メイン画像の変更
記事種類の変更
セットアップや使用方法
Lチカの変更
ライセンスの変更
(MIT) The MIT License
本文の変更
円安が酷いわ部品入手に難儀するわでメイカーフェア向けの頒布計画も棚上げしたままの昨今。それで(病気療養もあって)暫く現場を離れてるうちに、気がついたら modernAVR(8-bit AVRの近代化版)の販売品種数が、Atmel時代の旧世代AVR8を超えるんじゃないかというくらい拡充していた。なかでもMouserを回遊してて吃驚した新製品がこれ。  キミたち今時単価100円切るのか。こりゃ晩秋には秋月電子に並ぶんじゃない? *USB2.0対応AVR DU ファミリとはまた違ったインパクトがあるな。* ### 概要 ということで Microchip直送で [**[EV24D63A - AVR32LA32 Curiosity Nano]**](https://www.microchipdirect.com/dev-tools/EV24D63A) を入手して遊んでみた。まだ国内発売は始まってないが、マルツ等に入荷すれば 2104円(税別)+送料になるはずだ。  ++国内だとCuriosityシリーズ単体は MPUがなんであれ2104円(税別)かそこらなので純正Arduinoに比べると格段に安い。しかもオンボードデバッガー付き。あまりに低廉なのかRISC-V驀地なのか中華パチモノも出てこない。Microchip直販だと 1622円だが、代わりに関税と航空貨物手数料の請求書にブチ刺されるから、大量購入以外じゃ全くお薦めはしない。++ QTouch用のオンボードタッチセンサー領域が搭載されてるのが Curiosity シリーズにしては珍しい。まあ基板サイズ以外のコストUP要因はないからなあコレ。だがいままでは自作するにも基板設計が面倒くさく、試すにももっぱら既製の拡張ボードで対応する他なかったモノが気軽にQTouchライブラリを試せるんだから、識者には魅力的だろう。かたやシルク印刷にミスがあってLEDとSW0が両方PF5と表記されてるが、正しくは LED=PF5、SW0=PC0 だ。PC0はハードリセットボタンには使えないので(一応 LUT1_IN0信号入力ピンなのでチャタリング除去や割込ストローブはできるが)写真ではPF6にタクトスイッチを横付けしている。またUSB-CDCにオンボード結線されているピンは、USART0_ALT4の PC1/2ペアだ。 ++初期状態では3.3V電圧駆動設定で、Lチカ+タッチセンサーデモが書き込まれている。USB-CDC経由115200kbpsで機能選択メニューが表示される。このプログラムの[**プロジェクトはまだ未公開**](https://github.com/orgs/MicrochipTech/repositories)らしい。++ AVR LA ファミリ(恐らくLIN Automotiveに由来)は廉価チップかつ自動車産業が主ターゲットということもあって他品種と異なるのは; - 不揮発メモリ、主クロック回路、TCE計数器などは従前の AVR EB ファミリがベースだが、本製品のターゲット層には性能過剰と判断されたのか 48MHz波形生成機などで回路削減された部分がある。外囲器には EB同様 14/20/28/32ピンが用意されている。勿論 28-DIPもあるよ。(メーカー的に主力製品は VQFNだけど) - AVR EB ファミリベースなので、UARTが1組しかない。だからGPSやRFモデムとの連携には全くもって向いていない。まあ ATmega328P の単一UARTで鍛えられた層なら意に介さないかもしれんが。しかしEBまでの従前のUSARTとは、レジスタマップに互換性がなくてデータシートを二度見した。これは産業用RS485対応とLIN通信機能が強化・改善されたことと引き換えで、それが本製品の目玉だからだろう。いやしかしそれだったら、新旧2組混載のが良かったんじゃ…(従前のRS485制御のXDIR出力には少しクセがあって、アンドキュメントなレジスタビット設定が必要だったりした) - 一般動作電圧が 3.3V、最低動作電圧が 1.65V に低減。もうちょっと頑張って 1.2V まで落ちれば面白かったのに。が、5V対応の太めのプロセスルールを考慮すれば頑張った方だろうか。大人気 ARMや RISC-V生産が得意じゃない製造ラインを活用すればこその低廉価か。 - 前述の通り QTouch 対応。入力が最大20端子あるので単純格子配線なら100ボタン分かな。直近では tinyAVR-1系統と AVR DA系統が最新だったと思うので、久しぶりの新製品、しかも安くて低消費電力。*ATtiny416auto涙目。* ### コードサンプル さて MPLAB X IDE はもちろん新製品にフル対応しているが、しかし当然すぎて面白くない。だいたいHALのせいで単なるLチカでも結構大きなバイナリを吐く。ということで [__MultiX Zinnia Product SDK [modernAVR]__](https://github.com/askn37/multix-zinnia-sdk-modernAVR) を AVR LAファミリ対応に拡充した。Arduino互換ブートローダーももう出来ている。ちなみにまだ対応できていない既発売済 modernAVR 系統は、航空宇宙産業用耐放射性品種 AVR Sx ファミリだけだ。(日本では需要が…ゲフン)  当然 Arduino 互換Lチカはあっさり動く。(出力バイナリは 218 byte) ```cpp void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } ``` ++このSDKは Arduino CLI向けにベアメタルでミニマルな素の AVR-GCC開発の場を提供するのが主軸なので万能HALや Arduino互換APIを標準では備えていないが、幾つかのマクロ関数には互換記述性がある。++ だが PIT計時器割込を使ったりすれば -5mA くらい簡単に消費電力を削減できる。(258 byte) ```cpp void setup (void) { pinMode(LED_BUILTIN, OUTPUT); loop_until_bit_is_clear(RTC_PITSTATUS, RTC_CTRLBUSY_bp); RTC_PITINTCTRL = RTC_PI_bm; RTC_PITCTRLA = RTC_PITEN_bm | RTC_PERIOD_CYC32768_gc; set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); } ISR(RTC_PIT_vect) { RTC_PITINTFLAGS = RTC_PI_bm; digitalWrite(LED_BUILTIN, TOGGLE); } void loop (void) { sleep_cpu(); } ``` ++Arduino流Blinkが CPUフルスロットルでLチカする脳筋ぶりを痛感して頂きたい。++ あるいは2組の計時機能を組み合わせて 0.5Hzの PFM位相差を作り、LEDを美しくホタル明滅させてみたり。(336 byte) ```cpp void setup (void) { pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, TOGGLE); loop_until_bit_is_clear(RTC_PITSTATUS, RTC_CTRLBUSY_bp); RTC_PITINTCTRL = RTC_PI_bm; RTC_PITCTRLA = RTC_PITEN_bm | RTC_PERIOD_CYC128_gc; loop_until_bit_is_clear(RTC_STATUS, RTC_CTRLABUSY_bp); RTC_INTCTRL = RTC_OVF_bm | RTC_CMP_bm; RTC_PER = 254; RTC_CMP = 128; RTC_CTRLA = RTC_RTCEN_bm | RTC_PRESCALER_DIV1_gc | RTC_RUNSTDBY_bm; set_sleep_mode(SLEEP_MODE_STANDBY); sleep_enable(); } ISR(RTC_CNT_vect) { RTC_INTFLAGS = RTC_OVF_bm | RTC_CMP_bm; digitalWrite(LED_BUILTIN, TOGGLE); } ISR(RTC_PIT_vect) { RTC_PITINTFLAGS = RTC_PI_bm; digitalWrite(LED_BUILTIN, TOGGLE); } void loop (void) { sleep_cpu(); } ``` 調子に乗って 512Hz 超低消費電力駆動のサンプルも載せようかと思ったが、オンボードデバッガー付きの開発ボードでは効果を実感しづらいので控えておく。そういう電子玩具向けのは、ベアチップが発売されてからで良いかな? ### まとめ ==毎度のことだがこの Curiosityボードは LED=PF5なのが哀しい。これに内部接続できる周辺機能出力は TCB1WO_ALT1 だけなので応用性が低い。EVOUT対応である PA7/PD2/PD7 、あるいは LUTn_OUT対応ピンのいずれかにLEDを外付けすれば単体でもっと遊べるのにね。ちなみに PF2/3はタッチセンサーパネルに繋がっているので避ける。==