MPLAB X IDE unable to resolve identifier
MPLAB X IDE で警告 unable to resolve identifier が発生することがあります。
mac OSのMPLAB X IDE v6.0.5で発生しました。エラー発生原因と解決方法がわかったので記録に残しておきます。
unable to resolve identifier エラー箇所
main.cのインクルード文 #include <xc.h>で警告が表示されることがあります。
警告内容
unable to resolve identifier
また、ANSELAの記載箇所でエラーが発生しています。PIC16F1827にはANSELAレジスタが存在するにも関わらずです。
ただし、このプログラム自体に問題はなくコンパイルは通ります。問題があるのは、MPLAB X IDEの問題です。
unable to resolve identifier エラー原因
エラーの原因は、MPLAB X IDEでマイコンのヘッダーファイルの読み込みに失敗していることが原因です。
警告が発生しているmcc.hファイルのxc.hの中を見ていきます。
以下のような警告が発生していました。さらにxc.hファイルの中を確認してみます。
There are unresolved includes inside <xc.h>
xc.hのファイルの中のpic.hインクルード文でさらに警告が表示されています。pic.hも確認してみます。
#include <pic.h>
pic.hの中でもhtc.hインクルード文で警告が発生していますが、本当のエラー原因は、pic_chip_select.hです。pic_chip_select.hを見てみます。
#include <pic_chip_select.h>
pic_chip_select.hの中にエラーが発生している箇所があります。このヘッダーファイルは、使用するマイコンの方に応じてインクルードするヘッダーファイルを変更しています。今回のプロジェクトでは、PIC16F1827を選択していたので、pic16f1827.hをインクルードしようとしていますが、エラーが発生しているようです。
Cannot find include file <pic16f1827.h>
エラー箇所にマウスカーソルを持っていくとさらに詳細なエラー内容が表示されました。どうやらMPLAB X IDEは、
以下のディレクトリからマイコンのヘッダーファイルを取得しようとしているみたいです。
/Applications/microchip/xc8/v2.41/pic/include/plib
ですが、そのフォルダは存在せずヘッダーファイルは別の場所にありました。
修正方法
マイコンのヘッダーファイルが存在するフォルダをMPLAB X IDEに教えてあげれば、エラーは解決します。
[Projects]のプロジェクトに対して右クリックして、[Properties]を押します。
[XC8 Glbal Options]の[XC8 Compiler]の[Include directories]の参照ボタンを押します。
[Browse…]を押します。
マイコンのヘッダーファイルがあるフォルダを選択して、[Open]ボタンを押します。今回は以下の場所にpic6f1827.hファイルがありました。
/Applications/microchip/xc8/v2.41/pic/include/proc
[OK] ボタンを押します。
[Include directories]に先ほど選択したフォルダが設定されていることを確認して、[Apply]ボタンを押します。
[OK]ボタンを押して設定を保存します。
すると、pic_chip_select.hで発生していたエラーが消えました。
また、main.cで発生していたANSELAの記述についてのエラーも同様に消えています。
以上。