割り込み時にもアクセスしたいからあるグローバル変数を volatile にするじゃん、でもその変数の値を別の関数に渡すときに引数は volatile じゃないじゃん、キャストすると最適化の影響受けてしまってよくない?
GitHub Copilot (o1 preview): volatile 変数は割り込みで書き換わる可能性があるため、グローバルをvolatileにしておき、必要なタイミングで都度ローカル変数に読み出してから関数に渡すのがおすすめです。引数をvolatile化する必要はなく、キャストも最小限に抑えると最適化との衝突を減らせます。
うーん volatile 変数についてちゃんと理解するか