LogiClover開発ブログ

LogiCloverは、趣味でFPGAを使った電子工作をしているサークルです。主に開発中の出来事や技術メモを投稿します

Atmel QTouchを使ってみる

Atmel(現Microchip)のマイコンにはQTouchという静電タッチを検出するための機能が入っています。
この機能を使うのにいくつかステップを踏む必要があったため紹介します。

今回はSAM D51MCUに使いました。
他のマイコンでもやり方はほぼ同様だと思います。

https://start.atmel.com/へアクセスし、プロジェクトのテンプレートを作成します。

まずはCREATE NEW PROJECTをクリックします。
f:id:logiclover:20200429184536p:plain

ウィザード形式でプロジェクトを設定できるので、自分の使うマイコンを選びます。
f:id:logiclover:20200429184603p:plain

一通り進めると、プロジェクトをカスタマイズする画面が出ます。
ここで自分の使いたいソフトウェアコンポーネントを追加していきます。
f:id:logiclover:20200429184736p:plain

Add software componentをクリックし、QTouch Libraryを追加します。
f:id:logiclover:20200429184823p:plain

追加したあと、左側のタブからQTouchを選択し、QTouch設定画面に行きます。
このページで静電タッチの数やピンを設定できます。
初めてアクセスすると、クロックなどの設定をQTouch向けに書き換えますという旨のWarningが出るためYesします。
f:id:logiclover:20200429185036p:plain

自分の使いたい数のボタンを追加します。
スライダーなどもありますが、まだ使ったことがありません。
f:id:logiclover:20200429185415p:plain

どのピンに何番ボタンを割り当てるかもここで設定します。
f:id:logiclover:20200429185444p:plain

一通り設定したらプロジェクトの初期設定は完了です。
ちなみに、クロック設定を確認したらこんな感じになっていました。
CPUのクロックはMax120MHzですが48MHzに設定されていました。
f:id:logiclover:20200429185527p:plain

ここまで来たら、一番上にあるExport Projectを実施します。
好みのプロジェクト形式でエクスポートします。
f:id:logiclover:20200429185831p:plain

エクスポートしたプロジェクトを開くと、touch_exampleが無限ループで実行されるようになっています。
f:id:logiclover:20200429190155p:plain

タッチの計測が完了すると、そのたびtouch_status_displayが実行されるようになっているので、ここから結果を取得するようにします。
こんな感じで自分の欲しいデータに加工します。
f:id:logiclover:20200429190913p:plain

また、自分の環境では、なぜか計測を実行したまま永遠に戻ってこない動作になってしまいました。
touch.hのDEF_REBURST_MODEをREBURST_NONEに変更すると動くようになりましたが、なぜこうなるのかは不明です。
f:id:logiclover:20200429190450p:plain

また、デフォルトでは少しスキャンの速度がもっさりしていたので、値を変更して使いました。
20msから2msにしたところ俊敏に反応するようになりました。
f:id:logiclover:20200429190608p:plain

以上でQTouchをAtmelのマイコンで使えるようになります。
これを使って作った工作がこちらです。

よくわからないところ
・たまにプロジェクトの生成が失敗する
・クロック変更や他ペリフェラルを混ぜ込んだ時にプロジェクト生成が失敗するときがある
→QTouchのみのプロジェクトと、必要なペリフェラルのみを入れたプロジェクトを生成して、コードをマージすることでなんとか動くようになりました。正しい対応方法は不明です。