変なプログラムを書き込んだらArduinoが認識されなくなった詰んだ
やること
Arduino micro でMsTimer2の割り込み処理関連のテストをしていたらPC(Mac)に認識されなくなって焦りました。その対処法です。
リセット2連打でプログラム実行開始が遅延される救済措置があった
Arduino microの場合、本体のリセットボタンを素早く2連打することでプログラムの実行開始を遅延させる機能が入っているようです。
実行開始遅延モードに入った時は本体のLEDが約8秒間、蛍のように点滅します。
(調べていませんがおそらく全てのArduinoで使える技だと思います。)
変なプログラムを書き込んでしまったことが原因でPCに認識されないという場合には、このプログラム実行開始の遅延中に書き込みが可能になります。
(ブートローダーが破損していた場合には当てはまりません。)
Arduino復活のための準備と確認
・リセットボタンの2連打の間隔ついては「たたん」でも「たんたん」でも大丈夫ですが、Arduino側の状態にもよるかもしれないので、何度か試してみてください。蛍点滅になれば成功です。
・点滅中にArduino Ideメニューの「ツール」→「シリアルポート」をチェックするとUSBが選べるようになっているので、それをチェックします。
・Arduino Ideで「新規ファイル」を作成し、以下のような空のスケッチを準備しておきます。
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
いのり - ささやき - えいしょう - ねんじろ!
準備が整ったら蘇生の儀式を行います。
① ArduinoとPCをUSBで接続する。
② リセット2連打でLED蛍点滅させる。
③ シリアルポートでUSBを選択。
④ Arduino IDEの空のスケッチで「マイコンボードに書き込む」ボタンを押す。
⑤ ここで再びリセット2連打!(←遅延モードをタイムアウトさせないコツ)
うまくいけば書き込みが終了し、Arduinoが復活します。
(ちなみに自分は割り込みの中でwireを使おうとしたのが問題だったようです。wireも割り込み処理の仲間だったようです。)