■概要
キーボードを自作する為にPro micro(の中華クローン)を購入したのですが、
Arduinoスケッチを書き込み遊んでいる中で誤ってブートローダ領域を破壊(文鎮化)してしまいました。
こうなるとResetをショートさせようが、USB経由でfirmwareの書き換えすらできなくなってしまいます。
多くの記事にもある通り復活させるには"AVRライタが必要です。"と記載されていますが
AVRライタは高価ですし、別途Arduinoがあれば復活可能ですので余っているPro Micro(他のArduinoでも可能)を使うことにします。
1. 用意したもの
- ジャンパワイヤ
- 文鎮Pro Micro
- 母艦Pro Micro
- ブレッドボード
2. 配線
| [母艦] | [文鎮] |
|:-----------------|------------------:|:------------------:|
VCC | VCC
GND | GND
14(PB1[SCK])| 14
15(PB3[MISO]) | 15
16(PB2[MOSI]) | 16
10(PB6)| RESET
となります
3.母艦側をAVRライタ化
- Arduino IDEを起動
- [ファイル]->[スケッチ例]->[ArduinoISP]を選択
- [スケッチ]->]マイコンボードに書き込む]
- ※事前にSparkFun Pro Microライブラリを取り込みしておいてください。
4. Arduino IDEを使ったブートローダの書き込みの場合
- [ボード]->[SparkFun Pro Micro]
- [プロセッサ]->[Atmega32U4 5V]
- [ツール]->[書き込み装置]->[Arduino as ISP]
- [ツール]->[ブートローダを書き込む]
Arduino IDE経由でのブートローダを書いたかたは別記事も参照されるといいと思います。
4. avrdudeコマンドを使ってブートローダを書き込む場合
※適宜デバイスやオプションはそれぞれの環境に読み替えてください
$ sudo avrdude \
-C/root/.arduino15/packages/SparkFun/hardware/avr/1.1.5/avrdude.conf \
-v -patmega32u4 \
-cavrisp \
-P/dev/ttyACM0 \
-b57600 \
-D -Uflash:w:bootloader.hex:i
おまけ
通常pro microはGND+RESETのショートを行うことでDFUモードが有効になり数秒間の間、USB経由で.hexの書き込みを行うことができます。
しかし私の環境(Ubuntu)では不思議な現象が発生しましたが長くなりますので、顛末を備忘録として別記事にします