コンパイルオプション

普通のC言語の場合,最適化するためには,単に -O2 をつければいいだけだったけど,O2 っていろいろと書き換えてくれるせいでマイコン制御をする上ではタイミングとかの観点から結果が異なってしまうようになる場合がある.
というわけで,今回は -O1 を使わなければならない.O1でもめちゃくそ早くなる.今回書いたADCで電圧を測るプログラムのコンパイルオプションの違いによるデータ取得間隔の違い.

最適化オプションなし:60.4ms
-O1:8.4ms
-O2:60.2ms(結果が異なるのでそもそも使えないが参考まで)

-O1 だと120Hzくらいで取得できていることになる.シリアルバスの通信でオーバーヘッドがあるはずだけれどもけっこうぎりぎりまで最適化されていることになる.

今回のマイコン制御は結局ソフト上からリセット信号を送ってやる必要があった.電源を抜いたりさしたりするようなリセットだとノイズがのるせいか、正しくリセットされないというのが、今回の罠でした。3日も費やしてしまった。