2018/08/24

ATmega4809(megaAVR0)を試す

Atmel印。 今後貴重になるんだろうか・・・


megaAVR 0という新しいAVRシリーズを試してみた。
 小さいパッケージなのに、UARTが4本もあるのが気になったのがきっかけ。
登場すると噂のArduino Uno Wifi rev2 にも採用されるらしい。

簡単にデータシートを眺めてみると、アーキテクチャはXMEGAシリーズを8ビットMCUとして簡素化したもので、先に登場した新しいAttinyシリーズと共にAVR8Xと呼ばれている。 

個人的にピックアップした特徴
・データメモリ空間(64kB)に統合されたFlashROMとEEPROMアドレス
・RAM 6kB ROM 最大48kB
・デバッグ専用の端子 UPDIを搭載
・優先度付きの割り込み(NMIと2レベル)
・豊富な16ビットタイマ
・16ビット リアルタイムカウンタ(RTC)
・非同期/同期シリアルポート(USART4ch、SPI2ch,TWI2ch)が充実。
・内蔵クロックは20MHzと32kHz(ローパワー用)。 (XMEGAと比較すると簡素化された。 外部クロックは発振器と時計用水晶のみ)
・ADCは10bit 16ch
・内蔵VREF電圧は5種類と多い(0.55V,1.1V,1.5V.2.5V.4.3V)
・DACREFが存在し、8ビットDACを通したVREF電圧を、コンパレータとADC入力で利用できる。
・カスタムロジック(CCL) LUTを4つ内蔵

8bit MCUとしては豊富なRAMを持ち、core independent peripheralを搭載し、割り込みが強化されたことで、デジタルバスを活用した省電力なコントローラーとしてバランスが良い。  今までのクラシックなATmegaで足りないと思っていたものが強化されている。

(新Attinyと比べるとDACが外に出ておらず、タッチ検出ができないなど、アナログ機能が若干削減されている。RAMとROMサイズ、ピン数とで用途を分けているようだ。)

物は試しということで、早速石を入手して遊んでみた。
これだけ積んでいても小ロット単価が328Pより安い。
(2560や644Pなどになると、もう32ビットマイコンのほうが安い領域)

用意した開発環境
・Atmel Studio 7.0
・PICKIT4

 PICKIT4は5月に買っていたが、その頃に比べるとデバイス対応が徐々に進んでいて、最新のユーザーガイドには、各種デバッグインターフェースのピンアサインリストが追加されている。 もちろんUPDIも対応済み。
更にAtmel Studioでもちゃんと使える。 PICは概念になりつつある(?)

 実験用基板はQFNパッケージ用で作成。 デバッグ用のGHコネクタにUPDIとUART0、VDDを引き出し、他にLEDと32.768kHzのXT用パターンとSMDの発振器パターンを載せて最小限の構成とした。 リセット端子も、GPIOとして利用できる。マイコン動作に必要な受動部品は3つのバイパスコンデンサのみということになる。
 パッケージの外周に1mmピッチの手半田用パターンを設けているので、後で好きなように引き出せる。


試作基板は5x5cm角としては面積が余ったので、いくつかSHコネクタ用のパターンと、SPIROMパターン、PICKIT4の端子変換基板を相乗りさせている。 各パターンは、自前のPCBカッター(HOZAN)で切り出し加工した。

PICKIT用変換基板




UPDI


PICKIT4とは、UPDIで接続する。 1-Wireの半二重UARTプロトコルなので、必要な結線はVDD,GND,UPDIの三本だけだ。 (VDDは書き込みの際にターゲット電源を認識する関係で必要だが、電源供給はしない様子) 結線が圧倒的に楽になった。

Atmel Studio上での読み出し結果

Atmel Studio上でLチカも完了。 GPIOマクロはXMEGA用なのでちょっと戸惑った。
 メインクロックには水晶を使えないけれど、内蔵の20MHzオシレーターを最大で64分周することができる。 20MHz動作は動作電圧が4.5V以上でないとデータシート上は保証されていないため、3.3V固定で使うなら2分周して10MHzすると良さそう。 5MHz動作なら1.8Vまで保証されているので、乾電池運用にちょうどよい。

Lチカ

MPLABでAVR開発を試す


 最近アップデートされたMPLABX 5.0も、ベータ版ではあるがAVRをプログラミングできるようになった。
 XC8もAVR対応が始まっており、2.0からベータ対応が始まっている。ただ、まだXC8 2.0でコンパイルすると、実機に書き込んだ後で挙動がおかしくなる。
 プロジェクト設定からAtmel Studioでインストールしたコンパイラを選択した場合は実機が正常に動作するので、しばらくアップデート待ちのようだ。