arduiono-esp32でlog_i()が使えるようになった と喜んでいたら、ある環境で使えない。
使える環境と比べつつ色々試した結果 Serial.begin()を2回呼び出すとlog_i()が 何も出力しなくなることがわかった。 この状態でも Serial.print()系は出力されるので わかりにくい。
arduiono-esp32でlog_i()が使えるようになった と喜んでいたら、ある環境で使えない。
使える環境と比べつつ色々試した結果 Serial.begin()を2回呼び出すとlog_i()が 何も出力しなくなることがわかった。 この状態でも Serial.print()系は出力されるので わかりにくい。
Serial.begin()を2回呼び出すなんてしないだろうと 思うかも知らないが、例えば次の例では 2回呼び出されている。
void setup(void) { Serial.begin(115200); M5.init(); }
M5Stackを使っているとやりがち。 M5.init()でSerial.begin()が呼びだれている。 ちなみに第3引数にfalseを指定するとSerial.begin()の呼び出しは 抑制できる。
Serial.begin()を2回呼び出すとlog_i()というか それから呼び出されるets_printf()が出力されなくなる 理由だが、mutexがらみの問題かとは思うが 詳しくは調べていない。