レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

Pro Microのブートローダーを書き換えてLeonardoにする

2018年08月29日 | 電子工作

Arduinoを使っていて、いつか起こるかもしれないと思っていたブートローダーの破損がPro Microで起きてしまいました。

RAM領域を目一杯使用するスケッチをコンパイラの警告を無視して書き込んだところ、二度とスケッチが書き込めなくなってしまいました。リセットスイッチ二回押しでブートローダーモードにしても書き込めなくなっていたので、破損は間違いないでしょう。

Arduinoを書き込み装置に仕立てて、ブートローダーを書き込めるのはこちらのサイトで知っていたので、ここの情報を元にLeonardoを書き込み装置にして次のようにつないだら、ちゃんとPro Microのブートローダーが書き込めました。(書き込み手順はここを見ました。)

Leonardo       →      Pro Micro
10 PIN                     RST
ICSP1(MISO)          14 PIN
ICSP2(VCC)            VCC
ICSP3(SCK)            15 PIN
ICSP4(MOSI)          16 PIN
ICSP6(GND)           GND

破損したArduinoはHiLetgoのPro Micro互換機5V,16MHzでしたので、SparkFun Pro Microの5V,16MHzのブートローダーを書き込みました。特に問題なく書き込みが終わったので、Pro MicroをPCにつないでスケッチのBlinkを書き込んでみると…成功です。ほっと一安心で別のスケッチを書き込だところ、エラーが!!
その後は何も書き込めない状態になってしまいました。

何度かブートローダーを書き直してみたのですが、スケッチを書き込めるのは一度きりで二回目は必ずエラーが発生します。

困ったときはgoogle頼みです。早速こんなサイトを見つけました。Pro MicroにLeonardoのブートローダーが書き込めるとのこと。
ダメもとで書き込んでみると、なんだか書き込み時間が長くなりましたが無事に終了しました。

Leonardo化したPro MicroをPCにつなぎ、ボード選択もLeonardoにしたままスケッチを書き込んでみると…普通に書き込めます。動作も問題ありません。

幾つかサンプルスケッチでテストしているうちに、ふと先日作成したポケコン用サーマルプリンタをUbuntuから利用するで悩んだPro Micro起動後の19バイトのシリアルデータ受信問題も無くなるのではと思いつきました。

試してみると、思った通り19バイトのデータ待ちをする必要がなくなっていました。動作はLeonardoと全く同じです。素晴らしい。

今後もこの状態で使用し続けてみます。でもまだ完全に問題がないかどうかは分からないので、もし試してみようと思われる方がいらしたら自己責任でお願いします。

ブートローダーを書き換えたことで一番良かったのは、LeonardoとPro Microを交互に使用するときにいちいち使用ボードの設定を切り替えなくて済むことですね。ボード設定が間違っていないか毎回確認するストレスから開放されました。



最新の画像もっと見る

コメントを投稿