stlと申します。
RAマイコンでタッチセンサの機能を使用しています。
RM_TOUCH_DataGet()を使用した際にFSP_ERR_CTSU_INCOMPLETE_TUNINGというエラーが出たので、教えていただきたいです。
以下に自分のコードとサンプルを示します。
サンプルを参考にプログラムを書きました。ただ、サンプルの場合、タッチが完了するまでwhile (0 == g_qe_touch_flag) {}のように待機が発生するので、スキャンスタート後も他の動作が実行できるような処理にしたつもりです。
プログラムを実行すると、何もタッチしていないのに、qe_touch_flagがtrueになり、RM_TOUCH_DataGetが実行され、エラーとしてSP_ERR_CTSU_INCOMPLETE_TUNINGが返却されます。この問題について、どのようにすれば解決するか何か分かることがあれば教えていただけますでしょうか?
FSPのマニュアルを確認すると、RM_TOUCH_ScanStartについて、以下のように書いているのですが、このあたりが関係するでしょうか?定期的に関数を呼ぶ必要があるというようなことを書いていますが、サンプルではそのようなことをやっておらず、原因が分かりません。
「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 RM_TOUCH_DataGet(). If」
自分で書いたコード(メインループ内で実行される)
```
static bool is_scan_start = false;
if(!qe_touch_flag && !is_scan_start) {
err = RM_TOUCH_ScanStart(g_qe_touch_instance_config01.p_ctrl); assert(FSP_SUCCESS == err); is_scan_start = true; }
if(qe_touch_flag) //タッチが完了したら、コールバック関数よりtrueに変更される { err = RM_TOUCH_DataGet(g_qe_touch_instance_config01.p_ctrl, &button_status_struct->button_status, NULL, NULL); assert(FSP_SUCCESS == err);
qe_touch_flag = false }
//////////////////////////////////////////
サンプルプログラム
void qe_touch_main(void){ fsp_err_t err;
/* Open Touch middleware */ err = RM_TOUCH_Open(g_qe_touch_instance_config01.p_ctrl, g_qe_touch_instance_config01.p_cfg); if (FSP_SUCCESS != err) { while (true) {} }
/* Main loop */ while (true) {
/* for [CONFIG01] configuration */ err = RM_TOUCH_ScanStart(g_qe_touch_instance_config01.p_ctrl); if (FSP_SUCCESS != err) { while (true) {} } while (0 == g_qe_touch_flag) {} g_qe_touch_flag = 0;
err = RM_TOUCH_DataGet(g_qe_touch_instance_config01.p_ctrl, &button_status, NULL, NULL); if (FSP_SUCCESS == err) { /* TODO: Add your own code here. */ }
/* FIXME: Since this is a temporary process, so re-create a waiting process yourself. */ R_BSP_SoftwareDelay(TOUCH_SCAN_INTERVAL_EXAMPLE, BSP_DELAY_UNITS_MILLISECONDS); }}
こちら解決しました。
毎回エラーチェックをする必要がなかったようです。