2016年09月29日

Arduboyでスケッチが書き込めなくなったときは

単なるTipsです。

Natural Tiny Shell(NT-Shell)をArduinoに移植してみたの記事ではシリアルポートを常時使っています。

開発中、ときどきスケッチが書き込めなくなることがありました。
スケッチの書き込みもシリアルポート経由なので、スケッチの動作がおかしいと書き込みモードに切り替わらない場合があるようです。

Arduboyはハードリセットボタンがありますが、Arduboyのライブラリにも対策がされています。

それは、「電源オンのときにUPボタンとLEFTボタンを押しているとセーフモードになる」というものです。
セーフモードでは、ユーザのスケッチは実行されません。
そのため、スケッチ書き込みの邪魔をするようなコードがArduboyに書き込まれてしまっていても、それを回避することができます。

これはライブラリのコードを見ていたら偶然見つけました。
Arduboy-1.1.1/src/core/core.hに以下のような記載があります。
    /// Safe mode
/**
* Safe Mode is engaged by holding down both the LEFT button and UP button
* when plugging the device into USB. It puts your device into a tight
* loop and allows it to be reprogrammed even if you have uploaded a very
* broken sketch that interferes with the normal USB triggered auto-reboot
* functionality of the device.
*
* This is most useful on Devkits because they lack a built-in reset
* button.
*/
void static inline safeMode() __attribute__((always_inline));


safeMode() の中身はcore.cppにありますが、何もしない命令(nop)の無限ループです。

これでもだめだったら、ハードウェアリセットという手段があります。
ラベル:Arduboy
posted by boochow at 00:11| Comment(2) | Arduino | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
今は必ず保険で起動時に5秒間のdelayをかましてる
Posted by ケダ at 2016年09月29日 02:59
私も自前でセーフモードを実装していました。
Posted by boochow at 2016年09月29日 22:15
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
人気記事