私は、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を使いましたので、記事の中に誤りがあるかもしれません。
その場合、コメントなどで教えていただきたいと思います。