MPLABX PIC harmony ADCを使用してみた

こんばんは、ファルコンM です。

 

MPLABX のharmony プロジェクトでADC を使用して動作確認をした。

 

開発環境

  • マイコン PIC32MZ0512EFE064

やりたいこと

  •  Pin14 をAD入力ポートとする。
  • ADの値をharmony ライブラリを使用して読み込む。
  • 細かい設定はあまり考えず、とりあえず読み込めることを確認したい。

※ harmony プロジェクトの作成方法は省略する。

 

harmony の設定

 

Harmony Configurator の設定は以下の通り。

Pin Settings

 

Pin14の Function でAN2を設定する。Name はポート名を設定する。何でもよい。( こちらは、IO_2 とした。)

 

これで、Pin14 はアナログ入力ポートとなる。

 

Options

Options タブ→ Harmony Framework Configuration → Drivers → ADC

 

 

ここの設定は

  • Channel Instance2 にチェックを入れる。
  • Channel Selections をADCHS_CHANNEL_2 にする。
  • Channel-2 Analog ( class-1) default or alternate Input Selection をADCHS_DEFAULT_CLASS1_AN2 にする。

Channel Instance は0でも1でもよい。

 

ソースコード

 

Harmony Configurator でtest という名のアプリケーションを作成する。

以下、test.c のコードの追記部分

 

void Test_Tasks ( void )
{
 uint32_t data;
 switch( testData.state )
 {
  case TEST_STATE_INIT:
  {
   bool appInitialized = true;

   if (appInitialized)
   {
    // ---追加1---
    DRV_ADC2_Open();
    // ---追加1---
    testData.state = TEST_STATE_SERVICE_TASKS;
   }
   break;
  }
  case DEMO_USB_STATE_SERVICE_TASKS:
   {
   // ---追加2---
   DRV_ADC_Start();
   while(!DRV_ADC_SamplesAvailable(2));

   data = DRV_ADC_SamplesRead(2);
   // ---追加2---
  }
 }
 return;
}

 

初期化処理

追加1の場所で DRV_ADC2_Open() を呼び出す。ADC2 がON状態となる。

 

読み出し処理

追加2の場所で読み出しを行う。

 

DRV_ADC_Start(); を呼び出すことでAD のサンプリングを開始する。

 

DRV_ADC_SamplesAvailable(2) でADC2 のデータが読み出しできるかを確認する。読み出しできる状態ならば true が返される。

ここでは、データ読み出し可能状態になるまで待ち続ける。

 

DRV_ADC_SamplesRead(2) でADC2 のデータを読み出す。

 

このプログラムは、Test_Tasksが呼ばれるたびに、ADC2 のデータを読み出している。

データを読みだした後は、サンプリングが停止する。毎回データを読み出す前に、DRV_ADC_Start() を呼び出さなければならない。

 

まとめ

harmonyライブラリで ADC の機能を使ってみた。

いちいちレジスタのことを考えなくてよい。シンプルにコードが書ける。

ただ、マニュアルが英語で分かりにくい。

今回のコードは簡単に書いているが、そこにたどり着くまでソースコードを読んだり、マニュアルを読んだり、トライアンドエラーを繰り返したりした。

 

harmony は、コードは簡単に書けるが、結局レジスタの設定方法はしっかり理解しておくべきだ。

 

 

スポンサードリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です