LoginSignup
0
1

More than 3 years have passed since last update.

ATmega32U4にArduino Leonardoブートローダを書き込む方法

Last updated at Posted at 2021-04-03

現在のプロジェクトで使っているATmega32U4にArduino Leonardoブートローダを書き込むのに苦労したので、Tipsや書き込み方を紹介します。

ハードウェア

自作のPCBです。モータドライバー、センサー関係、昇圧回路など色々、乗っけました。
フラックスが残っていて汚いのは許してください笑
IMG_8283.jpg

  • マイコン ATmega32U4
  • クロック 16MHz
  • インターフェース ICSP,MicroUSB対応

回路図やPCBガバーなど詳細は以下

失敗 Arduino Leonardoから書き込み

Arduino LeonardoをISPとして使いブートローダーを使う方法。
この方法では結局うまくいかなかったのですが、参考としてご覧ください。
IMG_8288.jpg

Arduino LeonardoにはATmega32u4が乗っているので、ATmega32u4にブートローダを焼く場合は同じチップからの方が相性がいいらしい。書き込み機として使うLeonardoのリセットとGNDの間に10µFのコンデンサを挟んでもうまく行きませんでした。具体的には以下のエラーが出ました。
Screen Shot 2021-04-03 at 13.48.29.png
ArduinoIDEではブートローダーの書き込みを簡単にするため、対象を選択してボタンを押すだけで書き込めるようになっていますが裏ではavrdudeというコマンドが動いています。
Screen Shot 2021-04-03 at 13.51.19.png
デフォルト設定では実行コマンドや進渉が見えないのでverbose outputをIDEの設定からアップロードとコンパイル中に有効にします。これでコマンドが確認できます。

/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cstk500v1 -P/dev/cu.usbmodem1101 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xcb:m -Uhfuse:w:0xd8:m -Ulfuse:w:0xff:m 

エラーメッセージで-Fオプションをつけて試してくださいとあるので最後に-Fをつけて実行。

/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cstk500v1 -P/dev/cu.usbmodem1101 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xcb:m -Uhfuse:w:0xd8:m -Ulfuse:w:0xff:m -F

やはりエラー、データの読み込みは完了しましたが、ブートローダーの書き込みがされず終了してしまいます。
Screen Shot 2021-04-03 at 14.00.09.png

対処法

結論から言うとUSBaspを使えば問題なく書き込みできました。
USBaspはAtmel社AVRマイコン用のプログラムライタです。10ピンなので、ICSP経由で書き込む場合は6ピンに変換が必要です。
IMG_8289.jpg
画像では自作の変換ケーブル使ってます。

  • USBasp

  • 6ピン変換

使い方

使い方は簡単でPCとUSBaspをUSBポートから接続します。
IMG_8308.jpg

次に、出力の10ピンをICSP用に6ピンに変換します。
IMG_8309.jpg

変換ケーブルを自作したい方のためにUSBaspのピンアサインを載せておきます。
usbasp_09.png

さらに変換した6ピンのケーブルをターゲットのICSPに接続すれば配線は完了です。
IMG_8310.jpg
PC側ではArduinoIDEを起動します。メニュー>ツールから書き込みたいブートローダーの名前をボードから選択します。(この場合はLeonardoを選択)
ポートは何も選ばなくて大丈夫です。さらにUSBaspをプログラマとして選びます。最後にブートローダー書き込むを押せば書き込みGA開始されます。

書き込みが正常に終了すると以下のように表示されます。今回の環境では書き込みには30~40秒ほどかかりました。またエラーが出た際は、変換や差し間違えなど接続を再度確認してみてください。
Screen Shot 2021-04-03 at 20.46.40.png
Screen Shot 2021-04-03 at 21.46.44.png

書き込みが終了しボードをPCと直接繋ぐとATmega32U4がArduino Leonardoとして認識されArduinoIDEからスケッチが書き込めるようになります。
Screen Shot 2021-04-03 at 21.50.18.png
お疲れ様でした!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1