【開発が楽になる!】MPLAB-X-IDE付属のMCCの使い方

【開発が楽になる!】MPLAB X IDE付属のMCCの使い方

今回は、PICのレジスタの設定などが圧倒的に楽になるとの噂のMCC(MPLAB Code Configurator)の基本的な使い方と、実際にLチカするまでを紹介します。

MPLAB X IDEのDL

  1. MICROCHIPホームページからMPLAB IDE Xの最新バージョンをDLする
  2. ファイルを開き、インストールする。インストールはほぼNextを押していればいいので、特に注意することはありません。

XC8 コンパイラのDL

コンパイラはIDEと同じページでダウンロードできます。下の方に行き、自分の使いたいPIC(私の場合8bitなのでXC8)を選び、ダウンロードします。

最新版は下の方にあるので注意しましょう。現時点では最新版がv2.00でした。
ダウンロード後はクリックしてインストールしましょう。

MPLAB Code Configurator(MCC)のインストール

MCCはMPLAB X IDEのプラグインとして提供されています。以下、そのインストール方法を説明します。

  1. MPLAB X IDEを開く
  2. Toolsの中のPluginsから、MPLAB Code Configuratorを探す
  3. チェックを入れてインストール
  4. I accept the…にチェックを入れてInstallをクリック
  5. Restart nowでMPLABを再起動

これでMCCがインストールできました!では実際に使っていきましょう。
当ブログでおなじみのPIC16F1938君に出てきてもらい、初心に帰ってLチカをしてもらおうと思います。

MCCでLチカさせる

新規プロジェクトの作成

  1. 黄色いアイコンをクリックし、New Projectウィンドウを出す
  2. そのままStand alone projectでNextを押し、Familyを8bit MCUにしてPIC16F1938を探す。探せたらNext。
  3. 次もNext。
  4. Select toolはご自分の使用しているツールを選択。私の場合はPICkit3
  5. CコンパイラはXC8を選択。
  6. Project Nameを適当に決めて終了!

私はMCCLtikaという安易な名前を付けました。

MCCを開く

  1. Tools>EmbeddedからMCCを選択して開く
  2. MCC configurationファイルを保存しろと言われるので、そのまま保存を押す
  3. MCCの画面が開く

これがMCCの画面です。沢山ありますが、今回使うのは少しだけです。まず便利なウィンドウについて解説します。

MCCの画面説明

  • Pin Manager

    PICの各ポートと、その状態を設定できる画面。例えばPortAの0をOUTPUTにしたい場合は、クリックして以下のようにすればよい。

  • Notifications

    設定した値がおかしくないかどうかを通知してくれる画面。更新されるので、よく見ておくと便利。

  • Tree View

    MCCは各機能をModuleとして提供している。デフォルトではInterrupt, Pin, Systemの3つ。ADC(ADコンバーター)などもModuleとして追加できる。

  • Device Resources
    このPICで使える機能・モジュールを表示するウィンドウ。例えば上図のmTouchの+マークをダブルクリックすれば、mTouchの機能がツリービューに追加されて、編集できるようになる。

  • Available Resources

    これもmoduleの一覧。+をクリックするとその機能が追加され、編集できる。

  • Pin module

    Easy Setupでは、Pin Managerで設定したピンの情報が確認でき、編集できる。

    Registersではピンに関連するすべてのレジスタがクリック操作で変更できるようになる。これはかなり便利で、データシートの情報を見ながらそのままその機能をオンにできる。スマホのWi-Fiをつけるような感覚。

  • System module

    クロックやウォッチドッグタイマ等のPIC全体にかかわる設定ができる。Internal Clockの値がそのままクリックで選べるのがすごく便利

    同じようにRegisterタブではレジスタをいじれます。

Lチカプログラムを書いてみる

まずMCCで基本的なコードを出力します。
今回のPICの要件は以下の通りにします。

  • 8MHz駆動
  • ウォッチドッグタイマなし
  • Port A の0番目のピン(2番ピン)をアウトプットにしてLEDを駆動

