円安が酷いわ部品入手に難儀するわでメイカーフェア向けの頒布計画も棚上げしたままの昨今。それで(病気療養もあって)暫く現場を離れてるうちに、気がついたら modernAVR(8-bit AVRの近代化版)の販売品種数が、Atmel時代の旧世代AVR8を超えるんじゃないかというくらい拡充していた。なかでもMouserを回遊してて吃驚した新製品がこれ。
キミたち今時単価100円切るのか。こりゃ晩秋には秋月電子に並ぶんじゃない? USB2.0対応AVR DU ファミリとはまた違ったインパクトがあるな。
概要
ということで Microchip直送で [EV24D63A - AVR32LA32 Curiosity Nano] を入手して遊んでみた。まだ国内発売は始まってないが、マルツ等に入荷すれば 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で機能選択メニューが表示される。このプログラムのプロジェクトはまだ未公開らしい。
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] を AVR LAファミリ対応に拡充した。Arduino互換ブートローダーももう出来ている。ちなみにまだ対応できていない既発売済 modernAVR 系統は、航空宇宙産業用耐放射性品種 AVR Sx ファミリだけだ。(日本では需要が…ゲフン)
当然 Arduino 互換Lチカはあっさり動く。(出力バイナリは 218 byte)
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)
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)
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はタッチセンサーパネルに繋がっているので避ける。
![[modernAVR] AVR32LA32を使ってみる](https://res.cloudinary.com/elchika/image/upload/t_elchika_article_cover/v1/user/060cd109-19e8-40f6-8046-7d4f29a6d7a6/article/458fafd5-a755-4916-8eef-ff0c762fcfb0/fju7iiukzdlk3ujscgrl.jpg)

-
askn
さんが
前の日曜日の15:54
に
編集
をしました。
(メッセージ: 初版)
ログインしてコメントを投稿する