2022年4月15日金曜日

M5Stack Basic上(ESP32)のinterruptで大苦戦

ご無沙汰しております。

interruptを使って、PWM入力のデューティー比を計測するという簡単なプログラムでハマりました。

IRAM_ATTRとかvolatileとか、Serial, delayを使わない、なんてのは当然やってます。でも、

  • Interrupt wdt timeout on CPU1 
  • LoadProhibited
  • Coprocessor exception

でrestartしちゃう。M5関連のコードを外してESP32 DevKitで動かしたり、structで定義していたものを単純変数に置き換えたり、メインループで使っているSoftwareSerialをHardwareSerialに変えてみたり。

何をやっても駄目。

最終的に動いたのですが……

対策は……浮動小数点を使わない……でした。

わけがわからないよ……。