組み込みアプリをCortex-A+RTOSの環境でさくっと作ってみた

初心者講座「CARTOS編」で連載した組み込みアプリ開発を実践しました。京都マイコンの開発プラットフォームSOLIDを使って、簡易データーロガーのアプリケーションを作りました。GPIO2本使用して、ロガーの開始とロガーの停止の操作をします。ロガーデータは、RZ/A1Hで内蔵しているADCを使用しています。

データロガー制作方法

RZ/A1HのADCを動作させる

冒頭の動画の中でも解説していますが、SOLID購入時のままでは、ADCは動かせません。まずは、レジスタアクセスできるようします。

スタンバイコントロールレジスタのクロック供給を有効にする。

RZ/A1Hには、スタンバイコントロールレジスタがあります。その中のSTBCR6というレジスタのBit7がADCへのクロック供給になっています。デフォルトでは、供給禁止(1が設定されている)になっているので、0に設定することで、ADCへのクロックを供給しています。

アナログ入力設定

アナログ入力は、AN7を使用しています。GPIOではPort1_Bit15がAN7に該当するので、機能設定でアナログ入力の設定にします。

ADCのチャネル指定

アナログの入力設定ができたら、ADCにどのチャンネルなのかを指定する必要があります。今回は、マルチチャンネルスキャンではなく、1つのチャンネルのみスキャンする設定にします。ADCSRというレジスタがありますので、このレジスタにチャンネル7(=AN7)を指定します。チャンネル指定をする場合は、ADSTビットを0にしておく必要があります。

ADCの変換値を読み込む

ADCを起動させるには、ADCSRのADSTビットを1にする必要があります。ADSTビットを1にすると、変換が開始され、指定されたチャンネルに読み込み値を格納します。ADCは12ビット変換なので、レジスタの下位12ビットを読み込みます。今回は、チャンネル7なので、ADDRHというレジスタが該当するので、その値を読み込みます。

再度ADCを開始する

ADCの変換は、1回サンプリングすると1回で終了します。そのため、何度もサンプリングするには、その都度ADSTビットを1にセットする必要があります。本来は、割り込み内部やタイマなどを使用して、連続的に実装するのがいいと思いますので、ぜひチャレンジしてみてください。

ざっくりまとめると

  • 初心者講座で学んだSOLIDを使いこなしてみた
  • RZ/A1HのADCを使ってみた
  • 応用例として、簡易的なロガーアプリを作ってみた

今回使用したソフトウェアは、以下からダウンロードできます。コード記述に、ムラがありますので、あまり突っ込まないでください。(うまく動かない場合は、twitter(@APS_WEB)のDMでご連絡ください!)