本当の制御周期

Training TracerのIMUを1軸だけ取得にすると1msでの制御周期ができそうなことは確認したが、実際に内部波形を見てみるともっと遅い周期で動いていそうなことに気づいた
エンコーダーとジャイロの値の更新が7ms毎に見えるので、検討してみる。

まずはI2Cの通信が影響していそうなので
cubeMXのファイルを開いて、I2Cの項目を確認する。
なんとI2Cがスタンダードモードの100kHzに設定されていた。
クロックをFast modeの400kHzに設定してFall timeとRise timeも0 nsにしてみる。

データの更新速度を確認すると、エンコーダーの更新速度は3msで更新されたが、I2Cジャイロは9ms毎に遅くなったように見える

次にsimulinkに戻ってジャイロの初期化関数を見てみる
レジスタ10hに07hが書き込まれている。BMX055のレジスタ10hはバントパスフィルタとサンプリングレート(ODR)のレジスタで、07hはODRが100Hz(フィルタ32Hz)の設定だった。

ということでODRを1000Hz設定の02hに書き換えてみる。

データの更新速度をモニターしてみると、
2ms毎更新まで詰めることができた

意図した制御周期で動いているかの確認方法が、監視と調整の時間と実時間の一致だけでは判断できないことが分かった。
さてどう確認すればいいものか?