AVR64DD を Arduino で使ってみるテスト
秋月電子で最近取り扱いが始まった AVR64DD28 を Arduino から使ってみるテスト。
AVR DD シリーズとは
いままでの mega なんとかという名称から変わった AVR の新シリーズです。 (もう Atmel ロゴじゃなくて Microchip ロゴなんだな…)
機能的には DA → DB (拡張版) → DD (ローコスト版) → DU (USB付き) となっています。 DA/DB には 128kiB フラッシュ版がありますが、DD では最大で 64KiB になります。 なんといっても今どき珍しい DIP パッケージ版があるのはアマチュアにはうれしいところです。
動作電圧も 1.8V ~ 5.5V と幅広く、最低の 1.8V でも 24MHz の動作が保障されています。 スリープモード時は 1μA未満になるなど、消費電力が小さいのも特徴です。
PortC はマルチボルテージIO に対応していますので、コアの電圧と異なった電圧の IO を扱うことができます。 (レベルコンバーター内蔵ってことだね) このために、VDDIO2 というピンが出ています。
mega328p より安いので、普通に AVR マイコンを使うならこちらでいいかと思います。
ピン配置
データシートはここになりますね。今でも Preliminary なのはなんでだろう。 https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/AVR64DD32-28-Prelim-DataSheet-DS40002315B.pdf
書き込み方法
最近の AVR の仕様として、UPDI 書き込み機が別途必要です。 どこのご家庭にもある USB-シリアル変換機を使った書き込み機を作るのが簡単かと思います。
自分は昔作った jtag2updi をまだ使っていますが…。
Arduino で使うには
DxCore というライブラリが存在しますので、これを使います。
環境設定の「追加のボードマネージャのURL」に以下の URL を追加します。
http://drazzy.com/package_drazzy.com_index.json
同じ作者の MegaCoreX(mega4809とか) や megaTinyCore(tiny202 とか) を使っている場合には、すでに追加されているかもしれません。
ボードマネージャから DxCore
をインストールします。
ブートローダ
UPDI で直接書き込めるので、ブートローダなしで使えます。 おなじみの Optiboot もありますので、シリアル書き込みをしたい場合にはブートローダを使うこともできます。
ブートローダなしで使用する場合は、「ブートローダ書き込み」は Fuse の書き込みを行うコマンドになります。 とはいえ、ほとんどの設定はバイナリ書き込み時に変更できますので、実際に使うのは BOD の設定を変えるときくらいです。
L チカする
いつものようにサンプルの Blink を使ってみます。
バイナリサイズは 812B と非常に小さいですね。AVR のコンパイラが優秀なのか、他がダメなのか…。
書き込みます。LED_BUILTIN は PA7 になっているので、ここに LED をつなぎます。
まとめ
新 AVR マイコン AVR64DD を Arduino で使う方法を簡単に説明しました。 AVR コアは占有メモリ量が小さいので、思ったよりも大きな物も動かすことができると思います。 完全に mega328p の時代は終わりましたね。