ATmega4809

こんにちは!xsuzです。

最近は鳥人間関係で忙しくてなかなか更新できませんでした。忙しいのはまだまだ続きそうですが、少しずつこのブログ更新していきたいと思います。

今回はマイコンATmega4809についての紹介記事です。


ATmega4809とは

Atmega4809とは2018年に登場した比較的新しいAVRマイコンです。Arduino Nano EveryやArduino Uno WiFi Rev2にも搭載されていたりします。 Arduino Uno上に搭載されているATmega328pとの比較表は以下の通りです。

(QFP版ではピン数的にATmega328と置き換えることが可能であるATmega4808の情報も載せました。)

製品名ATmega328p-PUATmega4809-PFATmega328p-AUATmega4808-AUR
コアmegaAVRmegaAVRmegaAVRmegaAVR
価格340300370-
コアサイズ8bit8bit8bit8bit
クロック16MHz20MHz16MHz20MHz
Flashメモリ32kB48kB32kB48kB
SRAM2kB6kB2kB6kB
EEPROM1kB256B1kB256B
ピン数28403232
パッケージDIP28DIP40QFP32QFP32
タイマ3ch5ch3Ch4ch
UART/USART1Ch4Ch1ch3Ch
ADC6Ch16Ch8Ch12Ch
GPIO23332327
PWM6565
I2C1111
SPI1111
書き込み方法ISPUPDIISPUPDI

上の表のようにPWMのピン数が1本少なかったり、EEPROMの容量が少ないことを考えると使い分ける必要がありそうです。 でも、これだけ性能が高いのに値段が安いのがとてもいいですね! また、上の表にはないですが、ATmega4809やATmega4808ではレジスタ周りも整理されていて使いやすく感じました。

ATmega4809の使い方

UPDI

ATmega4809を導入するとに一番の障壁となるのはUPDI関連だと思います。 まずはUPDIライタをArduinoで作りましょう。

  1. https://github.com/ElTangas/jtag2updi からソースコードをダウンロードしてください。
  2. 展開したあと、jtag2updiの中にあるjtag2updi.inoをArduino IDEで開いてください。
  3. Arduinoを接続し、スケッチを書き込んでください。

これでUPDIライタができました。 次に、作ったUPDIライタを使ってプログラムを書き込みましょう。 以下は、COM6に接続されたUPDIライタを使いmain.cppを書き込む場合の手順です。

  1. コードをコンパイルする。これはatmega328pと同様に以下を実行すればよいです。
avr-gcc main.cpp -mmcu=atmega4809 -o main.elf
  1. ROMに書き込める形式に変換する。Intel形式に変換して、マイコンのROMに書き込めるようにします。
avr-objcopy -O ihex main.elf main.hex
  1. マイコンに書き込むための回路を組む。jtag2updiのREADMEにもあるように、以下の回路を組みます。
                                            V_prog                 V_target
                                              +-+                     +-+
                                               |                       |
 +----------+          +---------------------+ |                       | +--------------------+
 | PC       |          | Programmer          +-+                       +-+  Target            |
 | avrdude  |          |                     |      +----------+         |                    |
 |       TX +----------+ RX              PD6 +------+   4k7    +---------+ UPDI               |
 |          |          |                     |      +----------+         |                    |
 |       RX +----------+ TX                  |                           |                    |
 |          |          |                     |                           |                    |
 |          |          |                     |                           |                    |
 |          |          |                     +--+                     +--+                    |
 +----------+          +---------------------+  |                     |  +--------------------+
             JTAGICE MkII                      +-+     UPDI          +-+
             Protocol                          GND     Protocol      GND

  1. マイコンに書き込む
avrdude -c jtag2updi -p atmega4809 -P COM6 -U flash:w:main.hex

最後まで読んでいただきありがとうございます。 ATmega4809のデジタル入出力やPWM、I2Cなどの使い方などはそのうち書こうと思います。そちらもぜひ読んでみてください!


シェアする: