2022年7月1日金曜日

ATMEGA4809 を Arduinoとして使う

ご無沙汰しております.

今年度から少し余裕ができたので1年くらいかけてリニアモーターカーの新作をつくろうと思います.

レールユニットをコンパクトにしたいので,ピン数の多い安価なマイコンをレールユニット毎に内蔵する形を検討中です.

そこで,ATMEGA4809を試してみました.ATMEGA4809は, 2022/7/1現在,秋月電子では300円で販売しており, ATMEGA328Pの340円よりもお買い得です.また,先人のお力により特別な書き込み機なしでArduino化することが可能で,お手軽に使えそうです.

手順は

  1. 書き込み機の用意(既存のArduinoを使う)
  2. ATMEGA4809にブートローダーを書き込んでArduino化する
  3. スケッチを書き込む
です.ここでは手順のメモを残しておきます.

1. 書き込み機の用意

ブートローダーの書き込むには書込み機が必要です.既存のArduinoを書き込み機化するスケッチJtag2updiを使います.

初めに上記のgithubからZipファイルをダウンロード&解凍します.できたフォルダの中のsourceというフォルダの名称をjtag2updiに変更します.次のその中にあるjtag2updi.inoをダブルクリックします. 

Arduino IDEでjtag2updiというプロジェクトが開かれますので, Arduino NanoをUSBでPCに接続します.

Arduino IDEのボードの設定をNano用に変更して(下図), 書き込みボタン(いつも使っている右矢印)を押します.これでArduino Nanoが書き込み機になりました.




2. ブートローダーの書き込み

次にATMEGA4809のArduino化にMegaCoreXを使います.

1) Arduino IDEを開き, [Preferences]を選びます.


2) ボードマネージャの追加欄に"https://mcudude.github.io/MegaCoreX/package_MCUdude_MegaCoreX_index.json"と入力します.

3). 次にArduino IDEのメニューから[ツール]->[ボード: ]と辿って, [ボードマネージャー]を選びます.


4) "MegacoreX"を探してインストールします.



5) Arduino IDEのメニューから[ツール]-> [ボード:]-> [MegaCoreX]->[ATmega4809]を選びます.



6) [ツール]から書き込み用の設定を選んでおきます

Pinoutを40pin, 書き込み装置はJTAG2UPDIを選びます.


7) 書き込み機(Arduino Nano)とATMEGA4809を接続します.

 下記写真のように, Arduino Nanoの5V出力をATMEGA4809の31ピン, GNDを32ピン, D6ピンを30ピンに繋ぎます.

 (正しくは5Vを5番, GNDを6と18番にも接続するということですが,サボっても動きます)



ピンアサイン 


8) [ツール]-> [ブートローダーの書き込む]を選びます.問題なければ下記のように表示されて書き込みが完了します.



8) Arduino IDEで適当なスケッチをコンパイルして,書き込みを行います.

ここでは下記のようなコードを書き込みます.

void setup() {
  // put your setup code here, to run once:
 pinMode(8, OUTPUT);  
}

void loop() {
  // put your main code here, to run repeatedly:
    digitalWrite(8, HIGH);   
    delay(500);              
    digitalWrite(8, LOW);   
    delay(500);  
}


適当な抵抗とダイオードを拾ってきて繋いでおきます.


9)チカチカしました.


UPDIのポートに一本繋いでおくだけでスケッチが書き込めるのでお手軽で良いですね.