stlと申します。
マニュアルによるとScanStart()とDataGet()の最初の数サイクルは、イニシャルオフセットチューニングが行われるそうです。
上記のオフセットチューニングが実行されるのは、初めてopen関数を実行してから、1回のみということでしょうか?
もしくは、close関数を実行し、再度open関数を実行するたびに、イニシャルオフセットチューニングが行われるのでしょうか?
This function should be called each time a periodic timer expires. If initial offset tuning is enabled,The first several calls are used to tuning for the sensors. Before starting the next scan, first get thedata with R_CTSU_DataGet(). If a different control block scan should be run, check the scan iscomplete before executing. Implements ctsu_api_t::scanStart.
CTSUは使ったことないですがAPI資料を読む限りイニシャルオフセットチューニングはR_CTSU_Openで初期化した後のR_CTSU_ScanStart呼び出しが数回実行されたときに行われると書いてあるので1回じゃないです。ではいつになったら完了するかという問題になりますが、自動でオフセットチューニングをしないときにマニュアルでチューニング実行させるためのAPIとして
がありますね。これの終了ステータスにはFSP_ERR_CTSU_INCOMPLETE_TUNINGという未完了状態を表すものが定義されているので自動実行でもステータスで判断するのだと思います。おそらく、
をR_CTSU_ScanStart完了後 (FSP_SUCCESS) に呼び出してその終了ステータスがFSP_ERR_CTSU_INCOMPLETE_TUNINGの間はオフセットチューニング中だと思います。なのでR_CTSU_ScanStartしてR_CTSU_DataGetして成功 (FSP_SUCCESS) なら大丈夫ということになります。
>>API資料を読む限りイニシャルオフセットチューニングはR_CTSU_Openで初期化した後のR_CTSU_ScanStart呼び出しが数回実行されたときに行われると書いてある
これはどちらに書かれていましたか?
The first several calls are used to tuning for the sensors
英語で書いてありますよね。
質問の文章が分かりづらかったかもしれません。
最初の質問の意図が伝わっていないような気がします。
イニシャルオフセットチューニングが何サイクルで行われるかの質問ではありません。
イニシャルオフセットチューニングがScanStart()とDataGet()の最初の数サイクルで行われるのは理解しています。
例えば、イニシャルオフセットチューニングが一度完了し、closeした後に再度openしたとき、もう一度ScanStart()とDataGet()の最初の数サイクルでイニシャルオフセットチューニングが行われるのかというのが質問です。
上の書き込みとは別の者で、英語にあまり詳しくないので間違っているかもしれませんが...
「several calls」のcallsは「関数を呼び出した回数」なのでは?
電源投入以降、最初の数回は「openした時にイニシャルチューニングされる」...ただ、何回なのかはわからない...と判断しました。
再度Openして再度オフセットチューニングされるか?されると思いますよ。そもそもですが、戻り値チェックして成功してないならDataGetの値はAPI上は妥当な値ではない。戻り値チェックしたら解決だと。それとも再度Openしたときにオフセットチューニングしたくないということでしょうか?なら再度初期化するという方法を取らなければいいと思います。
オフセットチューニングを再度実行したいときに、再度オープンするだけで良いのか(ScanStart()とDataGet()のサイクルは通常のタッチデータ取得においても行うため既にその処理はある前提)もしくは、ScanStart()とOffsetTuning()のセットを実行する必要があるのかを知りたかったのです。
戻り値をチェックしてください。