JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

MPLAB X MCCを使ってみる

2021-05-09 15:21:18 | MPLAB X MCC
 私は、2013年からPICの勉強を始めました。勉強とPICを使った製作の経過は、JH7UBCホームページのこちらに掲載しています。

 最初の頃は、MPLAB IDEとアセンブラの組み合わせでプログラミングをして、HEXファイルを自作のPIC writer(RCDライタ,writer509,PICerFTなど)で書き込みを行いました。PIC用のアセンブラで煩わしいのが、BANK切り替えでした。

 2018年からMPLAB X IDEに切り替え、言語もXC8に変更しました。これに伴い、BANK切り替えの煩わしさからは解放されましたが、各レジスタの設定は、先人のWeb上の情報や、PICの説明書などを見ながら行ってきました。PIC writerは、PICKit3を購入して、IDEでbuildして即書き込みができるようになりました。

 最近、MPLAB X IDEでプラグインのMCC(MPLAB Code Configurator)を使えば、各種設定が画面上ででき、configやレジスタ設定のコードを自動で生成してくれ、プログラム開発の効率が格段に向上することを知りました。

 そこで、さっそくMCCをインストールして、試してみることにしました。インストールのしかたは、こちらのサイトなどを参照してください。

 手元にPIC16F84がたくさんあったので、これで試そうと思ったのですが、これらのレガシーPICにはMCCは対応していないようです。F1シリーズに対応しているようです。そこで、最もシンプルなPICであるPIC12F1822(8pin PIC)を使ってみます。定番のLチカをやってみます。回路図です。


 まず、PIC12F1822_Blinkという名前でprojectを作成。
 次に、各種設定を行うために、MPLAB IDEのメニューからTools→Enbendded→MPLAB Code Configuratorを開きます。次のような画面になります。


 右上にPINの配置図、左側にmoduleなどの選択、真ん中に各設定項目が表示されます。

 まず、System Moduleで、クロックやレジスタの設定を行います。
 内部クロックで16MHzとします。
 LEDは、RA1に接続することにしますので、画面の一番下に表示されているPin ManagerでPortAの1,outputのカギマークをクリックします。



次に、Registersタグをクリックすると各レジスタの設定ができます。
 一応上の図のように設定しました。
 Pin Modeを詳しく設定します。MCC画面の左上のProject ResourcesをPin Moduleに切り替え、RA1のoutoutだけを指定します。



 今回の設定は、こんなもので大丈夫でしょう。左上のTree ViewのGenerateをクリックすると各種設定ファイルが自動的に生成されます。
 MCCを終了して(MCCのアイコンをクリックすると終了します)設定ファイルの中身を見てみます。

mcc.cです。OSC関係とWDT設定が生成されています。


device_config.cです。設定したとおりにconfigが生成されています。


pin manager.cです。pin設定のコードが生成されています。

この時点で、main.cも次のような形で自動的に生成されています。
-------------------------------------------------------------
#include "mcc_generated_files/mcc.h"

void main(void)
{
// initialize the device
SYSTEM_Initialize();

while (1)
{

}
}
--------------------------------------------------------------------
プログラムは、
while(1){
}
の間に記入します。
RA1に接続したLEDを500msごとに点滅しますので、次のようにしました。
PIC F18シリーズには、LATレジスタがありますので、RAレジスタではなく、LATAレジスタを操作しています。


 ブレッドボードです。電源は電池2本で供給しています。

 プログラム通りLEDが点滅しました。

 初めてMCCを使いましたので、記事の中に誤りがあるかもしれません。
 その場合、コメントなどで教えていただきたいと思います。