この設定は、もうすでに今までの説明画像の中にあります。System ModuleのInternal Clockから8MHzを選択。下のWDTはWDT disabledに。そしてPin ManagerでPort A 0番ピンをアウトプットにしました

これで、Generateを押します。

そしてProjectsタブに戻ってみてみると…

main.cと、いくつかのライブラリがMCCで生成されました!
main.cを見てみましょう。

/**
  Generated Main Source File

  Company:
    Microchip Technology Inc.

  File Name:
    main.c

  Summary:
    This is the main file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs

  Description:
    This header file provides implementations for driver APIs for all modules selected in the GUI.
    Generation Information :
        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.77
        Device            :  PIC16F1938
        Driver Version    :  2.00
*/

/*
    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
    
    Subject to your compliance with these terms, you may use Microchip software and any 
    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
    license terms applicable to your use of third party software (including open source software) that 
    may accompany Microchip software.
    
    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
    FOR A PARTICULAR PURPOSE.
    
    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
    SOFTWARE.
*/

#include "mcc_generated_files/mcc.h"

/*
                         Main application
 */
void main(void)
{
    // initialize the device
    SYSTEM_Initialize();

    // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
    // Use the following macros to:

    // Enable the Global Interrupts
    //INTERRUPT_GlobalInterruptEnable();

    // Enable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();

    // Disable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptDisable();

    while (1)
    {
        // Add your application code
    }
}
/**
 End of File
*/

どうやら、MCC Generated Filesのmcc.hというヘッダファイルにSYSTEM_Initialize()という便利関数が入っているようです。これがすべての設定をしてくれるので、我々はWhile文の中だけ書けばいいようになっています。便利!

Lチカプログラムはこんな感じ。

#include "mcc_generated_files/mcc.h"

void main(void)
{
    SYSTEM_Initialize();

    while (1)
    {
        RA0 = 1;
        __delay_ms(500);
        RA0 = 0;
        __delay_ms(500);
    }
}

PICのプログラムとは思えない程単純になりました。

いつも通り書き込んだ後の動画。

mcc.hの中身を見てみる

ヘッダファイルなので、中には関数の宣言があります。

void SYSTEM_Initialize(void);

/**
 * @Param
    none
 * @Returns
    none
 * @Description
    Initializes the oscillator to the default states configured in the
 *                  MCC GUI
 * @Example
    OSCILLATOR_Initialize(void);
 */
void OSCILLATOR_Initialize(void);
/**
 * @Param
    none
 * @Returns
    none
 * @Description
    Initializes the WDT module to the default states configured in the
 *                  MCC GUI
 * @Example
    WDT_Initialize(void);
 */
void WDT_Initialize(void);

この3つの関数はdevice_config.cとmcc.cとpin_manager.cから取ってきています。例としてPIN_MANAGER_Initializeを見てみましょう。

#include "pin_manager.h"





void PIN_MANAGER_Initialize(void)
{
    /**
    LATx registers
    */
    LATE = 0x00;
    LATA = 0x00;
    LATB = 0x00;
    LATC = 0x00;

    /**
    TRISx registers
    */
    TRISE = 0x08;
    TRISA = 0xFE;
    TRISB = 0xFF;
    TRISC = 0xFF;

    /**
    ANSELx registers
    */
    ANSELB = 0x3F;
    ANSELA = 0x3E;

    /**
    WPUx registers
    */
    WPUE = 0x00;
    WPUB = 0x00;
    OPTION_REGbits.nWPUEN = 1;


    /**
    APFCONx registers
    */
    APFCON = 0x00;




   
    
}
  
void PIN_MANAGER_IOC(void)
{   
}

/**
 End of File
*/

TRISA等のピンを設定するレジスタが自動で書かれています。これで私たちは自分の書くコードに集中できますね!

クラウド版MPLAB

今まで知りませんでしたが、クラウド版のMPLABがあるようです。
そこではインストールも何も不要で、ただブラウザを開けばいいようです。
またデフォルトでMCCが利用できるため、爆速で開発できます。

次はこのクラウド版に挑戦して、使い方をレビューしようと思うのでお楽しみに。

1件のコメント

返信を残す

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