ATmega 32u4はチップ単体でArduino互換マイコンとUSB通信を行う事が出来、スケッチの組み方によりUSBマウスやキーボード等のデバイスとして動作させる事が出来る。
USBデバイスとして動作する際、USBシリアルとしても動作し、スケッチの書き込みはUSBシリアル経由で行う。USBシリアルで通信しつつ、USBキーボードやマウス制御も同時に行う事が出来るので色々応用が効く。
しかし、スケッチにミスがあるとUSBデバイスとして認識されず、USBシリアルも動作せずスケッチの書き込みが出来なくなる事がある。
ATmega 32u4はbootloaderで動作するモードと、その後のスケッチが動作するモードがあり、それぞれで異なるデバイスとして認識される。それぞれで異なるCOMポートとして認識されたりする。
スケッチが動作しているモードで書き込めなくなった場合、リカバリー方法はいくつかある。
ATmega 32u4をリセットするとbootloaderモードで動作する。RST – GND間を一瞬ショートさせるとリセットがかかり、bootloaderモードで動作し、この時USBシリアルとして認識される(写真はピンの場所の説明、実際はPCとUSB接続し通電している状態でリセットをかける。製品によっては素早く2回リセットする事でbootloaderモードに入るものもあるらしい)。
bootloaderモードで動作している時にスケッチを上書きする事でリカバリーできる。ただし、bootloaderモードで動作するのは8秒間だけのため、リセット後素早くスケッチを書き込むか、リセットしCOMポートを選択、スケッチをビルドし書き込み開始時に再度リセットをかけて書き込む必要がある。ややタイミングが難しい方法である。
別の方法としてはArduinoのbootloaderを修復する方法で、arduino uno等をArduino ISPとして設定し、32u4を接続する。
https://www.arduino.cc/en/Tutorial/ArduinoISP
ピン配線は
Arduino ISP | 32u4 |
5V | 5V |
GND | GND |
D10 | RST |
D11 | MO |
D12 | MI |
D13 | SCK |
ボードをArduino Micro、書き込み装置をArduino as ISPに設定。
bootloaderを書き込むとスケッチもリセットさせる。もしくは、適当なスケッチをスケッチメニューから書き込み装置を使って書き込む で書き込むとArduino ISP経由で32u4にスケッチが書き込まれる。