M5StackデバイスでPC側で通信ポートが認識できない事がよくある。
(サーボ)モーターやリレーを使っていたりすると良くあって、M5Stackデバイス単体にすると認識される様になったりする。
多分電源が安定しなくなるとか逆起電力のせいとかで影響されて認識できないとかではないかと思う。
そういうときはAボタンなどを押して起動した時に、モーターやリレーのIOを使う前に無限ループの待ち状態にするとハードはそのままで通信できる用になる。
https://github.com/katsuyoshi/info-calc/blob/main/platformio/info_calc/src/main.cpp#L856-L863
M5.update();
// サーボが動き出すと通信ができなくなるのでAボタンを押しながら起動すると
// サーボ初期化せず書き込みできる様にここで停止させる。
if (M5.BtnA.isPressed()) {
while(true) {
delay(1000);
}
}
これ以外でも認識できなくなることはあるが、VSCodeを立ち上げ直したら認識できたとか、リセットやAボタン押しながら書き込みするとかある。
それでもダメで何でーってなることもある。
G0をLOWにしてリセットかければダウンロードモードになるというのをラングシップの記事で今知った。
ENがリセットになっているのも知らなかった。M5StampとかリセットボタンがないのでUSBケーブル抜き差ししたり無駄にプログラムをもう一回書いたりしていたがENを一旦LOWにすればいいのか。