ATmega4809を使ってみる。

先日「Arduino UNO / Nano よりもピン数は欲しいけどなるべく安いマイコンを使いたい」という状況になりました。
そこで価格が安い順に探して目を付けたのがATmega4809
これは Arduino Nano Every にも採用されている、48ピンのAVRマイコンです。

なおNano Everyだとピンヘッダに接続されていない端子が多く、結局Nanoと同じピン数しか配線されていません。
よって今回はATmega4809を素の状態で使うことにします。

基板の準備

とりあえず配線引き出し基板を作って実装しました。
マイコン以外はジャンパー1本とコンデンサ2個だけ。
発振子すらありません(内臓オシレータを使う予定なので)。

ATmega4809の書き込み方法

ところで新たなマイコンを使う場合は書込み手段を整える必要があります。
ATmega4809を含む最近のAVRマイコンは従来のISPではなくUPDI(Unified Program and Debug Interface)というインターフェースでプログラムを書き込む仕様になっています。

UPDIは1本の信号線だけで書込みとデバッグの両方に対応している(当然ですがVCC / GND は別途必要です)、非常にシンプルで便利な仕組みです。

しかし・・・UPDI書込み器を持っていません

そこで下記ブログを参考に簡易的なUPDI書き込み回路を作ってみました。
抵抗とダイオード1本ずつのシンプルな回路です。
https://nemuisan.blog.bai.ne.jp/?eid=239957

PCとはUSBシリアルインターフェースで接続します。
写真のFRISKケースにはUSBシリアル変換ICのFT232RLが入っています。

プログラムの書き込み方法

プログラムは MPLAB IDE X でビルドして*.hex ファイルを作成しておきます。

書込みには avrdude を使用して以下の様に実行しました。

avrdude -v -p atmega4809 -P com8 -c serialupdi -b230400 -U flash:w:A4809_StepperDriver.X.production.hex

各オプションの意味は以下の通りです。

  • -v
     Verbose(詳細表示)モードを指定します。情報が多く表示されます。
  • -p atmega4809
     マイコンの型番を ATmega4809 に指定します。
  • -P com8
     使用するポートを COM8 に指定します。
  • -c serialupdi
     プロトコルを UPDI に指定します。
  • -b230400
     ボーレートを 230400bps に指定します。
  • -U flash:w:XXX.hex
     フラッシュメモリに XXX.hex の内容を書き込みます。

実行後しばらくメッセージが出た後、最後に以下の表示が出れば書き込み完了です。

Writing 332 bytes to flash
Writing | ################################################## | 100% 0.78 s
Reading | ################################################## | 100% 0.16 s
332 bytes of flash verified
Leaving NVM programming mode

Avrdude done.  Thank you.

これで、プログラムの 書き込みと実行 までは問題なく行えました。

しかし、デバッガが使えない・・・

ただし、この簡易UPDIインターフェースでは デバッガが使用できません

せっかくUPDIというシンプルなインターフェースを採用しているので、MPLAB IDE X がUSB-シリアル変換経由でのデバッグをサポートしてくれたら良いのに・・・

少し込み入ったプログラムになると、デバッガが使えないのはかなり厳しいです。

という事で、結局はMPLAB SNAPを購入しました。

最終的には、秋月電子で MPLAB SNAP (¥2,200円)を購入 しました。
これなら書込み/デバッガ両方に対応しています(最初からこうすればよかったのか)。

なおMPLAB SNAPは基板むき出しなのでThingiverse からケースのデータをダウンロードして3Dプリントしました。また触った感じ結構温かいので念のためヒートシンクを貼り付けました。

以上で書き込みとデバッグが可能になりました。
しかし暫く使ってみたところ、もう少し処理能力も欲しくなってきたので結局このマイコンは止めてSTM32F103を使う事にしました・・・(チャンチャン)。

Leave a Reply

Your email address will not be published. Required fields are marked *


*