こんばんは、ファルコン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 は、コードは簡単に書けるが、結局レジスタの設定方法はしっかり理解しておくべきだ。
コメントを残す